开通VIP,畅享全站资源免费下载!

Emlog修复后台编辑器存储型XSS漏洞的方法

【摘要】 以前DYBOY就发布过关于Emlog6.0的代码审计文章,其中就有分析道emlog文章编辑器的XSS漏洞,如果有些含有会员系统的EMLOG网站,就可能会遭到此漏洞攻击,严重可导致盗取管理员coo...

以前DYBOY就发布过关于Emlog6.0的代码审计文章,其中就有分析道emlog文章编辑器的XSS漏洞,如果有些含有会员系统的EMLOG网站,就可能会遭到此漏洞攻击,严重可导致盗取管理员cookie,最后网站被黑客入侵拿下webshell。

xss防御.jpg

当然,我这里不会教大家如何去入侵,而是讲一讲如何防御EMLOG的编辑器XSS攻击。关于XSS漏洞的原理,暂时也不讲了,感兴趣的可以去我的博客:DYBOY看看。

一、XSS攻击会带来的风险?

Emlog后台使用的编辑器是kindeditor,由于版本较低,对于HTML语法也是直接解析渲染,如果编辑器内的代码有JavaScript代码,也会正常执行。

当管理员查看到含有黑客插入的恶意JavaScript代码的文章时,恶意代码就会执行并获取管理员的cookie,然后将cookie发送给黑客的远程服务器。

在B/S架构中,依靠cookie来鉴别用户身份,cookie就是钥匙,管理员有了cookie,才可以在网站上使用管理员才可以使用的功能。

倘若cookie泄露给黑客,黑客就能拿着你的cookie,打开你网站的门,进行管理员的操作,严重的可导致服务器被入侵,你的网站就再也不是你的了。

二、如何防御Emlog中的XSS攻击?

从上述我们知道,XSS就是一些JavaScript代码执行并获取cookie。那么我们有什么办法阻止JavaScript代码获取Cookie呐?

答案是HTTPONLY。

httponly是cookie属性之一,当httponly的设置值为 TRUE 时,使得JavaScript无法获取到该值,有效地防御了XSS盗取管理员的 cookie

三、Emlog内核改造

来到“include\lib\loginauth.php”文件第134行的setAuthCookie函数:

emlog设置用户的cookie.jpg

我们将其改为如下代码:

/**
 * 写用于登录验证cookie
 *
 * @param int $user_id User ID
 * @param bool $remember Whether to remember the user or not
 */
public static function setAuthCookie($user_login, $ispersis = false) {
    if ($ispersis) {
        $expiration  = time() + 3600 * 24 * 30 * 12;
    } else {
        $expiration = null;
    }
    $auth_cookie_name = AUTH_COOKIE_NAME;
    $auth_cookie = self::generateAuthCookie($user_login, $expiration);
    setcookie($auth_cookie_name, $auth_cookie, $expiration,'/', '', false,true);
}

另外还需要将212行的gentoken函数改为:

/**
 * 生成token,防御CSRF攻击
 */
public static function genToken() {
    $token_cookie_name = 'EM_TOKENCOOKIE_' . md5(substr(AUTH_KEY, 16, 32) . UID);
    if (isset($_COOKIE[$token_cookie_name])) {
        return $_COOKIE[$token_cookie_name];
    } else {
        $token = md5(getRandStr(16));
        setcookie($token_cookie_name, $token, 0, '/', '', false, true);
        return $token;
    }
}

这样就给关键的cookie设置上了httponly检查,如此JavaScript代码无法执行,黑客也就无法获取到任何用户的cookie了!充分保证了网站的安全!

四、效果演示:

httponly设置后的效果.jpg

参考文章:《[XSS防御]HttpOnly之四两拨千斤

版权声明:《 Emlog修复后台编辑器存储型XSS漏洞的方法 》为作者优选资源网原创文章,转载请注明原文地址!
最后编辑:2020-3-3 10:03:52
分享到:
赞(4)
发表评论 / Comment

用心评论~

金玉良言 / Appraise
五行缺钱LV2游客
2020-05-06 02:51
大佬能不能出一篇emlog6.0.1更换wangeditor编辑器的教程,奈何小白没能力,只能跪求大佬了
头像
优选资源网站长已认证 SSVIP(终身)
2020-05-14 16:26
@五行缺钱:wangeditor有自己的文档,照着文档使用替换即可
日主题LV3 VIP(月费)
2020-04-29 23:31
厉害
余生.LV1游客
2020-03-11 21:54
6666啊
浅安时光LV1游客
2020-03-04 01:17
感谢站长分享
头像
优选资源网站长已认证 SSVIP(终身)
2020-03-04 19:01
@浅安时光:欢迎来访:)