您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
wordpress 4.6以上版本任意命令执行漏洞的修复方法
如萱2025-03-02 16:47:34WordPress教程已有11人查阅
导读漏洞简述当WordPress 使用 PHPMailer 组件向用户发送邮件。攻击者在找回密码时会使用PHPmailer发送重置密码的邮件,利用substr(字符串截取函数)、$run(系统调用函数)等构造
漏洞简述
当WordPress 使用 PHPMailer 组件向用户发送邮件。攻击者在找回密码时会使用PHPmailer发送重置密码的邮件,利用substr(字符串截取函数)、$run(系统调用函数)等构造payload,即可进行远程命令执行。0x00漏洞影响
WordPress <= 4.6.0
PHPMailer < 5.2.180x01漏洞原理
主要是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构造: payload转换规则:
1.payload中run{}里面所有 / 用 ${substr{0}{1}{$spool_directory}} 代替
2.payload中run{}里面所有 空格 用 ${substr{10}{1}{$tod_log}} 代替
上面的payload分别转换为: 将最终转化的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 使用 PHPMailer 组件向用户发送邮件。攻击者在找回密码时会使用PHPmailer发送重置密码的邮件,利用substr(字符串截取函数)、$run(系统调用函数)等构造payload,即可进行远程命令执行。0x00漏洞影响
WordPress <= 4.6.0
PHPMailer < 5.2.180x01漏洞原理
主要是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构造: payload转换规则:
1.payload中run{}里面所有 / 用 ${substr{0}{1}{$spool_directory}} 代替
2.payload中run{}里面所有 空格 用 ${substr{10}{1}{$tod_log}} 代替
上面的payload分别转换为: 将最终转化的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到较新版本。
本文标签:
很赞哦! (1)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
WordPress使用方法整理
WordPress,当初之所以研究这个,目的是在于开发一个多租户系统应用。总的来说,WordPress给了我不少启发和影响。为此,我决定这个研究心得分享出去。总的来说,这篇文章参考了很多wordpress更改网站URL的方法步骤
方法1:Here are the initial steps you’ll want to take when moving to a new domain name. Existing Domain:Export Your WordPress Posts - 导出文章 You can find thewordpress网站提供下载文件功能实现方法
wordpress插件可以实现,文件下载插件Download Monitor可以实现文件本地下载和管理。Download Monitor 是一个非常不错的下载管理插件wordpress设置密码的教程
对于像WordPress这样的流行内容管理系统,安全性至关重要。有时候我们发布的内容不 希望所有的人都可以看到,比如某些相册图片、某些个人隐私、某些只对一部分人可以查看的内容等
留言与评论 (共有 0 条评论) |