Back

Reverse Tabnabbing

๐Ÿ” Introduction

Reverse tabnabbing์€ ํŠน์ • ์กฐ๊ฑด์—์„œ a, iframe ๋ฐ window.open() ๋“ฑ์œผ๋กœ ์ƒ์„ฑ๋œ child page๊ฐ€ parents page๋ฅผ ์ผ๋ถ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•ด ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๋กœ parents page๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ทจ์•ฝ์ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

target blank

๋ณดํ†ต ๊ฐ€์žฅ ํ”ํ•œ ๊ฒฝ์šฐ๊ฐ€ a ๋“ฑ์˜ ํƒœ๊ทธ์—์„œ target="_blank" ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์‚ฌ์šฉ์ž๊ฐ€ html ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค(๋ฉ”์ผ, ๋งˆํฌ์—…์„ ํฌํ•จํ•œ ๊ฒŒ์‹œํŒ ๋“ฑ)์—์„  ์‰ฝ๊ฒŒ ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— ์ค‘์š”๋„์— ๋”ฐ๋ผ XSS์™€ ์œ ์‚ฌํ•˜๊ฒŒ _blank์— ๋Œ€ํ•œ ์ œํ•œ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

<a href="https://bad.example.com" target="_blank" rel=opener>Click</a>

๋‹จ ์ตœ๊ทผ์— ๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ/ํŒŒํญ/์‚ฌํŒŒ๋ฆฌ)์‚ฌ์—์„œ rel=noopener๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋Š” ํŒจ์น˜๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์ทจ์•ฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<a href="https://bad.example.com" target="_blank">Click</a>

๋ณ„๋„๋กœ rel=opener ์ฒ˜๋Ÿผ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š๋Š” ํ•œ opener๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค.

1414

window.open

window.open() ๊ณผ ๊ฐ™์ด javascript ๋‹จ์—์„œ child page๋ฅผ ์—ฌ๋Š” ๊ฒฝ์šฐ _blank ์™€ ๋™์ผํ•˜๊ฒŒ ๋ถ€๋ชจ์ฐฝ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ œ์–ด๊ถŒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<html>
 <body>
  <button onclick="window.open('https://bad.example.com')">Click</button>
 </body>
</html>

๐Ÿ—ก Offensive techniques

Detect

reverse tabnabbing์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„  ์„œ๋น„์Šค์—์„œ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” rel="opener" ๊ฐ€ ๋ช…์‹œ๋œ ์•ต์ปคํƒœ๊ทธ(a tag)๋ฅผ ์ฐพ๊ฑฐ๋‚˜ HTML ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์ด ์žˆ๋‹ค๋ฉด XSS์™€ ๋น„์Šทํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Exploitation

parents page๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— parents page์˜ document.locaion ๋“ฑ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๋กœ ์ด๋™์‹œ์ผœ ์‚ฌ์šฉ์ž์˜ ์ค‘์š” ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด๋ฉด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด _blank ์ธ ๊ฒฝ์šฐ child ์—์„œ parents์˜ ์ผ๋ถ€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ ํด๋ฆญ ์‹œ reverse-tabnabbing-1 ํŽ˜์ด์ง€๋Š” ๋ถ€๋ชจ ํŽ˜์ด์ง€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์ง‘๋‹ˆ๋‹ค.

<a href="https://www.hahwul.com/phoenix/reverse-tabnabbing-1" target="_blank">Click me</a>

https://www.hahwul.com/phoenix/reverse-tabnabbing

child page์ธ reverse-tabnabbing-1 ๋กœ ์ ‘๊ทผํ•ด๋ณด๋ฉด ์†Œ์Šค์ฝ”๋“œ๋‹จ์— ์•„๋ž˜์™€ ๊ฐ™์ด opener ์˜ location์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1414

์ด๋กœ์ธํ•ด ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„ parent page์˜ document.location์ด //www.hahwul.com/phoenix/reverse-tabnabbing-2 ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉฐ ํ”ผ์‹ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1415

MITM

๋ณดํ†ต์€ ํ”ผ์‹ฑ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€๋งŒ ๋งŒ์•ฝ child page๊ฐ€ http๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ response ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜์—ฌ parents page๋ฅผ ์ผ๋ถ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘ ํ•˜๋‚˜ ์ •๋„๋กœ ์ƒ๊ฐํ•ด๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿ›ก Defensive techniques

๋Œ€์‘์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. a ํƒœ๊ทธ์™€ ๊ฐ™์€ ๋งํฌ๋“ฑ์—์„œ target=_blank ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๊ฑฐ๋‚˜ rel ์†์„ฑ์œผ๋กœ ๋”ฐ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • rel=noopener
  • rel=noreferrer
  • rel=noopener noreferrer

๋‹ค๋งŒ noopener๊ฐ€ ๊ฐ ๋ธŒ๋ผ์šฐ์ €์‚ฌ์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ rel์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ noopener๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ธฐ ๋–„๋ฌธ์— rel=opener ๋กœ ๋ช…์‹œํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://chromium-review.googlesource.com/c/chromium/src/+/1630010

window.open์˜ ๊ฒฝ์šฐ javascript ๋‹จ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋–„๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•œ window.open์˜ ๋งํฌ ๋ถ€๋ถ„์ด ์‹ ๋ขฐ๋ฐ›๋Š” ๋„๋ฉ”์ธ์ธ์ง€ ์ฒดํฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ window.open ๋“ฑ ์ผ๋ถ€ ๋ฆฌ์Šคํฌ๊ฐ€ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์ œํ•œํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Referrer-Policy: no-referrer ํ—ค๋” ๋“ฑ์„ ํ†ตํ•ด์„œ HTTP ํ”„๋กœํ† ์ฝœ๋‹จ์—์„œ๋„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ•น Tools

๐Ÿ“Œ References

Licensed under CC BY-NC-SA 4.0
Last updated on Aug 28, 2021 00:36 +0900