近日我们发现了一个攻击者可以利用的安全漏洞。通过破解该插件十分脆弱的密钥,再加以SQL注入可对目标站点进行一系列的攻击。2 V' L$ c) n2 f. N: d9 o
WP-Slimstat插件包含一个简单可猜测的密钥,这个密钥被WP-Slimstat用来标记网站的访问者。只要该密钥被攻破,攻击者可以通过SQL注入(盲注)攻击目标网站以获取敏感的数据库信息,包括用户名、密码(hash)以及至关重要的wordpress安全密钥。
3 x b' @. K' N6 J' z& W2 `背景:
. `% p. l/ p7 z0 p4 x+ J6 m0 a1 z
+ U) a1 d- ]8 l1 S
/ x/ Z; P) h, n5 {8 g5 ?+ ]技术细节1 ~* E* P# Q6 {0 }/ G
WP-Slimstat使用密钥来对客户端信息进行传递。通过观察是生成的原理,我们发现攻击者相对十分容易猜测到其原始值。
B3 Z: i; \( h( z- k
Sucuri-WP-Slimstat-secret1.png
- O' a$ [+ I/ W% \7 z( ]WP-Slimstat密钥仅仅是该插件安装时的时间戳(MD5hash版本号),而诸如Internet Archive这种“网站时光机”可以帮助攻击者更轻松地猜出插件安装的时间。攻击者只需要进行3千万次的猜解测试,而对于目前市面上的CPU来说,这种量级的暴力破解只需要10分钟。
- P- ~8 M2 E5 ~/ r( q3 ]: i! b5 ?
Sucuri-WP-Slimstat-StatsParam.png
# w" q: q4 [; `# s4 n: V6 J这部分看起来可能有点复杂,那么我们先来看看这个插件数据结构,在下图中我们可以看到这个数据签名,hashing连接的字符串包括了我们的payload以及密钥令牌6 T0 r( Y, _, m) d! j4 a: W# L5 x
Sucuri-WP-Slimstat-Signing.png
" h: R' V+ N; @, s! {2 J' S利用这些信息,攻击者便可以利用bruteforce对时间戳进行破解,直到从该网站主页上得到相同的签名。好了,现在也是该进入下一个阶段了:利用这个BUG执行SQL注入攻击。
) S! H. d' @% f5 I6 R5 S我们发现我们可以向unserialize()[这可能形成一个对象注入漏洞,这取决与该站上是否存在其他插件]插入任意数据,接着使用 $content_info变量传递给maybe_insert_row()函数! o& V# B1 @% Z. G
Sucuri-WP-Slimstat-InsertRow.png
+ _- r/ w2 z: c; g快速浏览一下这个函数关联数组的处理方法,让我们看到了进行SQL盲注的希望。+ _- K/ D$ L9 h0 n: L
Sucuri-WP-Slimstat-SQLi.png
+ z Y8 {: L2 Y' ^1 ]4 Z+ l6 p* b
鉴于,我们可以控制$_data函数,我们可以让其包含一个含有SQL语句的关联数组(比如array(“1=sleep(100)–“=>”1″) )这样攻击者就执行任意查询语句,获取他们所想得到的东西了。
4 d& K# B Z, M' f3 ~ Z 注:相关网站建设技巧阅读请移步到建站教程频道。 |