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

by admin on 2018年10月5日

简介

简介

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

  那些经过请(如查询字符串和表单数据)指定重定向URL的Web程序可能会见被歪曲,而将用户重定向到表面的恶意URL。这种歪曲就深受称之为开发重定向攻击。

现象分析

气象分析

 
图片 1

 
图片 2

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

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

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

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

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

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

  2. 报到成功后重定向到了黑心网站。

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

  3. 黑心网站是一个仿制正规网站的记名页面,并以点提示用户称或密码错误。

  3. 恶心网站是一个仿制正规网站的登录页面,并以方提示用户称或密码错误。

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

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

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

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

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

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

 

 

防范开放重定向

防护开放重定向

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

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

  1.
假设登录链接和站点外页面还以跟一个域名,在ASP.MVC中好用Url.IsLocalUrl(string
url)来判断。

  1.
若登录链接和站点外页面都以跟一个域名,在ASP.MVC中得用Url.IsLocalUrl(string
url)来判定。

  2.
而登录链接和站点旁页面不以跟一个域名,如单点登录,则需要协调失去贯彻判断的逻辑。
 
着力代码

  2.
假如登录链接和站点外页面不在和一个域名,如单点登录,则需好去实现判断的逻辑。
 
骨干代码

 1        [HttpPost]
 2         public ActionResult LogOn(LogOnModel model, string returnUrl)
 3         {
 4             //Your logon logic here.
 5             FormsAuthentication.SetAuthCookie(model.UserName, false);
 6            //Comment out this code will cause open redirection 
 7             if (!string.IsNullOrEmpty(returnUrl)&& Url.IsLocalUrl(returnUrl))
 8             {
 9                 return Redirect(returnUrl);
10             }
11             return RedirectToAction("Index", "Home");
12         }
 1        [HttpPost]
 2         public ActionResult LogOn(LogOnModel model, string returnUrl)
 3         {
 4             //Your logon logic here.
 5             FormsAuthentication.SetAuthCookie(model.UserName, false);
 6            //Comment out this code will cause open redirection 
 7             if (!string.IsNullOrEmpty(returnUrl)&& Url.IsLocalUrl(returnUrl))
 8             {
 9                 return Redirect(returnUrl);
10             }
11             return RedirectToAction("Index", "Home");
12         }

 

 

联想到XSS

联想到XSS

  1.
恶意用户在业内网站下挂了超越反至黑心网站的脚本。
  2.
普通用户访问到含恶意脚本的页面会超越反到黑心网站。
  3.
恶心网站是一个仿制正规网站的报到页面,并以方提示用再登录。
  4.
小白按照提示还输入了帐号密码信息。
  5.
黑心网站保存了客户之用户名密码,然后重定向会正规网站。
 
  横流:这种方式每次访含恶意脚本的页面都见面越反到黑心网站(提示还登录),而开重定向单独见面提醒用户名密码错误一次等,相对而言,开放重定向的无感知效果使好一点。  

  1.
黑心用户以正规网站下挂了跨越反至黑心网站的剧本。
  2.
普通用户访问到含恶意脚本的页面会超过反到黑心网站。
  3.
恶意网站是一个仿制正规网站的记名页面,并当地方提示用再登录。
  4.
小白按照提示还输入了帐号密码信息。
  5.
恶意网站保存了客户的用户名密码,然后重定向会正规网站。
 
  横流:这种方法每次访含恶意脚本的页面还见面超过反至黑心网站(提示还登录),而开重定向只见面提示用户名密码错误一坏,相对而言,开放重定向的无感知效果使好一些。  

   图片 3

   图片 4

源码下载

  如果大家想尝尝开放重定向的功效,可以去下载代码,把判断仍链接的语句Url.IsLocalUrl(returnUrl)注释掉,然后于报到页面加上想使超越反至之页面,如http://xxx.com/Account/LogOn?ReturnUrl=http://www.baidu.com。

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

 

 文章转载自:http://www.cnblogs.com/Erik_Xu/p/5497479.html

源码下载

  如果大家想尝尝开放重定向的职能,可以错过下载代码,把判断照链接的语句Url.IsLocalUrl(returnUrl)注释掉,然后于报到页面加上想要跨越反到的页面,如http://xxx.com/Account/LogOn?ReturnUrl=http://www.baidu.com。

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

 

 文章转载自:http://www.cnblogs.com/Erik_Xu/p/5497479.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图