关于CVE-2022-42889ApacheCommonsTextRCE漏洞分析

ApacheCommonsText漏洞分析ApacheCommonsText是一个用于执行文本操作的库,包括转义、字符串差异计算以及通过搜索值插值器替换文本中的通配符。
2022年10月13日,官方发布了漏洞公告,漏洞名称为“Textshell”,漏洞编号为CVE-2022-42889。
该漏洞允许动态评估和扩展属性,插值的默认格式为${prefix:name}。
1.5至1.9版本允许攻击者构造恶意文本,从而允许ApacheCommonsText在解析时执行任意恶意代码。
该漏洞影响ApacheCommonsText版本1.5至1.9。
在维护和更新扫描仪的POC库的同时,我决定了解并分析这个漏洞。
IDEA通过Maven导入依赖,测试代码使用JDK版本1.8。
在代码分析之前,我们在官方用户指南中了解了如何使用标准的StringSubstitutor搜索来创建复杂的字符串。
描述漏洞的关键是进行变量插值,默认格式为${prefix:name}。
我们检查了StringLookupFactory文档。
从1.5版本开始,可以满足脚本类型字符串搜索,但默认不包含。
找到org.apache.commons.text.lookup.InterpolatorStringLookup#lookup方法。
该方法提取“:”后面的部分作为前缀值,然后根据stringLookupMap提取对应的Lookup实例化对象。
接下来,我们找到org.apache.commons.text.lookup.ScriptStringLookup#lookup方法并调用ScriptEngineManager来执行代码。
了解漏洞后半部分后,我们设置断点,动态调试搜索方法调用过程。
我们发现org.apache.commons.text.StringSubstitutor#createInterpolator方法实例化了StringSubstitutor并传递了StringLookupFactory.INSTANCE.interpolatorStringLookup()。
StringSubstitutor#replace方法中,将参数类型进行转换,传递给replacement进行处理。
然后进行一系列的评估测试。
最后传递“resolveVariable”方法。
org.apache.commons.text.StringSubstitutor#resolveVariable方法直接调用org.apache.commons.text.lookup.InterpolatorStringLookup中的search方法来获取getStringLookup的值。
如果该漏洞确实被复现,我们可以看到网上已经有很多针对该漏洞的分析。
尽管与Log4Shell(CVE-2021-44228)有相似之处,但ApacheCommonText问题中的相关方法明确用于执行字符串插值并已记录在案,因此应用程序不太可能在没有正确验证的情况下意外输入不正确的值可以移交。
值得信赖的输入。
针对该漏洞,我们提供了测试工具(工具地址:github.com/StarCrossPor...),目前已更新至第三版本,增加了对CVE-2022-0885和CVE-2022-10的支持。
54、检测CVE-2022-1392、CVE-2022-21500、CVE-2022-23854漏洞,并集成100多个漏洞POC,解决内容类型和正文类型不一致等问题。
最新版本测试稳定,满足Web/API漏洞模糊测试和多场景漏洞检测。
星蓝科技门户实验室致力于前沿安全技术研究与开发-能力工具重点关注API安全、应用安全、攻防对抗等领域。
我们不断更新漏洞POC,通过扫描工具优化漏洞检测,并在各种安全技术的研究上投入开放式创新。
如果您想了解更多新闻,请关注“星蓝科技”和“星蓝实验室”官方微信公众号。
在这里您可以了解技术方面的知识。

文件解析漏洞是什么?

文件解析漏洞是指中间件(Apache、nginx、iis等)解析文件时存在的弱点。
黑客可以利用该漏洞解析非法文件。
需要注意的是,解析漏洞和上传漏洞是两个不同的东西,文件解析漏洞是基于文件上传的。
例如,Apache中间件是用C和C++混合编写的,当Apache中间件出现解析漏洞,即C或C++编程出现漏洞时,无论我们的PHP代码多么安全,都是没有的。
抵御黑客攻击的方法由于目前的漏洞与PHP代码层无关,因此已经是一个根本性的安全问题文件解析漏洞是由于Apache中间件和C++的编程弱点造成的,这使得黑客可以利用这一点。
解析非法文件的漏洞。
所以,基本安全比其他安全更重要,至少从现在开始,我们必须开始关注基本安全。
程序开发人员应该如何防止该漏洞被利用?1、编写程序时要特别注意图片上传后,必须用随机数字或英文重命名文件名中最好不要含有其他字符,并且不能允许用户指定图片文件名。
2、对于网盘系统来说,如果支持目录的创建,并允许用户自定义目录名,而这些目录是在实际的物理磁盘上创建的,需要注意的是,目录名必须严格检查,最好只允许英文和数字的输入。
但最好用数据库来记录文件夹层次结构,不要让用户知道实际的磁盘地址对应关系。
我们不能坐等程序开发者升级程序或者指望微软发布补丁(至少半年过去了,微软仍然没有发布补丁)。