这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
+ B! G% G: a8 M [5 n; c4 E T7 T- v* p9 ^ O2 u/ T9 K
" T! f& \$ N. U4 J' }4 S4 Y这是帝国的一套下载系统 如图
2 W5 y( ~; |( Z4 k. nps(不需要任何账户和密码,直接写shell)
- R. m, ^" @+ p- Z" x' y由于很多站是由于下载要整合discuz 等等一些论坛....0 |. U0 v/ C6 [4 r4 j
, g1 u& u8 @- u. a% n. T+ ?# Y4 L而帝国他又有一个万能接口,如图
$ P/ Q' [' p. u# C! H9 n+ d6 m
- Y! e k$ [$ n) w/ i6 h; \3 l4 q7 e. L; _: u2 ]
而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码6 H9 L' z; F) N3 V$ z
+ Q5 d4 F% h( v
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪. Q# Y& e4 R) h
+ |5 O, l q. O3 S在data/fun.php中的15行6 M% L' j z2 U3 L& ^
$ \8 h* y: p! W' ?5 l
我们可以看到这个函数 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. {
; E0 m8 I: j, w0 j3 w; I17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干+ \6 A! S( p+ v! k& l! c5 E
$ K: }8 |" C+ ~9 W. u这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);2 N2 Q3 @, s* ^9 Q) m2 P
3 S; p, V4 l9 ~! t5 C5 E他将传进来的变量进行了切割,然后赋给了$filetext
8 O' ~+ F2 S! F
, J' [5 D6 n2 z& i7 S/ Z# v9 ], U然后看下面 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写入了
4 {, p, _ V1 w8 R" z: L6 ~9 k! r) E: u- i& G/ B
我们看看写入的结果,随便填一个
8 X% u! r. p3 i6 J2 k
" q ?$ D( w3 C) |- o* I+ K& t7 Y* B1 x0 b
- y) M( R4 O# i }/ \
5 s0 c( t% {% T
5 f0 m, X2 D* D( B L: x6 m- A& v8 U; R1 l
" N* b$ \; S. m! r; D' [, I2 B" b8 {
' @$ O" {! k0 e" w# O( [/ Y4 d/ h+ `9 a: y/ ^
6 G4 N4 m5 H: J! F9 U
5 f3 R) c9 y# t/ u( A1 a$ ~) U
' l/ z6 I: W" t7 h* l* o* {8 D8 d6 Q# B1 t" {7 B8 P2 Y
# } K% g3 Y3 W8 t
( E9 P& |$ y( E& ^' c
2 w. H/ J, _% i
- n: }5 R/ {; v6 w1 [
# Q5 y7 |2 v* R
) s* r! ^! }* c+ g
4 K: T/ [# q0 O8 e
" M; i2 q( g7 z) c所以我们淫荡点,写个${@phpinfo()}试试
! s) h O+ V2 A9 V; `然后访问以下class/user.php这个文件
- t% w$ X6 P; }; X8 W日了吧
8 U2 M- G0 w' T5 c. o
' s: h8 B6 l6 W2 n P
g# i0 {' }9 ?' u6 `
: t( z# [ h9 n' V
+ q% c9 a: K& C+ S
0 a; A+ D* y; O, Z; a( J |