wprdpress的rce复现环境搭建

4月30日ExploitBox发布推文,称@dawid_golunski发现了Wordpress远程代码执行漏洞,自己说可以控制1/3的互联网,给出了youtube的视频链接

wprdpress的rce复现环境搭建_第1张图片

https://www.youtube.com/watch?v=ZFt_S5pQPX0 

在官网https://exploitbox.io/ 中他们给出了获取POC的方法:

留下你的邮箱,他们公布漏洞细节,会给你第一时间发送POC的

然后就在凌晨3点,他们发了这么一份邮件:


wprdpress的rce复现环境搭建_第2张图片

不管怎样,总算是拿到了POC和漏洞细节,

邮件中的链接分别是:

https://exploitbox.io/vuln/WordPress-Exploit-4-6-RCE-CODE-EXEC-CVE-2016-10033.html 

https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html 

https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html 

打开链接查看之后,文章对于漏洞的发现写得十分的详细,从发现到绕过以及每一步的绕过方法,都有描述,但原文是英文,个人还是比较吃力的,但慢慢读就会发现绕过的思路还是很巧妙的

核心点就是作者提供了可用的针对WordPress的利用方法,利用的攻击向量就是exim4 MTA.

主要是PHPMailer漏洞(CVE-2016-10033)在WordPress Core代码中的体现,该漏洞不需要任何的验证和插件,在默认的配置情况下就可以利用。

在这里有一篇讲host注入的文章:

http://blog.a-way-out.net/blog/2015/11/06/host-header-injection/ 

拿到POC的最一开始就是直接去zoomeye,google去找wordpress的站,结果发现,利用成功的,

可以说几乎少到发指,翻回头来读人家实验室的文章,再看看网上大牛的分析,才明白了原因所在,最后得出结论,这个作者说的1/3有标题党的嫌疑,实际中并没有那么厉害的的影响,但还是需要注意的:

1.sendmail需要安装exim4扩展,(centOS6.7,ubuntu>14.04没有默认安装,还有就是linux的发行版都没装sendmail),所以需要先安装这个扩展

2.高版本的apache中host不能带有特殊字符(漏洞作者使用的是默认的apache2配置)

3.nginx+fpm情况下,server_name是nginx指定的,不会从host中取

4.POC中使用的是admin,但不一定每一个都是设置的是admin,需要改为存在的用户名

5.line:161 -m少了一个空格

6.另外访问wp-json/wp/v2/users即可拿到用户名

至于漏洞分析过程,网上的文章已经分析的十分详尽,下面是搭建环境的过程:

系统:ubuntu14.04,wordpress4.6

安装exim4

通过apt-get install exim4直接安装,

安装完的效果如下:


在网上有些人说需要安装sendmail,apt-get安装完会在系统建立sendmail的软连接,这个软连接直接指向了exim4,当然也就不需要再安装sendmail了。安装完之后会在系统的25号端口建立监听。

安装mysql

apt-get install mysql-server

apt-get install mysql-client

apt-get install  php5-mysqlnd-ms

新建数据库:

mysql> create database wp_myblog;

mysql> grant all privileges on wp_myblog.* to 'wordpress'@'localhost' identified by 'wordpress';

mysql>flush privileges;

配置apache:

解压WordPress的zip包到web目录,设置apache2配置文件。

apach2的简单配置如下,就是设置DocumentRoot指向刚才解压后WordPress的路径:

vim /etc/apache2/sites-enabled/000-default.conf 3536    # The ServerName directive sets the request scheme, hostname and port that

37    # the server uses to identify itself. This is used when creating

38    # redirection URLs. In the context of virtual hosts, the ServerName

39    # specifies what hostname must appear in the request's Host: header to

40    # match this virtual host. For the default virtual host (this file) this

41    # value is not decisive as it is used as a last resort host regardless.

42    # However, you must set it for any further virtual host explicitly.

43    #ServerName www.example.com

44    ServerName www.a.com

46    DocumentRoot /var/www/WordPress-4.6/

配置WordPress wp-config

编辑wp-config.php,首先sudo cp wp-config-sample.php wp-config.php,修改如下:

23 define('DB_NAME', 'wp_myblog');

24

25 /** MySQL database username */

26 define('DB_USER', 'wordpress');

27

28 /** MySQL database password */

29 define('DB_PASSWORD', 'wordpress');

重启进程

最后重启数据库,apache2

sudo /etc/init.d/apache2 restart

sudo /etc/init.d/mysql start

重启完之后访问我们的设置的IP或者域名,按照提示一步步设置即可。不过得记住具体设置的用户名或者email地址。原poc的作者测试使用的是admin这个用户名,但是实际情况并不一定是这样的。

附docker环境链接:

https://github.com/phith0n/vulhub

参考来源廖新喜,qz,Tomato菜的要死,p师傅,感谢

你可能感兴趣的:(wprdpress的rce复现环境搭建)