任意URL跳转漏洞详解
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
任意URL跳转漏洞简介 服务端未对传入的跳转url变量进行检查和控制,导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易。 URL跳转漏洞也叫开放重定向,如下面的格式的url https://example.com/login?return=https://mysite.com/ 漏洞危害 URL跳转漏洞本身属于低危漏洞,但可以结合其他漏洞加以深入利用,主要的利用方式不仅限于钓鱼攻击,包括: xss漏洞:通过javascript:alert(0)或CRLF; 获取用户权限(伪造钓鱼网站、窃取登录凭证token); 绕过检测(窃取CSRF token,绕过SSRF、RCE黑名单); 高级利用方法(配合其他功能/漏洞)。 实战案例 登录后重定向泄露会话令牌 redirect_url参数未经任何过滤,在登录后界面,请求链接: https://test.com/login?redirect_url=https://mysite.com,页面会被重定向到: https://www.mysite.com/?user=xxx&token=xxxx&channel=mijnwerkenbijdefensie 导致用户ID和会话令牌泄露,从而接管整个账号。 Tips:关注登录后的登录请求url。 挖掘技巧 在实际渗透过程中,可以在抓包历史中搜索返回状态码为302的请求包,业务层面,根据之前的挖掘经验,大多数的跳转漏洞都发生在登录功能处,其他存在漏洞的功能处有:注册、注销、改密,第三方应用交互,页面切换,业务完成跳转、返回上级、账号切换、保存设置、下载文件等等。 总体来讲,要观察哪些功能需要进行跳转,并关注任何涉及跳转操作的URL,常见的参数值有return、redirect、url、jump、goto、target、link、callback等,输入任意URL地址看是否可以任意跳转,若后台进行过滤,探测过滤算法,尝试过滤绕过。 过滤绕过 假设跳转链接http://www.xxx.com?url=http://test.com 其中http://test.com为正常跳转链接 恶意钓鱼链接为fishing.com,ip地址为192.168.1.1 @符号绕过 http://www.xxx.com?url=http://test.com@fishing.com 问号绕过 http://www.xxx.com?url=http://fishing.com?test.com # 绕过 http://www.xxx.com?url=http://fishing.com#test.com 正反斜杠绕过 http://www.xxx.com?url=http://fishing.com/test.com http://www.xxx.com?url=http://fishing.com\test.com http://www.xxx.com?url=http://fishing.com\\test.com http://www.xxx.com?url=http://fishing.com\.test.com 白名单 部分网站对跳转做了内容检测,比如白名单允许包含fish字符的链接通过,那么我们就能找包含fish的链接就行跳转。 http://www.xxx.com?url=http://fishing.com 多重跳转 例如 网站存在跳转http://www.xxx.com?url=http://test.com,但是限制仅限于xxx.com,那么我们为了达到目的可以先跳转到xxx.com,在跳转到fishing.com http://www.xxx.com?url=http://test.com?url=fishing.com 功能触发跳转 某些时候在修改链接后加载没反应,可能需要触发某功能来进行跳转,比如登录,删除等,具体看跳抓链接处于那个功能点。 xip.io绕过 http://www.xxx.com?url=http://test.com.192.168.1.1.xip.io 协议绕过 删除或切换http和https,或者增加多个斜杠 http://www.xxx.com?url=//fishing.com#test.com http://www.xxx.com?url=///fishing.com#test.com xss跳转 xss情况比较多,根据实际情况而定 防御手段 1、最有效的方法之一就是使用白名单严格控制将要跳转的域名,如: function checkURL ( sURL) { return(/^(https?:\/\/)?[\w-.]+.(yourDomainA|yourDomainB|yourDomainC).com($|\/|\)/i).test(sUrl)||(/^[\w][\w\/.-_%]+$/i).test(sUrl)||(/^[\/\][^\/\]/i).test(sUrl)? true : false;} 2、限制referer、添加token,这样可以避免恶意用户构造跳转链接进行散播。 该文章在 2025/5/23 12:09:02 编辑过 |
关键字查询
相关文章
正在查询... |