Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

  • A+
所属分类:安全文章

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘



Apache Solr任意文件读取和SSRF漏洞的自动化挖掘


漏洞描述


Apache Solr是一个开源的搜索服务,使用Java语言开发。Apache Solr的某些功能存在过滤不严格,在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF和文件读取漏洞。

综上,存在两个漏洞:任意文件读取和SSRF,同时SSRF也可以导致任意文件读取。

01

|



漏洞详情


两个漏洞在同一个HTTP请求中触发,分别对应不同的参数,触发漏洞的url为

http://x.x.x.x:8983/solr/new_core/debug/dump?stream.url=file:///etc/passwd&param=ContentStream&stream.file=/etc/passwd

其中,new_core是solr中core的名称,可通过solr控制面板创建及查看;漏洞分别对应以下两个参数:

  • stream.url触发SSRF漏洞,Java中可利用file协议利用SSRF,可用来实现任意文件读取

  • stream.file参数触发任意文件读取漏洞

02

|



手工分析


手工分析代码时,一般是看源码,然后debug,效率偏低。手工分析的过程不再赘述,漏洞的核心原因见下面代码:

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘



灵芝IAST(洞态IAST)自动挖掘漏洞


洞态IAST检测该漏洞,需要以下:

• 使用vulhub-cli创建安装灵芝IAST的solr环境(vulhub-cli教程 【地址见文末】)

• 使用浏览器访问solr,触发相关的URL

• 前往洞态IAST的搜索页面,输入漏洞对应的sink方法,搜索漏洞


洞态IAST的结果如下,漏洞实时检测:

04

|

灵芝

IAST

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

上图中,蓝色的线条代表污点的流向,图中共搜索到两条污点调用链,一条指向java.io.File.<init>方法,另一条指向java.net.URL.openConnection方法;分别对应任意文件读取漏洞和SSRF漏洞;


两个漏洞的污点调用链存在重合不分,下面先分析重合的污点链

1. 寻找污点来源

根据污点调用链找到污点的起始位置:发现在org.apache.solr.servlet.SolrRequestParsers$StandardRequestParser.parseParamsAndFillStreams方法中,调用getQueryString方法获取HTTP参数,拿到初始污点

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

2. 跟踪污点变化

根据污点调用链跟踪污点的变化:在org.apache.solr.servlet.SolrRequestParsers$StandardRequestParser.parseParamsAndFillStreams方法中,调用parseQueryString方法对污点进行解析,转换为MultiMapSolrParams对象

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

根据污点调用链跟踪污点的变化:在buildRequestFrom方法中,调用MultiMapSolrParams.getParams方法,获取污点

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

到此为止,公共污点链结束,接下来是两个漏洞独立的调用链,我们分别分析:


3. SSRF漏洞

继续根据污点调用链跟踪污点的变化:接下来的污点链就清晰了很多,分别是用污点创建URL对象和调用URL对象的openConnection方法触发漏洞,详细的调用链如下:

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

污点创建URL

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

URL对象调用openConnection方法触发漏洞

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

4. 任意文件读取漏洞

任意文件读取的链路与SSRF的链路类似,使用污点创建File对象,然后读取文件内容

Apache Solr任意文件读取和SSRF漏洞的自动化挖掘
Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

更多漏洞,等你来发现

洞态IAST 现提供SaaS版本和开源版本,可自动化挖掘部分0 Day漏洞,可前往查看版本介绍并联系技术支持获取试用。

( https://huoxianclub.github.io/LingZhi/#/doc/deploy/versions)



“洞态IAST地址:

http://aws.iast.huoxian.cn:8000/

“洞态IAST”使用文档:

https://huoxianclub.github.io/LingZhi/#/doc/tutorial/quickstart

vulhub-cli教程:

https://huoxianclub.github.io/LingZhi/#/doc/deploy/vulns?id=vulhub%e9%9d%b6%e5%9c%ba%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85%e7%81%b5%e8%8a%9diast


END


【火线Zone】


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

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

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


Apache Solr任意文件读取和SSRF漏洞的自动化挖掘


招 聘

火线招安全研究工程师(代码审计方向)、移动安全工程师,帮助社区白帽子实战自动化/半自动化漏洞挖掘!

邮箱: [email protected]


♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
Apache Solr任意文件读取和SSRF漏洞的自动化挖掘
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩
♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩

扫描二维码 | 关注我们

微信号 : hxanquan


本文始发于微信公众号(火线Zone):Apache Solr任意文件读取和SSRF漏洞的自动化挖掘

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: