From 85ea1ed1ea5903ebf7f30c0d7ca47f770065d069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Jakub?= Date: Mon, 2 Oct 2023 12:35:57 +0200 Subject: [PATCH] Add an evil landing page to demonstrate invalid redirect attack --- src/flow/evil.html | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/img/evil.webp | Bin 0 -> 25724 bytes 2 files changed, 72 insertions(+) create mode 100644 src/flow/evil.html create mode 100644 src/img/evil.webp diff --git a/src/flow/evil.html b/src/flow/evil.html new file mode 100644 index 0000000..9ea15ab --- /dev/null +++ b/src/flow/evil.html @@ -0,0 +1,72 @@ + + + + + + + OAuth 2.0 Playground - Authorization Code Flow (2/3) + + + + + + + + + + + + + + + + +
+
+
+

+
+ + +
+
+
+
+
+
Let's see what we have here:
+
+

+ Out evil attacker now can use these to finish the flow on your behalf and access your data. +

+
+
+
+
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/src/img/evil.webp b/src/img/evil.webp new file mode 100644 index 0000000000000000000000000000000000000000..277db99f8d24d9fd27e81be2e13215e733f9368c GIT binary patch literal 25724 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