背景

首先看这篇文章:WordPress 3.8.2 cookie伪造漏洞再分析 http://drops.wooyun.org/papers/1409

推荐阅读:

The dangers of type coercion and remote management plugins

WordPress 3.8.2修复的一个重要漏洞是cookie伪造漏洞 (CVE-2014-0166)。该漏洞可以被攻击者利用通过伪造身份验证Cookie,登陆网站。

利用

具体的原理请看上面这篇文章,这里就不多重复了。

也就是说,我们只要把cookies设置成 “admin|$expiration|0”,就可以登陆后台了。

思路是:

题外话

在写利用脚本的时候发现,python的urllib2.urlopen会遇到301/302自动跳转的问题,这样无法判断出http状态码是否是302。来分析看看为什么吧。:)

打开urllib2源码,刚开头就看到了相关文档:

The HTTPRedirectHandler automatically deals with HTTP 301, 302, 303 and 307 redirect errors.

仔细阅读源码看一下调用过程:

#调用urlopen的文件
response = urllib2.urlopen(request)
#urllib2.py ,line 127, in urlopen
return _opener.open(url, data, timeout)
#urllib2.py ,line 410, in open
response = meth(req, response)
#urllib2.py ,line 523, in http_response
response = self.parent.error(
                'http', request, response, code, msg, hdrs)
#urllib2.py ,line 442, in error
result = self._call_chain(*args)
#urllib2.py ,line 382, in _call_chain
result = func(*args)
#urllib2.py ,line 608, in http_error_302
new = self.redirect_request(req, fp, code, msg, headers, newurl)

到这里我想已经够清楚了(执行到了我们之前在文档看到的HTTPRedirectHandler),最后的redirect_request:

Powered by Fruition