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

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们7 ]0 M8 l0 g" U: n' j7 [" Z, b, t
, P) v/ `+ Q6 C( u1 V% d/ K

2 }; X+ M7 H$ Q8 u* f: G- [
这是帝国的一套下载系统 如图
! B" P0 x, f; J  M: Sps(不需要任何账户和密码,直接写shell)


. g# H. U( U! v6 m" ]% r4 K* |

由于很多站是由于下载要整合discuz 等等一些论坛....
4 c, p& N, g' Q4 m; F; d7 V


. q& w) m8 t' Y5 o0 J% B

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

$ p+ m! Z1 T9 }
! G& j+ v. N2 w# P6 f9 `& G
0 J: r$ d( W" o! p

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
: V6 V0 {; p- I- W4 H0 f  t# E6 H- O' ]" W/ |
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
+ W" ~+ m* \: F1 M* x( x
! Q9 k3 E! h$ c1 ?* W9 O) ~! K在data/fun.php中的15行' X; g/ x0 ^! I7 [- F% r7 E: G

, S9 t1 |& K8 b+ W我们可以看到这个函数

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. {/ U) N+ t9 h3 ]; B2 a: |
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
* j9 R. C# ~+ n: l) v' U7 J: R7 B& v9 _6 l
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
7 q; U+ X- T0 R% q! |5 o8 Z2 ]+ Y4 ]. b% m5 Y$ H
他将传进来的变量进行了切割,然后赋给了$filetext5 m: m; d, y: n

4 m' n5 m$ @8 ^) p然后看下面

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写入了" K% m6 {& p3 n( l" i( K0 }) B; J
4 q! A2 p4 g% c* }0 ?. h
我们看看写入的结果,随便填一个

) y! a! q) N5 I% k6 ^. g8 h! ~# V

2 p; e4 I0 }/ R4 E. h0 R; E/ `( \' F, u
5 _3 Z2 G" {/ Y
# u9 D: N8 H9 b  d% I% O
) k  i, F9 G7 X
/ x7 P" g; g3 ^8 Q
' A3 R+ @- ?1 W
3 z  N7 E- ]' D  q/ u% v# F1 X

, c' @# S* b) }+ C! M+ e
! P/ D7 _1 Z; x- S6 \
& m$ R0 z8 {, W9 c
" b$ Z+ Y& d3 V1 b
6 W0 ?  N. A( K- k' G. _- C

: U7 j' r+ T* ]. f& u3 R$ J* A$ ]! i+ P8 G, _
6 v5 E5 w8 C2 j# u3 f

) d: F2 m7 E3 m; X" x) Z
$ R7 Y6 m* G) I3 K7 [% ~
) G- _% ^" T( {4 y
* R1 A$ [) |7 i3 w$ u0 m3 B2 [; S8 Y6 b' g

$ ]; S) Y3 J/ g

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


: f3 l, \! z, r# O9 o& F

然后访问以下class/user.php这个文件
; u) s4 V' |) C) k5 ~日了吧


! p6 w+ q* @4 L
- T: ]  m) c) D5 d7 i$ @3 ]5 B" W

: }0 d2 f5 b- X/ y; U! @8 b2 A* ^; a& U& C/ Q$ O
3 F/ Y- P: L4 W) f; D" s- S
2 V* Q% i3 ?# M- `3 G

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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