您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
wordpress 4.6以上版本任意命令执行漏洞的修复方法
如萱2025-03-02 16:47:34WordPress教程已有6人查阅
导读漏洞简述当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服务器用什么系统比较好
很早以前大家都习惯了windows server系统,后来发现win 的系统对于php程序支持并不是太好。现在可以用linux系统来运行wordpress博客。一般使用centos系统+php面板来做系统环境。wordpress做网站正常多久收录
百度收录一般是新站一个月之内只收录首页,三个月左右开始收录内页。然后文章内容如果是原创的话,收录很快,2天就可以收录,优化的好的话,可以达到秒收。WordPress导航菜单制作方法步骤
导航菜单早已 "深入民心", 在博客上的应用日益重要且多样. 从本文开始, 我将开展几个关于WordPress导航菜单的话题, 讨论如何在 WordPress 上使用和加强导航菜单, 话题间有wordpress显示多个分类的文章的方法示例
显示多个分类下的文章可以这样提取:首先把要读取的分类目录的ID找出,放在array数组中。借助强大的query_posts函数实现随机(’orderby’ => ‘rand’)读取十篇(’showposts’ =>10)
留言与评论 (共有 0 条评论) |