复现的是墨者的Apache Struts2的靶场,用的工具检测~~

原理

问题主要出在对于特殊URL处理中,redirect与redirectAction后面跟上OGNL表达式会被服务器执行。

漏洞原因

action的值redirect和redirectAction没有正确过滤,导致可以执行任意代码,如系统命令、上传、下载文件等。

Struts2的DefaultActionMapper支持一种方法,可以使用”action:”, “redirect:” , “redirectAction:”对输入信息进行处理,从而改变前缀参数,这样操作的目的是方便表单中的操作。在2.3.15.1版本以前的struts2中,没有对”action:”, “redirect:” , “redirectAction:”等进行处理,导致ongl表达式可以被执行。

影响版本

Struts 2.0.0 – 2.3.15

1.在url后面添加index.action,回显正常,可能存在漏洞。

2.利用Struts2漏洞检测工具,输入url(记得一定要加index.action)

可以看到漏洞存在:

3.执行命令ls,看到有一个key.txt

4.使用命令cat key.txt获取key.txt的内容,得到flag