Apache Struts2 远程命令执行漏洞-阿里云开发者社区

开发者社区> 安全> 正文
登录阅读全文

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?redirect:%25{3*4} 返回302,在响应头的Location头域中指定跳转目标URL为12
http://www.example.com/home.action?redirectAction:%25{3*4} 返回302,在响应头的Location头域中指定跳转目标URL为12.action
161157692.jpg
spacer.gif
spacer.gif
2. 利用漏洞执行命令方法:
这里调用系统命令whoami来查询服务器的当前用户名,由于采用的是redirect关键字,页面将会重定向到由该关键字对应的OGNL表达式执行结果所指向的页面,在这个示例中,跳转的目标页面的URL就是当前用户名。
161224722.jpg
最后附上利用工具,孩子们去乌云刷分玩吧 。
spacer.gif
本文转自文东会博客51CTO博客,原文链接http://blog.51cto.com/hackerwang/1252692如需转载请自行联系原作者

谢文东666

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: