相关关键词
关于我们
最新文章
系统XSS漏洞修补方案
发布日期:2014-04-28 00:00:00
588
网上爆系统出现xss漏洞:
漏洞缺陷:存储型xss
漏洞文件:links.php
漏洞处在申请友情链接处的网站名称和logo地址处,因为网站名称“webname”是post获取的并且没做过滤所以xss出现了!
利用说明:xss打后台拿webshell
后台拿shell:直接在域名后面输入这段URL“admin/template_update.php?dir=default&file=config.default.php”进行模板修改!然后在模板修改上面添加一个php的一句话就可以了,然后在域名后面直接连接“/inc/templates/frontend/default/config.default.php”就可以了!
解决方案
1、使用360的WEBSCAN安全插件,安全性高!
2、系统本身,对直接入表的数据进行过滤
$webname = _safe($_POST['webname']);
$weburl = _safe($_POST['weburl']);
$logourl = _safe($_POST['logourl']);
$webmaster = _safe($_POST['webmaster']);
$contact = _safe($_POST['contact']);
$info = _safe($_POST['info']);
过滤函数是从网上找的:
function _safe($str){
$html_string = array("&", " ", "'", '"', "<", ">", "\t", "\r");
$html_clear = array("&", " ", "'", """, "<", ">", " ", "");
$js_string = array("/<script(.*)<\/script>/isU");
$js_clear = array("");
$frame_string = array("/<frame(.*)>/isU", "/<\/fram(.*)>/isU", "/<iframe(.*)>/isU", "/<\/ifram(.*)>/isU",);
$frame_clear = array("", "", "", "");
$style_string = array("/<style(.*)<\/style>/isU", "/<link(.*)>/isU", "/<\/link>/isU");
$style_clear = array("", "", "");
$str = trim($str);
//过滤字符串
$str = str_replace($html_string, $html_clear, $str);
//过滤JS
$str = preg_replace($js_string, $js_clear, $str);
//过滤ifram
$str = preg_replace($frame_string, $frame_clear, $str);
//过滤style
$str = preg_replace($style_string, $style_clear, $str);
return $str;
}
入库操作
$sql = "INSERT INTO `{$DB['prefix']}links`(`lang`,`type`,`webname`,`weburl`,`logourl`,`webmaster`,`contact`,`info`,`color`,`sort`,`audit`,`addtime`) VALUES ('".LANG."','{$type}','{$webname}','{$weburl}','{$logourl}','{$webmaster}','{$contact}','{$info}','',100,0,'{$gmt_time}')";