首页 > 其他分享 >URL 重定向漏洞原理以及修复方法

URL 重定向漏洞原理以及修复方法

时间:2024-04-08 15:33:04浏览次数:23  
标签:重定向 URL 用户 漏洞 参数 url 跳转

漏洞名称:URL重定向、跳转漏洞

漏洞描述

服务端未对传入的跳转url变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易;也可能引发的XSS漏洞(主要是跳转常常使用302跳转,即设置HTTP响应头,Locatioin: url,如果url包含了CRLF,则可能隔断了http响应头,使得后面部分落到了http body,从而导致xss漏洞)。另外在struts2 中存在重定向的漏洞,是因为struts2由于缩写的导航和重定向前缀‚action:‛、 ‚redirect:‛、 ‚redirectAction:‛ 等参数前缀的内容没有被正确过滤导致的开放式重定向漏洞。

检测条件

1.网页可正常访问

检测方法

1、 首先找到网站相关url中存在跳转链接的参数(常见的有登陆页面)。
2、 在检测的同时,可以修改参数中的合法URL为非法URL,然后查看是否能正常跳转或者通过抓包工具获取其HTTP响应头中host:的值是否包含了任意的构造URL。
3、 如果是struts2重定向漏洞,则可通过web扫描工具扫描发现,或者手工验证,直接在URL后 添 加 ?redirect:+ 指 定 钓 鱼 链 接 , 例 如 :
10.1.82.53:9098/admin/login.action?redirect:http://diaoyu.com进行验证。

修复方案

1、 若跳转的URL事先是可以确定的,包括url和参数的值,则可以在后台先配置好,url参数
只需传对应url的索引即可,通过索引找到对应具体url再进行跳转;
2、 若跳转的URL事先不确定,但其输入是由后台生成的(不是用户通过参数传人),则可以
先生成好跳转链接然后进行签名,而跳转cg首先需要进行验证签名通过才能进行跳转;
3、 若1和2都不满足,url事先无法确定,只能通过前端参数传入,则必须在跳转的时候对url
进行按规则校验:即控制url是否是公司授权的白名单或者是符合公司规则的url,参考代
码:

function checkURL ( sURL) {
return
(/^(https?:\/\/)?[\w\-.]+\.(yourDomainA|yourDomainB|yourDomainC)\.com($|
\/|\\)/i).test
(sUrl)||(/^[\w][\w\/\.\-_%]+$/i).test(sUrl)||(/^[\/\\][^\/\\]/i).test(sU
rl) ? true : false;
}

4、 通过对referer的限制:如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接;
5、 加入有效性验证Token:我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,在跳转时做判断,指定跳转的值。当用户访问需要跳转URL的页面时,生成随机token,并保存到Cookie中,后台应用程序在跳转前,判断token是否和cookie中的token一致。
6、 理论上讲,url跳转属于CSRF的一种,跳转url检测中也加入了CRLF头部注入漏洞的检测逻辑, 具体就是在请求参数中加入了%0d%0a这种测试代码,需要对这些参数进行删除处理(事实上:在判断到一个参数中包含 %00 -> %1f 的控制字符时都是不合法的,需对其进行删除)

7、 如果为struts2重定向漏洞,则需要更新相关的struts2的版本到最新。

标签:重定向,URL,用户,漏洞,参数,url,跳转
From: https://blog.csdn.net/CHENSMALLYUN/article/details/137510563

相关文章

  • 【漏洞复现】Telesquare TLR-2005KSH路由器 cgi-bin接口处存在RCE漏洞
                            免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习......
  • 【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection
    ......
  • Nginx 文件名逻辑漏洞(CVE-2013-4547)复现
    漏洞原理影响范围:Nginx0.8.41~1.4.3影响范围:Nginx1.5.0~1.5.7Nginx在解析php文件的时候通常在配置文件中如下配置location~\.php${roothtml;includefastcgi_params;fastcgi_passphp:9000;......
  • 用友GRP-U8 forgetPassword_old.jsp SQL注入漏洞(QVD-2023-31085)
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • Nginx 解析漏洞复现
    该漏洞与php和nginx版本无关,是配置错误导致的问题漏洞描述通常在nginx.conf的配置文件或者include包含的其他配置文件下有以下信息location~\.php${fastcgi_indexindex.php;includefastcgi_params;fastcgi_paramR......
  • react中路由传参和url传参
    一、如果路由跳转的页面是必须要一个参数的,那么可以在路由配置文件中的path中添加要传递参数的参数名。path:'account-info/:id'接受参数的时候使用react-router-dom中的useParams函数就可以了。const{id}=useParams()二、如果需要跳转的页面可以有参数也可以没有,使......
  • Nginx日志重定向到标准输出
    背景静态站点使用`docker`部署时,希望`nginx前台启动`的同时可以将错误日志和访问日志全部重定向到标准输出,便于采集和处理!实现只需要修改`nginx.conf`中`3行`关于日志的配置就OK了daemonoff;error_log/dev/stdoutwarn;access_log/dev/stdoutmain;其它配置项保持不变,效果......
  • PHP imap 远程命令执行漏洞(CVE-2018-19518)漏洞复现
    phpimap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这......
  • 猫头虎分享已解决Bug || **URLError (URL错误)** 全方位解析
    博主猫头虎的技术世界......
  • Redis未授权漏洞复现
    目录Redis漏洞的产生条件及利用Redis环境搭建漏洞复现利用Redis写入Webshell利用Redis写入SSH公钥利用Redis写入计划任务Redis安全防护Redisredis(remotedictionaryserver)是一个key-value存储系统,是跨平台的非关系型数据库。redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用......