S2-045 分析

    xiaoxiao2021-03-25  169

    首先看了 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

    转载请注明原文地址: https://ju.6miu.com/read-1142.html

    最新回复(0)