详细说明-url重定向漏洞-入门渗透笔记
1. 概念
开放重定向(Open ),也叫 URL 跳转漏洞,是指服务端未对传入的 URL 变量进行检查和控制,导致诱导用户跳转到恶意网站,由于是从可信的站点跳转出去的,用户会比较信任。
URL重定向的触发点常见于一些跳转参数处,例如:?url=https://baidu.com,如果成功跳转百度(或其他涉黄涉赌网站),说明url参数存在URL跳转漏洞。
2.URL跳转有四种实现方式3.漏洞产生原因代码层忽视 URL 跳转漏洞,或不知道/不认为这是个漏洞。代码层过滤不严,用去取子串、取后缀等方法简单判断,代码逻辑可以被绕过。对传入参数操作(域名剪切/拼接/重组)和判断不当,导致绕过原始语言自带的解析 URL,判断域名的函数库出现逻辑漏洞或者意外特性服务器/容器特性、浏览器登对标准 URL 协议解析处理等差异性导致被绕过4.漏洞等级
该漏洞本身是无法直接危害系统和用户安全的,按照通用漏洞定级标准: URL 跳转漏洞属于低危漏洞,但该漏洞可以结合其他漏洞加以深入利用,主要的利用方式不限于钓鱼攻击,在工信部远程检测工作中,该漏洞定义为高危。
5.漏洞危害6.URL重定向漏洞认定标准可成功跳转至非法网站、白名单外网站或其他可实行钓鱼攻击、窃取信息等高危行为的仿冒网站。是否需要做出除点击链接外的其他操作(如是否存在跳转确认页面等)实现URL重定向。可以成功显示跳转页面内容。数据包中响应状态码为301、302、307或308。7.常见的URL跳转代码
Java:
response.sendRedirect(request.getParameter("url"))
PHP:
$redirect_url = $_GET\['url']; header("Location: " . $redirect_url)
.NET:
string redirect_url = request.QueryString["url"]; Response.Redirect(redirect_url);
:
redirect_url = request.GET.get("url") HttpResponseRedirect(redirect_url)
Flask:
redirect_url = request.form['url'] redirect(redirect_url)
Rails:
redirect_to params[:url\]
常见的路由参数名:
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
8.绕过方式
绕过是针对某些开发对有漏洞的参数未完全过滤或控制而进行的,绕过的原理是程序或浏览器对这些特殊符号的解析,可以让URL重定向到我们指定的地址。绕过方式包括不限于:
@ 绕过
http://xxx.com/?url=http://xxx.com@baidu.com
? 绕过
http://xxx.com/?url=http://baidu.com?xxx.com
. 绕过
http://xxx.com/?url=http://xxx.com.baidu.com
# 绕过
http://xxx.com/?url=http://baidu.com#xxx.com
/ 绕过,可以尝试多个正斜杠一起用,如/、//、///
http://xxx.com/?url=http://baidu.com/xxx.com
\ 绕过
http://xxx.com/?url=http://baidu.com\xxx.com
双写参数 绕过
http://xxx.com/?url=http://xxx.com&url=http://baidu.com
进制 绕过
http://xxx.com/?url=http://3232235777
(3232235777为IP地址192.168.1.1的十进制值 以192.168.1.1为例,
把它转为10进制数的公式是:192 * 256^3 + 168 * 256^2 +1 * 256 + 1 * 1 = 3232235777)
9. 前端可能造成漏洞的原因
这个漏洞主要是针对后端 URL 跳转及请求头跳转问题造成的。
在前端中,如果涉及 =xxxx 的路由(内部实现为 .open),也会造成这类问题前端涉及 富文本/ 解析,会解析用户输入的不受信连接 为 a 标签前端路由中允许用户创建外链类型的动态路由
网络安全学习路线图(思维导图)
网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。
1. 网络安全视频资料
2. 网络安全笔记/面试题
3. 网安电子书PDF资料
~