大数跨境
0
0

代码审计:jar-analyzer 分析漏洞 Apache Commons Text RCE

代码审计:jar-analyzer 分析漏洞 Apache Commons Text RCE 黑伞安全服务商
2023-12-03
2
导读:文中提到了一个漏洞环境Apache Commons Text,并给出了如何利用Jar Analyzer对该漏洞进行分析的方法。最后,作者分享了使用Jar Analyzer分析多个Jar包的经验。

争取B站每周更新!文章投稿来自uname 。

Jar Analyzer 是一个分析 Jar 文件的 GUI 工具:

  • 支持大 Jar 以及批量 Jars 分析

  • 方便地搜索方法之间的调用关系

  • 分析 LDC 指令定位 Jar 中的字符串

  • 一键分析 Spring Controller/Mapping

  • 对于方法字节码和指令的高级分析

  • 一键反编译,优化对内部类的处理

  • 一键生成方法的 CFG 分析结果

  • 一键生成方法的 Stack Frame 分析结果

  • 自定义 SQL 语句进行高级分析

漏洞环境Apache Commons Text

CVE-2022-42889 Apache Commons Text 1.5 <= Apache Commons Text <= 1.9

org.apache.commons.text.lookup.StringLookup 的实例。从 1.5 版到 1.9 版,攻击者可构造恶意文本,使得Apache Commons Text 在解析时执行任意恶意代码。

Apache Commons Text 1.9

使用jar-ayalyzer分析

导入后点击start engine。我们知道CVE-2022-42889主要触发点是lookup调用了ScriptEngine的eval方法造成代码执行。

方法一: 在search类别里进行搜索

这里可以得到org.apache.commons.text.lookup$lookup方法调用了scriptEngine.eval。然后key可控, script = keys[1],所以慢慢往上走就可以了。

方法二:b站刚发视频如下

在call界面,有caller,callee两个界面。caller表示哪个方法调用了lookup方法,callee表示lookup里调用了什么方法。

往上来到了StringLookup接口,上面是调用,下面是实现类。

也可以在impl里面查看接口的实现类。

往上来到了 org.apache.commons.text$StringSubstitutor#resolveVariable, 可以看到都可传。

org/apache/commons/text/StringSubstitutor#substitute,之间如果有别的调用,慢慢分析也就有很多其他的触发链,但这个好像并没有

最后可以看⻅replace调用。

都是差不多的处理。

漏洞深度利用参考:https://forum.butian.net/share/1973

Poc

StringSubstitutor stringSubstitutor = StringSubstitutor.createInterpolator();stringSubstitutor.replace("${script:javascript:2 + 2});


参考:

https://lists.apache.org/thread/n2bd4vdsgkqh2tm14l1wyc3jyol7s1om
https://forum.butian.net/share/1973
https://github.com/jar-analyzer/jar-analyzer

【声明】内容源于网络
0
0
黑伞安全服务商
(黑伞安全服务商)BLKUMBRA致力于全球高净值人群安全防护领域的领军者,以"科技赋能安全,专业守护卓越"为核心理念,为企业家、政商领袖、科学界精英、高管、娱乐明星、医学人士、教授、律师等精英阶层提供全维度安全解决方案。
内容 366
粉丝 0
黑伞安全服务商 (黑伞安全服务商)BLKUMBRA致力于全球高净值人群安全防护领域的领军者,以"科技赋能安全,专业守护卓越"为核心理念,为企业家、政商领袖、科学界精英、高管、娱乐明星、医学人士、教授、律师等精英阶层提供全维度安全解决方案。
总阅读199
粉丝0
内容366