简介

  那些通过请求(如查询字符串和表单数据)指定重定向URL的Web程序可能会被篡改,而把用户重定向到外部的恶意URL。这种篡改就被称为开发重定向攻击。

场景分析

  假设有一个正规网站http://nerddinner.com/,还有一个恶意网站或钓鱼网站http://nerddiner.com/(注意:这里少了个n)。

  一天,小白收到了别人发的链接:http://nerddinner.com/Account/LogOn?returnUrl=http://nerddiner.com。

  1. 打开链接后进入了登录界面,小白输入了自己的帐号名密码进行登录。

  2. 登录成功后重定向到了恶意网站。

  3. 恶意网站是一个仿造正规网站的登录页面,并在上面提示用户名或密码错误。

  4. 小白按照提示重新输入了帐号密码信息。

  5. 恶意网站保存了客户的用户名密码,然后重定向会正规网站。

  6. 小白继续平时正常的操作。  

防止开放重定向

  防止开发重定向只需要判断重定向的链接是本地的链接或者是合法的链接即可。

  1. 如果登录链接和站点其他页面都在同一个域名,在ASP.MVC中可以用Url.IsLocalUrl(string url)来判断。

  2. 如果登录链接和站点其他页面不在同一个域名,如单点登录,则需要自己去实现判断的逻辑。 

核心代码

[HttpPost]

public ActionResult LogOn(LogOnModel model, string returnUrl)

{

//Your logon logic here.

FormsAuthentication.SetAuthCookie(model.UserName, false);

if (!string.IsNullOrEmpty(returnUrl)

&& Url.IsLocalUrl(returnUrl) //Comment out this code will cause open redirection

)

{

return Redirect(returnUrl);

}

return RedirectToAction("Index", "Home");

}

联想到XSS

  1. 恶意用户在正规网站下挂了跳转到恶意网站的脚本。

  2. 普通用户访问到含恶意脚本的页面会跳转到恶意网站。

  3. 恶意网站是一个仿造正规网站的登录页面,并在上面提示需要重新登录。

  4. 小白按照提示重新输入了帐号密码信息。

  5. 恶意网站保存了客户的用户名密码,然后重定向会正规网站。

  注:这种方式每次访问含恶意脚本的页面都会跳转到恶意网站(提示重新登录),而开放重定向只会提示用户名密码错误一次,相对而言,开放重定向的无感知效果要好一点。

源码下载

  如果大家想尝试开放重定向的效果,可以去下载代码,把判断本链接的语句Url.IsLocalUrl(returnUrl)注释掉,然后在登录页面加上想要跳转到的页面,如http://xxx.com/Account/LogOn?ReturnUrl=http://www.baidu.com。

  下载地址:https://github.com/ErikXu/OpenRedirection

相关文章:

  • 跨站脚本攻击(XSS)

  • 跨站请求伪造(CSRF/XSRF)

  • [译]构建现代Web应用的安全指南

原文地址:http://www.cnblogs.com/Erik_Xu/p/5497479.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

开放重定向(Open Redirection)相关推荐

  1. Web安全相关(三):开放重定向(Open Redirection)

    简介 那些通过请求(如查询字符串和表单数据)指定重定向URL的Web程序可能会被篡改,而把用户重定向到外部的恶意URL.这种篡改就被称为开发重定向攻击. 场景分析 假设有一个正规网站http://ne ...

  2. 使用命令重定向操作符 (Redirection Operators)

    使用命令重定向操作符 (Redirection Operators) 可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到不同的位置.输入或输出数据流的位置即为句柄. 下表列出了可用于将命令输 ...

  3. Web Hacking 101 中文版 十二、开放重定向漏洞

    十二.开放重定向漏洞 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 根据 OWASP,开放重定向出现在应用接受参数并将用户重定向到该参数值,并且没有对该值 ...

  4. linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)

    发布日期:2015-01-22 更新日期:2015-01-27 受影响系统: Siemens SIMATIC S7-1200 CPU < V4.1 描述: BUGTRAQ  ID: 72282 ...

  5. 通过开放重定向接管 GitHub Gist 账户,获奖$1万(GitHub $6.1万奖金系列之三)

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 在上篇文章中,我们探讨了针对每种形式的 CSRF 令牌的绕过,当时我在研究可用于生成 url 的每种方法,试图找到可用于创建所需令牌的 ...

  6. 开源 CMS Drupal 修复 XSS 和开放重定向漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 开源 CMS Drupal 的更新修复了跨站脚本 (XSS) 漏洞和开放重定向漏洞,不过这些它们仅被评为"中危"级 ...

  7. SRC挖掘---web开放重定向漏洞-2day

    在本章中,我们将学习开放重定向漏洞,不是很深入因为需要与其他漏洞结合起来使用,我们这里先做了解. 开放式重定向漏洞使攻击者能够强制 Web 应用程序重定向到攻击者选择的 URL 什么是开放重定向漏洞? ...

  8. SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  9. 过多提交(Over Posting)

    简介 过多提交的内容相对比较简单,因此,我只打算把原文中的一些关键信息翻译一下.原文链接如下: http://www.asp.net/mvc/overview/getting-started/gett ...

最新文章

  1. vue.js权威指南----代码解释实例
  2. Win32 Edit 文本框追加字符串
  3. QUIC的前世今生——HTTP演变史
  4. 腾讯云助力中国信息通信研究院研发运维标准化体系建设
  5. Linux开发商计划停止开发32位版本
  6. 机器学习经典算法决策树原理详解(简单易懂)
  7. 面试经常被问到这 4 大开源框架,必须得好好研究一下了!
  8. SDUT 1149 勾股定理第一弹 勾股数
  9. 本地升级MySQL数据库版本为8.0.23,使用SQLyog(小海豚)无法进行连接
  10. mysql卡住如何定位_MySQL 5.7中如何定位DDL被阻塞的问题
  11. 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?
  12. mach内核和linux对比,海思Hi3511/Hi3512 Linux内核与标准内核差异说明
  13. Codeforces 1146G Zoning Restrictions dp
  14. 好兄弟结婚,送给他的小诗
  15. C#利用Microsoft.Office.Interop.Excel导出excel文件
  16. 信息无障碍研究机构---企业
  17. Java集合 他人的总结 和 我的学习
  18. Apple开发者账号介绍
  19. 全网最全的SimpleDateFormat类日期表
  20. [Python] ERROR:argument of type ‘datetime.date‘ is not iterable

热门文章

  1. 使用 PHP 7 给 Web 应用加速
  2. CSS中的!important属性用法
  3. hdu 4049 Tourism Planning [ 状压dp ]
  4. qsort(bsearch,lsearch)—标准库排序,查找
  5. [第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui
  6. Windows 程序包管理器 1.0 正式发布
  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容...
  8. 一日一技:ASP.NET Core Api网关Ocelot初探
  9. 【对比学习】koa.js、Gin与asp.net core——中间件
  10. Java 生态碎片化 和 .NET生态的一致性