本人WEB渗透不行,最近在SARS大牛的指导下正在飞速成长。记录下成长的点滴。
在Apache Struts 2.3.15.1版本(北京时间:2013-07-15)发布的时候,公开了一个新的远程命令执行漏洞,允许攻击者在访问使用Struts2的应用时远程执行OGNL表达式,该漏洞影响2.3.15.1之前的所有Struts2版本。
影响版本:
Apache Struts2 2.3.15.1 以前版本(不含)
漏洞描述:
CVE ID:
CVE-2013-2251
Struts 2 的 DefaultActionManager 支持一种简单的导航机制,这种机制接收客户端提交(GET和POST,不包括COOKIE)的参数来进行页面的导航,参数格式为:关键字+冒号(半角)+OGNL表达式,关键字有action、redirect、redirectAction。设计此机制的目的是为了向表单中的按钮添加导航信息。
在 2.3.15.1 以前的版本中,服务器端并未对这种导航机制传递给服务端的OGNL表达式进行安全过滤。因此,攻击者就可以构造一个恶意的 OGNL 表达式,从而能够在服务器端执行任意代码。
各关键字的含义如下:
action - 表示把表达式的执行结果作为Action来处理
redirect - 表示把表达式的结果作为重定向的URL来强制客户端跳转(302跳转)
redirectAction - 表示把表达式的结果后追加一个.action后作为重定向的URL来强制客户端跳转(302跳转)
测试示例
:
1. 漏洞检测方法:
在URL中追加如图所示代码,如果存在问题,会返回对应的HTTP状态码。示例:
http://www.example.com/home.action?redirect:%25{3*4
} 返回302,在响应头的Location头域中指定跳转目标URL为12
http://www.example.com/home.action?redirectAction:%25{3*4
} 返回302,在响应头的Location头域中指定跳转目标URL为12.action
2. 利用漏洞执行命令方法:
这里调用系统命令whoami来查询服务器的当前用户名,由于采用的是redirect关键字,页面将会重定向到由该关键字对应的OGNL表达式执行结果所指向的页面,在这个示例中,跳转的目标页面的URL就是当前用户名。
最后附上利用工具,孩子们去乌云刷分玩吧 。
本文转自文东会博客51CTO博客,原文链接http://blog.51cto.com/hackerwang/1252692如需转载请自行联系原作者
谢文东666