[Day20] Open Redirect - 开放重定向

前言

Open Redirect漏洞除了拿来钓鱼,还有呢?

正文

概念

Open Redirect常常是被Web开发者忽视的漏洞,这让攻击者可以驱使一般正常使用者在浏览网站时,将他们从一个正常网站中重定向到另一个Web Service,而这个Web Service就很有可能是恶意的。

这个漏洞常常被忽视的原因是,常常被认为是网路钓鱼、网路诈骗、和其他社交工程手法相关的攻击手段。但事实上,Open Redirect漏洞可以做的远远不仅限於网路钓鱼,它可以和其他的攻击手法(Attack Vector)结合,相互利用,例如SSRF、XSS、帐户接管等等。

以下是一些HTTP Redirection的Status Code

  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 305 Use Proxy
  • 307 Temporary Redirect
  • 308 Permanent Redirect

一个简单的范例如下:

reurl.php

$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

这让用户可以用url的input重定向到另一个url,一般网路钓鱼的手法是,将url的input输入自己架设的恶意web service,如:
http://example.com/reurl.php?url=http://attacker.com
并将此串发送给受害者,或是搭配CSRF一起利用。

除此之外,跟其他的攻击手法结合,可以扩大它的攻击面,另外,虽然有一些防御策略可以使用,例如对可能导致重定向的参数进行检查或设置filter,但仍存在许多bypass的方法,如:

  • %0d%0a

java%0d%0ascript:alert("XSS")

  • //

http://example.com/reurl.php?url=//attacker.com

  • no //

http://example.com/reurl.php?url=http:attacker.com

  • \/

http://example.com/reurl.php?url=\/attacker.com

  • null byte
    http://example.com/reurl.php?url=//attacker%00.com
  • @
    http://example.com/[email protected]

XSS

在Open Redirect漏洞中,还可能允许攻击者调用非HTTP Protocol的行为,这就允许使用javascript: Protocol的基於DOM的重定向,这就可能触发XSS,导致任意的Javascript程序执行,例如:

http://example.com/reurl.php?url=javascript:alert("XSS")

SSRF

利用SSRF漏洞,攻击者可以轻易越过/取得防火墙或filter後面的内部内容,当需要bypass这些防护措施时,就可以利用Open Redirect重定向到domain中的内容。详细利用可以参考下方的Case Study

Case Study

Open Redirect on central.uber.com allows for account takeover [严重性:高]

Twitter lite(Android): Vulnerable to local file steal, Javascript injection, Open redirect [严重性:高]

[dev.twitter.com] XSS and Open Redirect Protection Bypass [严重性:中]


<<:  Day 20. 来确认Mac电脑的显示卡/显示晶片

>>:  Leetcode: 98. Validate Binary Search Tree

C# 一些基础特性

C# 类别 class 定义的类型是参考型别, 在运行时当你声明一个参考类别变数, 此变数会包含 n...

ui li 列出清单标签-基础语法

<ul> <li>1</li> <li>2<...

Day-23 使用DOM节点

网页中的<script> 基本上,JavaScript透过控制DOM来控制网页。若要在网...

[DAY18]旋转木马(01)

TemplateSendMessage - CarouselTemplate carousel_te...

[Day - 28] React Hooks useState 学习笔记

前言 这篇文章将会介绍 React Hooks,Hook 是 React 16.8 中增加的新功能。...