近日我们发现了一个攻击者可以利用的安全漏洞。通过破解该插件十分脆弱的密钥,再加以SQL注入可对目标站点进行一系列的攻击。
/ F! t" t: a8 qWP-Slimstat插件包含一个简单可猜测的密钥,这个密钥被WP-Slimstat用来标记网站的访问者。只要该密钥被攻破,攻击者可以通过SQL注入(盲注)攻击目标网站以获取敏感的数据库信息,包括用户名、密码(hash)以及至关重要的wordpress安全密钥。
1 X+ h4 a- a7 f& G: B0 x& x背景:& _" t; l; W4 f/ \8 z4 k! p
" a1 q1 n" A$ w( ]5 e0 M/ ]+ S3 r. \2 Y, Y
技术细节
1 s) T2 Z. U, W/ lWP-Slimstat使用密钥来对客户端信息进行传递。通过观察是生成的原理,我们发现攻击者相对十分容易猜测到其原始值。* ^. o) I& {6 T/ [( B8 U4 m! X& \
Sucuri-WP-Slimstat-secret1.png
& ~% Q6 Y2 T6 f
WP-Slimstat密钥仅仅是该插件安装时的时间戳(MD5hash版本号),而诸如Internet Archive这种“网站时光机”可以帮助攻击者更轻松地猜出插件安装的时间。攻击者只需要进行3千万次的猜解测试,而对于目前市面上的CPU来说,这种量级的暴力破解只需要10分钟。/ K+ m. A2 X( E9 z
Sucuri-WP-Slimstat-StatsParam.png
* Z, y4 k. P ?4 C* X
这部分看起来可能有点复杂,那么我们先来看看这个插件数据结构,在下图中我们可以看到这个数据签名,hashing连接的字符串包括了我们的payload以及密钥令牌
. \$ y" o0 T$ i$ k3 v5 F
Sucuri-WP-Slimstat-Signing.png
8 f8 I. y0 Q, Q8 W8 h9 u! {" H利用这些信息,攻击者便可以利用bruteforce对时间戳进行破解,直到从该网站主页上得到相同的签名。好了,现在也是该进入下一个阶段了:利用这个BUG执行SQL注入攻击。
% r8 ?) W( I% J- \8 b我们发现我们可以向unserialize()[这可能形成一个对象注入漏洞,这取决与该站上是否存在其他插件]插入任意数据,接着使用 $content_info变量传递给maybe_insert_row()函数8 d% _3 @. i* @: n4 w! j1 n! X
Sucuri-WP-Slimstat-InsertRow.png
Z4 ]4 x L7 u9 n, A
快速浏览一下这个函数关联数组的处理方法,让我们看到了进行SQL盲注的希望。0 M, S! n: n4 h8 {& o
Sucuri-WP-Slimstat-SQLi.png
$ z# U2 U8 [9 T6 `
鉴于,我们可以控制$_data函数,我们可以让其包含一个含有SQL语句的关联数组(比如array(“1=sleep(100)–“=>”1″) )这样攻击者就执行任意查询语句,获取他们所想得到的东西了。
7 b7 b7 Y- i" y( e4 h 注:相关网站建设技巧阅读请移步到建站教程频道。 |