找回密码
 立即注册
查看: 2549|回复: 0
打印 上一主题 下一主题

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
' ^( \! q2 t7 A& L& [: s  h9 ^# O: J5 O! v  H: ?0 ?+ T/ s+ M


& t9 X' v4 x, W. t/ T: U% N1 ]- }这是帝国的一套下载系统 如图. o9 f1 I; v) ?
ps(不需要任何账户和密码,直接写shell)

! [) i9 l" `! ~. b8 n3 ]

由于很多站是由于下载要整合discuz 等等一些论坛....$ s# a! b" y4 n( Z, S

& n% S9 n1 L$ \/ j$ f+ y

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


  b6 k) X1 o  q" A
: B. s, F# q! Y% `" J+ t9 f2 h0 s! p- g; s

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
- P) D9 U+ g: _( x$ @6 u; p) |
3 d! c6 v' A+ b' n当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
6 U' d; g2 C1 C9 d6 {( w
* y7 ?4 K# Y- Q& r; p0 g  Q在data/fun.php中的15行' }5 a; I+ ]6 g0 B: r" K5 H& v

. ]& f# J7 F: u. z我们可以看到这个函数

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. {: K9 ]& v5 v$ l# k
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干% d) C1 {. }  C. X
7 @# [" t0 \4 g+ l# u7 X
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
+ \2 A9 }8 l7 Q+ o6 P3 l
' _/ v/ k2 G4 U3 Q$ @- E* F3 u9 Z他将传进来的变量进行了切割,然后赋给了$filetext) z  d8 g0 I6 `7 c
' ~( n) A7 d# v3 ?+ k4 i$ q. L4 ^
然后看下面

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写入了
7 W6 b0 m' `! A6 d( R
( x  g+ I0 w2 N% `, E我们看看写入的结果,随便填一个


: }& e: m. k& f3 h* O3 D% }7 T3 r4 w( o* Q/ d
  f# V% A7 u6 e
1 F' {4 b; @! X8 |4 V

+ h" a3 L# x8 O+ f* ~8 X% W  ]' H
2 L: q% x* n- ?/ _7 X) |
3 y. D6 A: |3 T/ Y; P2 c( @" m
7 A; ?/ w9 p( O
! D5 r! e6 f0 e8 R( p" m
4 d% F6 s5 M; y' a. l
6 X& ]6 h! U+ U9 N
+ H- p3 q* X9 m
) F+ e5 \+ d7 z. l

* a4 l- V! V& x8 [, ]8 o% W, K
  O, c  e, M, T, p$ i

7 A" B+ b, v6 w- o+ U0 F( I( B! i) G1 E1 I' a3 T: d7 k% S) U5 m. c

+ _" j( T* l. R4 D' L! d- I4 q) Z6 P0 ?
; a9 C+ T. O& N: B2 A
& @, i4 y1 O+ a! Y, c" A3 W: n
0 l  G" T) ]% L9 W

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


0 ]% L# c, t. Z, D* V, A: J

然后访问以下class/user.php这个文件
$ b$ r5 Y7 _/ G. O日了吧


2 x3 j8 s. H+ t" M- V/ g, P6 r

# r5 @9 E2 }9 Z) }. R2 w
& e1 l+ n/ P, x6 ^& i, V$ ~- O6 V1 U

* F8 g- T2 m  \% ^6 _

, @; x# X- M' P. Q

9 T( I1 r/ c% H% [7 J! Y

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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