洞态IAST自动检测S2-048

admin 2021年10月3日07:43:08评论52 views字数 2267阅读7分33秒阅读模式
洞态IAST自动检测S2-048

01

复现环境搭建


访问火线-靶场并搜索S2-048,然后启动registry.cn-beijing.aliyuncs.com/huoxian/s_struts2_s2-059:latest


洞态IAST自动检测S2-048


 环境启动后,默认页面。

洞态IAST自动检测S2-048

02

漏洞复现


POST /showcase/integration/saveGangster.action HTTP/1.1Host: localhost:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedContent-Length: 65Origin: http://localhost:8080Connection: closeReferer: http://localhost:8080/showcase/integration/editGangster.action;jsessionid=97012E36AD9CCCE9EF6767CAD815A25CCookie: JSESSIONID=97012E36AD9CCCE9EF6767CAD815A25CUpgrade-Insecure-Requests: 1
name=%25{7*7}&age=13&__checkbox_bustedBefore=true&description=qwe


洞态IAST自动检测S2-048

03

洞态IAST检测 


洞态IAST自动检测S2-048

04

漏洞原理分析及洞态IAST检测 


S2-048原理分析的文章网上太多了,笔者也写不出更好的了,大家可以看一下n1nty大佬的分析:https://www.anquanke.com/post/id/86398。


这里主要说一下IAST的检测过程,从污点流图来看,和之前的S2漏洞并无二致。


洞态IAST自动检测S2-048


按照n1nty大佬的说法,org.apache.struts2.s1.Struts1Action 将St1时代的action封装为St2的action,然后传进来,接着使用,进而实现兼容。


在 Struts1Action 的 execute 方法中,会调用对应的 Struts1 Action 的 execute 方法。在调用完后,会检查 request 中是否设置了 ActionMessage,如果是,则将会对 action messages 进行处理并回显给客户端。处理时使用了 getText 方法,这里就是漏洞的触发点。所以漏洞的触发条件是:在 struts1 action 中,将来自客户端的参数值设置到了 action message 中。


Action messages 会通过 getText 方法最终进入 com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(String, Locale, ValueStack, Object[], String) 方法。此方法会将 action message 传入com.opensymphony.xwork2.util.TextParseUtil.translateVariables(String, ValueStack)。


com.opensymphony.xwork2.util.TextParseUtil.translateVariables(String, ValueStack) 方法主要用于扩展字符串中由 ${} 或 %{} 包裹的 OGNL 表达式,这里也就是 OGNL 的入口,随后 action message 将进入 OGNL 的处理流程,漏洞被触发。


 看一下污点调用的图

洞态IAST自动检测S2-048
洞态IAST自动检测S2-048


其实就是拼接了ognl到action message里,然后com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage--->com.opensymphony.xwork2.util.TextParseUtil.translateVariables(String, ValueStack)--->OGNL FLOW

05

总结


这个插件兼容了St1时代的action,但是在组action message的时候,如果构造不规范的话,就容易出问题。流程的话,其实还是和之前的差不多的。


账号申请

•SaaS版本地址:https://iast.huoxian.cn

•SaaS版本账号申请

洞态IAST自动检测S2-048

洞态IAST合作伙伴计划之整体开源联合开发,申请方式请扫描下方二维码

洞态IAST自动检测S2-048

如需加入技术讨论群,扫描二维码添加微信并备注"洞态IAST-加群",工作人员将拉您进群

洞态IAST自动检测S2-048

洞态IAST自动检测S2-048


【周度激励】


火线Zone周度激励(5.24 ~ 5.30)


【相关精选文章】


一次成功的云存储接管实战

Soar 可视化扫描器内测申请啦


火线Zone是[火线安全平台]运营的封闭式社区,社区成员必须在[火线安全平台]提交有效漏洞才能申请免费加入,符合要求的白帽子可联系[火线小助手]加入。


我们不希望出现劣币驱逐良币的结果,我们不希望一个技术社区变成一个水区!


欢迎具备分享精神的白帽子加入火线Zone,共建一个有技术氛围的优质社区!

洞态IAST自动检测S2-048
洞态IAST自动检测S2-048


本文始发于微信公众号(火线Zone):洞态IAST自动检测S2-048

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月3日07:43:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   洞态IAST自动检测S2-048http://cn-sec.com/archives/391744.html

发表评论

匿名网友 填写信息