一、什么是URL跳转漏洞
URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,导致用户浏览器跳转到钓鱼页面的一种漏洞。
二、URL跳转漏洞的原理
![](https://img.haomeiwen.com/i13590453/291b0f135595ea62.jpg)
黑客构造恶意链接给普通用户,普通用户点击链接访问看似安全的web服务器,最终跳转访问黑客恶意网站。
三、URL跳转漏洞案例
中奖率,或者给XXX投票
如http://qt.qq.com/safecheck.html?flag=1&url=http://jtvx518.cc
将恶意网站与正规网站混合在一起。
实现URL的跳转:
Header头跳转
<?php
header("Content-Type:text/html;charset=utf-8");
if(isset($_REQUEST["url"]))
{
$url = $_REQUEST["url"];
}else{
$url = "url.html";
}
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
?>
Javascript跳转
<script type="text/javascript" >
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
var site = getQueryString("site");
window.location.href=site;
</script>
META标签跳转
<html>
<head>
<title></title>
<?php
header("Content-Type:text/html;charset=utf-8");
if(isset($_REQUEST["url"]))
{
$url = $_REQUEST["url"];
}else{
$url = "url_meta.php";
}
?>
<meta http-equiv="Refresh" content="5; url=<?php echo $url?>" />
</head>
<body>
</body>
</html>
四、防御策略
根据上面的场景分析,我们知道,之所以会出现跳转 URL 漏洞,就是因为服务端没有对客户端传递的跳转地址进行合法性校验,所以,预防这种攻
击的方式,就是对客户端传递过来的跳转 URL 进行校验。
常用的方式:
服务端配置跳转白名单或域名白名单,只对合法的 URL 做跳转
网友评论