正在阅读:

WordPress MePal模板漏洞修复指南

12,074

前言

为了更方便和各位小伙伴们进行技术交流,小弟使用WP来这一强大的博客系统来构建博客,同时购买了网上的收费模板MePalV2.3版,所以小伙伴们要继续支持小站哦,也不枉我的一番苦心呀。废话唠叨完了,那么开始我们今天的主题,WordPress MePal模板漏洞修复。

MePal模板是由90nl.com站长开发,集成了很多酷炫的功能,后台一键设置,很是方便,但是随着功能的增强,安全性也随之暴露了出来,经过了几个月的使用以及使用360的webscan扫描的结果,漏洞总结如下:

网站漏洞

1、HTTP响应拆分漏洞修复

HTTP响应拆分漏洞(也叫CRLF注入攻击),CRLF其实就是回车换行的意思,在web渗透测试中我们赋予了它更多的意义,出现HTTP响应拆分漏洞的网站攻击者可能注入自定义HTTP头。例如,攻击者可以注入会话cookie或HTML代码。这可能会进行类似的XSS(跨站点脚本)、话固定漏洞或者恶意重定向。

MePal模板的增加了任意网址跳转功能,使用了MePal模板的网站,可以网站域名后面加入?mp=http://www.waitalone.cn/进行跳转,在URL中输入http://www.waitalone.cn/?mp=http://www.baidu.com/即可跳转到百度去,为了安全起见,函数默认情况下会判断是否有Refere值,有的话才可以跳转,否则会重定向到当前网站。但是我们知道Referer是可以伪造的,而且此跳转函数未对用户输入中的特殊字符进行替换,造成了CRLF漏洞,如下图:

HTTP响应拆分漏洞

HTTP响应拆分漏洞

存在问题的函数为redirect_comment_link函数,位于MePal主题目录下的functions.php文件中

function redirect_comment_link()
{
    $redirect = $_GET['mp'];
    $host = $_SERVER['HTTP_HOST'];
    if ($redirect) {
        if (strpos($_SERVER['HTTP_REFERER'], get_option('home')) !== false) {
            header("Location: $redirect#from:$host");
            exit;
        } else {
            header("Location:http://$host");
            exit;
        }
    }
}

$redirect变量获取后未进行任何过滤就进行了跳转,因此造成此漏洞,改为如下即可完成修复。

function redirect_comment_link()
{
    $redirect = $_GET['mp'];
    $redirect = trim($redirect);
    $redirect = strip_tags($redirect,"");           //清除HTML等代码
    $redirect = str_replace("\t","",$redirect);    //去掉制表符号
    $redirect = str_replace("\r\n","",$redirect);  //去掉回车换行符号
    $redirect = str_replace("\r","",$redirect);    //去掉回车
    $redirect = str_replace("\n","",$redirect);    //去掉换行
    $redirect = str_replace(" ","",$redirect);     //去掉空格
    $redirect = str_replace("'","",$redirect);     //去掉单引号
    $host = $_SERVER['HTTP_HOST'];
    if ($redirect) {
        if (strpos($_SERVER['HTTP_REFERER'], get_option('home')) !== false && strpos($redirect,'http') !== false) {
            header("Location: $redirect#from:$host");
            exit;
        } else {
            header("Location:http://$host");
            exit;
        }
    }
}

str_replace你也可以改成ereg_replace,不想改的直接复制上面代码即可。

2、跨站脚本攻击漏洞

点我查看XSS跨站脚本攻击科普

存在XSS漏洞的文件是MePal模板的公共侧边栏"说/统/登"小工具,只要使用此小工具的网站都存在XSS跨站脚本攻击漏洞。

验证方法,开启说统登小工具,然后访问如下URL,弹出123456说明存在XSS漏洞,未启用此工具的不受影响。

http://www.waitalone.cn/">/<script>alert(123456)</script>

存在问题的页面为MePal/includes/widget/widget_logintalk.php,具体代码为:

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>"/>

很明显,输出的时候,未进行任何转义导致的XSS漏洞,更改代码为如下即可修复。

<input type="hidden" name="redirect_to" value="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>"/>

使用htmlspecialchars对特殊字符转义以后再输出到浏览器即可。

另外一处XSS漏洞存在于奶酪直链解析工具download.php,并且V3.1版之前的都存在XSS漏洞。

漏洞代码:

<div class="downs_btn"><a href="<?php echo $url; ?>" title="百度网盘">网盘下载</a></div>

修改为如下即可:

<div class="downs_btn"><a href="<?php echo htmlspecialchars($url); ?>" title="百度网盘">网盘下载</a></div>

3、发现install文件

这个是最好解决的了,删除wp-admin目录下的install.php文件或者重命名即可。

4、任意跳转漏洞

这个是网站需要的东西,而且验证了Referer,如果想任意跳转的话,必须在提交HTTP请求包的时候加上Referer值才行,这个其实没有多大意义,可以不用在意的。。

以上便是MePal模板的所有漏洞及修复方法,由于小站带宽有限,我只是使用的webscan.360.cn最小资源消耗模式检测的,可能会有些漏洞没有检测到,如果你发现了MePal模板的其它漏洞,请在此留言,我会修复的。下面看看修复完成后的扫描效果。

漏洞修复完毕

最后说一下360web安全扫描的得分图片是可以伪造的,大家看看我的得分。(纯属娱乐)

扫描结果

如果你也想伪造一下得分,点击下面的链接:

点我伪造360得分

目前有:5条访客评论,博主回复4

  1. 哥特复兴
    2013-09-24 10:43

    博主法克的ID是什么啊,学习学习

    • 独自等待
      2013-09-24 10:46

      @哥特复兴:法客论坛我没有邀请码,注册不了唉。

      • 哥特复兴
        2013-09-24 10:47

        @独自等待:随便写篇文章 就可以通过啦

        • 独自等待
          2013-09-24 10:49

          @哥特复兴:没空,你看我博客都是几天才更新一下的。

          • 哥特复兴
            2013-09-24 10:50

            @独自等待:你说现在是选bt5玩,还是选kali玩比较好啊。。

            • 独自等待
              2013-09-24 10:51

              @哥特复兴:另外一个没玩过,还是BT5吧,看自己喜欢,玩熟了都一样的。

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