某框架路由渗透

news2024/9/28 5:35:10

前言

某天在互联网平台上看待DWR路由的文章,然后去搜索了一下相关的信息,发现该DWR路由技术挺久远的,因此就简单的学习了一下该路由,然后发现该DWR路由也可能存在漏洞点,因此找了某站进行测试看看是否有无啥收获,结果不负众望,还是有那么一点收获。真就那么一点[哭]。话不多说,进入正题吧。

DWR介绍

首先讲解渗透之前先说一下什么是DWR路由吧,该怎么进行利用,或者说我们执行的数据格式有无区别啥的,那么我既然说了这事儿,那肯定是该路由区别于其它路由或者说和其它的请求方式不一样,因此我们先说一下DWR路由。

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。

主要具体实现就是要使用dwr需要进行简单的配置,主要是web.xml和dwr.xml这两个配置文件。首先是web.xml,最简单的只需要配置dwr对应的servlet映射即可:

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

其中dwr存在debug属性,当设置为true时可以启用debug模式,可访问dwr的测试页面:

<init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
</init-param>

当我们添加上述配置项访问/dwr/index.html路径则可能会导致类测试地址泄漏的问题


接口地址的获取可能会暴露用户的敏感信息,还可导致文件上传,SQL注入.....

那么我们主要还是看如下数据包,请求路径为dwrtest.findByUserId.dwr,其实该路径可任意填写,主要还是c0-scriptNamec0-methodName以及c0-param0字段,分别对应脚本名和方法名以及方法中对应的参数值及参数类型是否为number或者string,后面讲解案例大家应该能更深一步理解

POST /DwrProject/dwr/call/plaincall/dwrtest.findByUserId.dwr HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: text/plain
Content-Length: 227
Cookie: JSESSIONID=F0DE72C197AFEF273E84AC3686F4F8C7; DWRSESSIONID=7viforTWTj$BVBJSxv99$V*hVgn
Connection: close

