iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Security

讓Web開發者森77的Hacking Trick系列 第 20

[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/reurl.php@attacker.com

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 [嚴重性:中]


上一篇
[Day19 ] Prototype Pollution - Prototype汙染
下一篇
[Day21] Remote Code Execution
系列文
讓Web開發者森77的Hacking Trick30

尚未有邦友留言

立即登入留言