Learning Man's Blog

s2-032 漏洞分析

字数统计: 297阅读时长: 1 min
2018/11/02

影响版本

Struts 2.3.20 - Struts Struts 2.3.28(2.3.20.3和2.3.24.3除外)

吐槽:这个漏洞其实和S2-016差不多。

0x01 土亢

  1. v2.3.20因该是误报,可能开发时候没注意写死了DefaultActionMapper.allowDynamicMethodCalls == false,恰好避免了漏洞 XD

  2. 需要开启动态代码调试

     <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

0x02 分析

跟进分析

  1. 在前期准备阶段进入PrepareOperations解析mapping

  2. 进入后进行特殊参数解析this.handleSpecialParameters(),RestActionMapper继承自DefaultActionMapper,实际调用后者的此方法

  3. 这里循环尝试分析后面的参数,使用前缀树进行解析

  4. 我也不知道该怎么解释这种代码结构,java不好,反正最后这里先判断是否前追为method,是的话判断开启动态代码调试,开启就添加method,最后到DefaultActionInvocation#invokeActionOnly内执行。

流程梳理

太懒,放弃

0x03 利用条件

开启动态调试

0x04 利用方式

method后跟payload即可

例:http://localhost:8088/orders?method:

参考资料

  1. https://pino-hd.github.io/2018/06/19/S2-032%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
CATALOG
  1. 1. 0x01 土亢
  2. 2. 0x02 分析
    1. 2.1. 跟进分析
    2. 2.2. 流程梳理
  3. 3. 0x03 利用条件
  4. 4. 0x04 利用方式
  5. 5. 参考资料