前言
复现过程参考:Struts2-059 RCE (CVE-2019-0230)复现
首先我们确定引发漏洞的具体位置,根据apache官网的描述,未经过滤的OGNL表达式被强制二次解析,从而导致远程命令执行,比如
<s:url var="url" namespace="/employee" action="list"/><s:a id="%{skillName}" href="%{url}">List available Employees</s:a>
如果攻击者能够发送请求控制skillName
的值,那么当<s>
标签被渲染的时候,skillName
中如果包含了未经过滤的OGNL
表达式,则可能会导致命令执行
参考链接:
- https://blog.csdn.net/weixin_46236101/article/details/109080913
- https://cwiki.apache.org/confluence/display/WW/S2-059
- https://securitylab.github.com/research/apache-struts-double-evaluation
漏洞分析
还是用复现文章中的漏洞环境,既然漏洞出在标签渲染的部分,那么就一定需要获取标签属性的值,因此我们在getPayload
方法处下断点
然后开始debug,burp发包触发断点