S2-045 分析

来源:互联网 发布:tensorflow 关闭会话 编辑:程序博客网 时间:2024/05/29 07:14

首先看了 http://bobao.360.cn/learning/detail/3574.html  这篇文章,文章把整体的思路都分析得很清楚了,我补充一下自己的调试细节。

在处理 multipart 的时候发生了异常,进入 org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 中的 parse方法的异常处理分支


然后就进入了 org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.buildErrorMessage(Throwable, Object[]),从而调用了LocalizedTextUtil.findText。此时我们看 payload 已经被传入 e 变量中。

 

处理错误信息最终调用到了com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(String,Locale, ValueStack, Object[], String)

继续跟进,发现其最终使用com.opensymphony.xwork2.util.OgnlTextParser.evaluate(char[],String, ParsedValueEvaluator, int)来处理错误信息,导致了ognl命令执行。




备注:

这个漏洞触发可以不需要有上传功能,但是一定要有commons-fileupload-x.x.x.jar包


参考资料:

https://cwiki.apache.org/confluence/display/WW/S2-045

http://bobao.360.cn/learning/detail/3574.html

1 0