callCount=1
windowName=
c0-scriptName=dwrtest
c0-methodName=findByUserId
c0-id=0
c0-param0=number:1
batchId=1
instanceId=0
page=%2FDwrProject%2Fdwr%2Ftest%2Fdwrtest
scriptSessionId=7viforTWTj$BVBJSxv99$V*hVgn/*YsBVgn-XOm0BUHfr

测试流程

首先我们需要查找关于使用DWR路由的网站,那么我们这里可以使用资产测绘平台来批量搜索,或者找一些比较老的网站快捷键F12查看前端源代码是否存在以dwr结尾的路由文件,如果有,那么这就是了,如下图所示:


当我们找到这种网站的时候我们根据上述DWR路由介绍所说的可以发现个别路由存在参数的,因此这就是我们的首要目标,当然也不是说其它的路由无参数量就没有其它用处了,据互联网上某大佬的文章可以发现访问无参数路由直接泄露敏感信息,发现smtp配置信息


我们发现那么多的接口其实这里并没有啥技巧,就是一个一个进行访问。根据前端泄露的路径一共存在如下几个,且内容都不一样


但是通过上述访问会发现路由无回显或者直接报错提示,这种情况推测可能有两种情况,一种是路由授权禁止访间,一种是参数不正确,或者参数值类型不正确,本人更倾向于第二种情况,但是奈何本人实力有限,根本无法爆出参数类型,其实根据路由所示也可发现许多接口参数值太多,fuzz其实挺难搞得。


到这里其实基本宣布告别逻辑漏洞,比如用户密码修改,用户密码重置,用户凭证获取啥的。。但是功夫不负有心人啊,根据路由命名格式推测接口漏洞产生的概率大小,发现有多个路由接口泄露数据库表列信息以及数据库语句信息

这里需要注意请求路径为任意即可,这里没有限制你的请求路径是否为指定名称

POST /dwr/xxx/dwrtest.findByUserId.dwr HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: text/plain
Content-Length: 352
Cookie: JSESSIONID=F0DE72C197AFEF273E84AC3686F4F8C7; DWRSESSIONID=7viforTWTj$BVBJSxv99$V*hVgn
Connection: close

callCount=1
windowName=
c0-scriptName=GlobalController
c0-methodName=getUnApprovedUnitItemResourceListById
c0-param0=string:88888
c0-param1=string:77777
c0-param2=string:666666
c0-param3=string:1999999
c0-id=0
batchId=1
instanceId=0
page=%2FDwrProject%2Fdwr%2Ftest%2Fdwrtest
scriptSessionId=7viforTWTj$BVBJSxv99$V*hVgn/*YsBVgn-XOm0BUHfr

POST /dwr/xxx/dwrtest.findByUserId.dwr HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: text/plain
Content-Length: 290
Cookie: JSESSIONID=F0DE72C197AFEF273E84AC3686F4F8C7; DWRSESSIONID=7viforTWTj$BVBJSxv99$V*hVgn
Connection: close

callCount=1
windowName=
c0-scriptName=GlobalController
c0-methodName=getApprovedUnitItemResourceCountById
c0-param0=resource_module_id:1122222
c0-id=0
batchId=1
instanceId=0
page=%2FDwrProject%2Fdwr%2Ftest%2Fdwrtest
scriptSessionId=7viforTWTj$BVBJSxv99$V*hVgn/*YsBVgn-XOm0BUHfr

总结

最后也是到这里就差不多结束了,因为该网站属于咱们国内知名企业且存在SRC平台,其实参数注入的时候发现我们输入的参数其实被代到了数据库中进行查询,只是查询错误回显整个SQL语句,我猜测是可以进行构造SQL语句从而进行SQL注入的但是存在WAF,所以只要有敏感参数就拦截了,最后也是当个信息泄露交了给了20元子,只有安慰自己还有点收获

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习笔记 韩顺平 零基础30天学会Java(2024.8.15)

P512 ArrayList底层源码2 P513 Vector注意事项 最近有点懈怠&#xff0c;要去新的环境上学了&#xff0c;有点焦虑&#xff0c;调整状态ing&#xff0c;准备开始研一&#xff0c;希望能继续本科的荣耀&#xff01;&#xff01; PS&#xff1a;本科应该算是荣耀的吧哈哈哈哈哈

高性价比运动耳机都有哪些?五大高性价比运动耳机推荐

对于很多人来说&#xff0c;大家可能会选择听音乐来放松身心&#xff0c;打发掉无聊的时间。开放式耳机对比入耳式耳机的优势就是既能听到耳机内的声音又能感知环境音&#xff0c;很适合在户外以及办公时使用。像我每天坐地铁上下班的时候都会习惯戴耳机&#xff0c;但以前戴入…

微信视频号评论采集秘籍:三招让你迅速收集用户反馈

在短视频盛行的今天&#xff0c;微信视频号以其庞大的用户基数成为品牌与用户互动的重要阵地。但如何从海量评论中迅速收集有价值的用户反馈&#xff0c;成为众多内容创作者与营销人员的难题。本文将揭秘三招实用技巧&#xff0c;助你高效采集微信视频号评论&#xff0c;精准把…

使用HTML和cgi控制I.MX6ULL开发板上的LED

一.HTML文件 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>LED_device</title> </head><body><form action"/cgi-bin/led.cgi" method"post"><p>LED设备号</…

夫妻双方均年过四十长期分居,离婚不仅因为不同房!李秘书专业写作:这是一篇涉离婚纠纷的民事起诉状

夫妻双方均年过四十长期分居&#xff0c;离婚不仅因为不同房&#xff01; 李秘书专业写作&#xff1a;这是一篇涉离婚纠纷的民事起诉状 &#xff08;精品范文&#xff09; 离 婚 起 诉 状 原告&#xff1a;曹某琴&#xff0c;女&#xff0c;现年40岁&#xff0c;汉族&#x…

Web前端 - HTML、CSS

w3school 在线教程 Vscode工具&#xff1a; Live Preview: 右键show Preview 实时预览效果 Live Preview: HTML AI助手 CSS (Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档&#xff08;如 HTML 文档或 XML 应用&#xff0…

PHP校园跑腿跳蚤市场助手系统小程序源码

&#x1f3c3;‍♀️&#x1f6cd;️【校园新风尚】跑腿跳蚤市场助手系统&#xff0c;便捷交易新体验&#xff01;&#x1f389; &#x1f680;一键下单&#xff0c;跑腿无忧 学习太忙没时间取快递&#xff1f;食堂太远懒得动&#xff1f;校园跑腿助手系统来帮你&#xff01;…

分子筛自动填充高原制氧机的特点

在高原地区&#xff0c;氧气稀薄&#xff0c;对人体的正常生理活动带来了诸多挑战。而分子筛自动填充高原制氧机的出现&#xff0c;为解决高原缺氧问题提供了有效的解决方案。以下是这种制氧机的一些特点&#xff1a; 高效制氧能力&#xff1a; 分子筛自动填充高原制氧机采用先…

PS DRAM接口的函数式编程模型(二)

DRAM Input Impedance (ODT) Calibration&#xff08;DRAM输入阻抗校准&#xff09; ODT技术通过在DRAM内部集成终结电阻&#xff0c;实现对信号线的终端匹配。当DRAM作为接收器时&#xff0c;ODT电阻能够吸收信号线上的反射波&#xff0c;防止信号反射对后续信号造成影响&…

职业院校云计算实训室建设方案全景剖析

在信息化社会的今天&#xff0c;云计算作为一项关键技术&#xff0c;正在迅速改变着教育和培训的方式。本文旨在探讨如何通过"职业院校云计算实训室建设方案"&#xff0c;为学生提供一个现代化、高效的学习和研究环境&#xff0c;以适应云计算技术的发展和市场需求。…

cpp depends源码有向图分析工具

使用 cpp-dependencies.exe --dir ./example --output image.dot 输出 参考 GitHub - tomtom-international/cpp-dependencies: Tool to check C #include dependencies (dependency graphs created in .dot format) 创作不易&#xff0c;小小的支持一下吧&#xff01;

06-图3 六度空间(C)

这个很好想&#xff0c;尤其是经过图的连通集&#xff0c;所以这一次我才有之前写的代码为主体以邻接表的方法构建了方法一&#xff0c;至于运用 邻接矩阵&#xff0c;可以查看我之前的图的连通集这一方案&#xff0c;稍微改装&#xff0c;便解决这一问题了。 “六度空间”理论…

【数据结构】PTA 带头结点的链式表操作集 C语言

本题要求实现带头结点的链式表操作集。 函数接口定义&#xff1a; List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下&#xff1a; typedef struc…

Prism框架

使用 NuGet包下载 -- > Prism.Unity 框架中的数据与行为 BindableBase 在ViewModel中需要继承此类 通知属性的三种方式&#xff1a; public class MainViewModel : BindableBase {// 基本的通知属性private string _value;public string Value{get { return _value; }s…

SOMEIP_ETS_049: echoUTF8DYNAMIC_length_too_long_for_String

测试目的&#xff1a; 验证设备&#xff08;DUT&#xff09;是否能够正确处理一个长度大于实际字符串长度的echoUTF8DYNAMIC字符串&#xff0c;并返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个长度超出实际字符串长度的UTF8DYNAMIC字符串的SOME/IP消息时&#xff…

Vue的生命周期理解,简单易理解

什么是Vue的生命周期 简单来说&#xff0c;Vue的生命周期就是vue实例从创建到销毁的一个过程&#xff0c;即从创建–>初始化数据–>编译模板–>挂载Dom -->渲染、更新 -->渲染–>销毁 的一系列过程。 Vue的生命周期有哪些阶段 Vue的生命周期&#xff0c;主…

使用 preloadRouteComponents 提升 Nuxt 应用的性能

title: 使用 preloadRouteComponents 提升 Nuxt 应用的性能 date: 2024/8/19 updated: 2024/8/19 author: cmdragon excerpt: preloadRouteComponents 是提升 Nuxt 应用性能的一个简单而有效的工具。通过在适当的时候预加载路由组件&#xff0c;你可以为用户提供更快速、更流…

LangGPT结构化提示词

LangGPT是Language For GPT-like LLMs的简称&#xff0c;中文名为结构化提示词&#xff0c;LangGPT是一个帮助你编写高质量提示词的工具&#xff0c;理论基础是我们提出的一套模块化、标准化的提斯提编写方法论——结构化提示词。我们希望揭开提示工程的神秘面纱&#xff0c;为…

传统园区转型升级智慧园区的路径探讨

随着科技的快速发展和经济结构的转型升级&#xff0c;传统园区面临着转型的迫切需求。智慧园区以其高效、绿色、智能的特点&#xff0c;成为了未来园区发展的方向。本文将从几个关键方面探讨传统园区如何实现向智慧园区的转型升级。 一、智慧园区的概念与特点 智慧园区是基于…

懂管理的网安人才,为什么越来越受企业青睐?

说实话&#xff0c;要是几年前有人跟我说网安人才还得懂管理&#xff0c;我可能会嗤之以鼻。网安不就是搞技术的吗&#xff1f;整天跟漏洞、防火墙、IDS打交道&#xff0c;为啥又扯到管理了&#xff1f; 但是仔细一想&#xff0c;好像时代确实变了。 由于现在的就业形势紧迫&a…