News新闻

业界新闻动态、技术前沿
Who are we?

您的位置:首页      乐道系统FAQ      系统XSS漏洞修补方案

系统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("&amp;", "&nbsp;", "'", '"', "<", ">", "\t", "\r");
    $html_clear = array("&", " ", "&#39;", "&quot;", "&lt;", "&gt;", "&nbsp; &nbsp; ", "");
    $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}')";