一次性付费进群,长期免费索取教程,没有付费教程。
进微信群回复公众号:微信群;QQ群:460500587
教程列表 见微信公众号底部菜单 | 本文底部有推荐书籍微信公众号:计算机与网络安全
ID:Computer-network
Web应用程序经常将用户界面重定向和转至其他网页或网站,如果处理不当,用户会被攻击者利用重定向转至不可信的数据页面所欺骗,带来不必要的损失。
一般情况下,会将登录后需要跳转的地址“http://localhost:8080/Home”放到登录页面的参数中,如图1所示。
图1 登录跳转页面
登录成功后,如果没有得到适当验证,攻击者可以重定向目标用户到钓鱼软件或恶意网站,使用转发链接来使目标用户访问未经过授权的页面,这可能导致恶意软件的安装或者用户密码等敏感信息的泄露。
不安全的转发可能允许绕过访问控制,如下是URL跳转示例。示例中有一个名为“redirect.php”的页面,该页面有一个参数名是“url”。攻击者精心制作了一个URL将用户重定向到其他网站。
$url=$_GET['url'];
header("Location: $url");
即使登录界面相同,但如果URL不一样(见图1和图2),那么跳转界面也会不一样。当用户在浏览器中输入或者从邮件中点击攻击者发送过来的地址“http://localhost:8080/redirect.php?url=192.168.1.10:8888”后(“192.168.1.10:8888”仅为示例),会被引导到攻击者想让用户访问的页面上,如图3所示。如果是攻击者精心构造的恶意地址,用户很有可能被执行钓鱼攻击并安装恶意程序。
图2 用户实际输入的地址
图3 用户被引导跳转后的实际页面
在控制页面转向的地方校验传入的URL是否为可信域名,通常采用URL白名单机制。该机制可以有效地防止任意跳转。
$whithList=array('localhost:8080','localhost');
$url=$_GET['url'];
if(in_array($url,$whithList)) {
header("Location: $url");
} else {
exit("
非法域名请求
}
图4所示是添加白名单后的执行结果,它成功地阻止了页面跳转。
图4 阻止URL跳转漏洞
微信公众号:计算机与网络安全
ID:Computer-network
【推荐书籍】