某框架路由渗透
字数 1175 2025-08-22 22:47:30
DWR路由渗透测试技术详解
1. DWR路由技术概述
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,主要帮助开发人员开发包含AJAX技术的网站。
1.1 核心配置文件
DWR框架主要依赖两个配置文件:
- web.xml - 配置DWR的servlet映射
- dwr.xml - 配置远程调用类和方法
1.2 典型web.xml配置示例
<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>
1.3 Debug模式配置
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
当debug模式启用时,访问/dwr/index.html路径可能导致类测试地址泄漏。
2. DWR路由安全风险
2.1 主要安全风险
- 敏感信息泄露(类测试地址、接口信息)
- 文件上传漏洞
- SQL注入漏洞
- 未授权访问
2.2 典型漏洞请求示例
POST /DwrProject/dwr/call/plaincall/dwrtest.findByUserId.dwr HTTP/1.1
Host: ip:port
Content-Type: text/plain
Content-Length: 227
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
关键参数说明:
c0-scriptName:脚本名(对应Java类名)c0-methodName:方法名c0-param0:方法参数(可指定类型,如number或string)
3. DWR路由渗透测试流程
3.1 目标识别
- 资产测绘:使用FOFA、Shodan等搜索DWR应用
- 搜索特征:
/dwr/路径
- 搜索特征:
- 前端代码分析:检查前端JS中是否包含
dwr结尾的路由文件
3.2 接口枚举
- 访问
/dwr/index.html(需debug模式开启) - 检查前端JS中暴露的DWR接口路径
3.3 接口测试
- 无参数接口测试:
- 直接访问可能泄露敏感信息(如SMTP配置)
- 带参数接口测试:
- 尝试构造各种参数类型(number/string)
- 测试SQL注入、命令注入等漏洞
3.4 常见漏洞类型
- 信息泄露:
- 数据库表结构
- SQL查询语句
- SQL注入:
- 参数未正确过滤导致SQL语句拼接
- 未授权访问:
- 接口缺乏权限验证
4. 实战案例
4.1 数据库信息泄露案例
POST /dwr/xxx/dwrtest.findByUserId.dwr HTTP/1.1
Host: target.com
Content-Type: text/plain
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
4.2 SQL注入潜在风险案例
POST /dwr/xxx/dwrtest.findByUserId.dwr HTTP/1.1
Host: target.com
Content-Type: text/plain
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
5. 防御建议
- 生产环境禁用debug模式
- 设置
<param-value>false</param-value>
- 设置
- 严格权限控制
- 对DWR接口实施身份验证
- 输入验证
- 对所有参数进行严格过滤
- 最小化暴露
- 仅暴露必要的类和方法
- 安全配置
- 配置
crossDomainSessionSecurity为true防止CSRF - 配置
allowGetButMakeForgeryEasier为false禁用GET请求
- 配置
6. 总结
DWR路由渗透测试的关键点:
- 识别DWR应用(通过路径特征或前端代码)
- 枚举可用接口(通过debug页面或前端分析)
- 测试接口参数(注意参数类型指定)
- 重点关注信息泄露和SQL注入漏洞
- 注意WAF绕过技术(如参数类型混淆)
通过系统化的测试方法,可以在DWR应用中发掘各类安全漏洞,特别是那些遗留的老旧系统往往存在较高的风险。