S2-008 遠程代碼執行漏洞 (CVE-2012-0391)
Path struts2/s2-008
影響版本: 2.1.0 - 2.3.1
漏洞詳情: http://struts.apache.org/docs/s2-008.html
測試環境搭建
docker-compose build
docker-compose up -d
原理
參考 http://rickgray.me/2016/05/06/review-struts2-remote-command-execution-vulnerabilities.html
S2-008 涉及多個漏洞,Cookie 攔截器錯誤配置可造成 OGNL 表達式執行,但是由于大多 Web 容器(如 Tomcat)對 Cookie 名稱都有字符限制,一些關鍵字符無法使用使得這個點顯得比較雞肋。另一個比較雞肋的點就是在 struts2 應用開啟 devMode 模式后會有多個調試接口能夠直接查看對象信息或直接執行命令,正如 kxlzx 所提這種情況在生產環境中幾乎不可能存在,因此就變得很雞肋的,但我認為也不是絕對的,萬一被黑了專門丟了一個開啟了 debug 模式的應用到服務器上作為后門也是有可能的。
例如在 devMode 模式下直接添加參數?debug=command&expression=<OGNL EXP>,會直接執行后面的 OGNL 表達式,因此可以直接執行命令(注意轉義):
http://localhost:8080/S2-008/devmode.action?debug=command&expression=(%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue
Vulhub 文檔