2019-11-11 CVE-2017-12629 复现学习

CVE-2017-12629包含两个漏洞,分别是XXE和远程命令执行。

CVE-2017-12629 XXE

首先这个漏洞点在于这个路径中(demo是自己创建core,可能名字会有所不一样):  /solr/demo/select?q=payload&wt=xml&defType=xmlparser

首先老老实实按照vulhub上利用http://协议简单验证一下漏洞的存在。修改vulhub上的payload,让服务器访问我的VPS。

2019-11-11 CVE-2017-12629 复现学习_第1张图片

监听6657端口,并向服务器发送构造好的请求。

2019-11-11 CVE-2017-12629 复现学习_第2张图片
2019-11-11 CVE-2017-12629 复现学习_第3张图片

看到vulhub最后有一个读取/etc/passwd文件的截图。想着自己也试一试。于是继续更改payload,使用file:///etc/passwd来回显结果。但是一直发生如图错误:

2019-11-11 CVE-2017-12629 复现学习_第4张图片

因为没有过多的了解Blind XXE,一直以为是我payload那里参数写错了。后来在查找解决方法的过程中看到了这篇文章:https://www.freebuf.com/vuls/194489.html

才知道上图的报错其实是正常的Blind XXE回显,是能确保/etc/passwd存在的,并且能被XML解析器正常打开读取,只是因为/etc/passwd不是个有效的XML文档类型定义,所以解析失败并报错。

按照参考文章中,利用外带的思路来解决这个问题。先写好一个XML文档,上传到我自己的服务器中,文档内容为:

2019-11-11 CVE-2017-12629 复现学习_第5张图片

再利用http://协议访问我服务器上写好的XML文档,进行内容的回显。Payload构造如下:

2019-11-11 CVE-2017-12629 复现学习_第6张图片

发送请求,得到/etc/passwd内容的回显:

2019-11-11 CVE-2017-12629 复现学习_第7张图片

CVE-2017-12629 RCE

该漏洞需要创建一个Listener,按照vulhub上的payload可以进行修改,修改为执行echo “u been hacked” > /tmp/1.sh

2019-11-11 CVE-2017-12629 复现学习_第8张图片

如果响应如上图则表示Listener添加成功,目前我对这个Listener了解的还没有完全深入,还需要继续学习。只是通过实践得知,再执行命令,需要命名新的Listener,否则会报错,在哪里能删除旧的Listener还需要查找资料。我这里先放过去。

然后利用update更新,触发新创建的Listener。

2019-11-11 CVE-2017-12629 复现学习_第9张图片

查看服务器内的文件信息,命令执行成功,可以做到向服务器内写shell。因为靶机环境内没有nc等一堆命令,所以就没复现执行nc反弹shell的操作。不过这个RCE还是挺神通广大的。

2019-11-11 CVE-2017-12629 复现学习_第10张图片

你可能感兴趣的:(2019-11-11 CVE-2017-12629 复现学习)