SOME - Same Origin Method Execution

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 μ§€μ›ν•˜κΈ°

Same Origin Method Execution

νŽ˜μ΄μ§€μ—μ„œ μ œν•œλœ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 싀행될 콜백 값을 μ œμ–΄ν•  수 μžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€.

이 경우, ν•  수 μžˆλŠ” κ°€μž₯ 쒋은 일 쀑 ν•˜λ‚˜λŠ” DOM에 μ ‘κ·Όν•˜μ—¬ κ·Έ μ•ˆμ—μ„œ 찾을 수 μžˆλŠ” λ―Όκ°ν•œ μž‘μ—…(예: λ²„νŠΌ 클릭)을 ν˜ΈμΆœν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 일반적으둜 이 취약점은 DOM에 ν₯미둜운 것이 μ—†λŠ” μž‘μ€ μ—”λ“œν¬μΈνŠΈμ—μ„œ λ°œκ²¬λ©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 이 곡격은 맀우 μœ μš©ν•©λ‹ˆλ‹€. κ·Έ μ΄μœ λŠ” 같은 λ„λ©”μΈμ˜ λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œ DOM λ‚΄μ˜ μ œν•œλœ JS 싀행을 μ•…μš©ν•  수 μžˆλŠ” 것이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

기본적으둜 곡격 흐름은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • μ•…μš©ν•  수 μžˆλŠ” μ½œλ°±μ„ μ°ΎμŠ΅λ‹ˆλ‹€ (잠재적으둜 [\w\._]둜 μ œν•œλ¨).
  • μ œν•œμ΄ μ—†κ³  λͺ¨λ“  JSλ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€λ©΄, 일반 XSS둜 이λ₯Ό μ•…μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”Όν•΄μžκ°€ κ³΅κ²©μžκ°€ μ œμ–΄ν•˜λŠ” νŽ˜μ΄μ§€λ₯Ό 열도둝 λ§Œλ“­λ‹ˆλ‹€.
  • νŽ˜μ΄μ§€κ°€ λ‹€λ₯Έ μ°½μ—μ„œ μ—΄λ¦½λ‹ˆλ‹€ (μƒˆ 창은 초기 νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜λŠ” opener 객체λ₯Ό κ°€μ§‘λ‹ˆλ‹€).
  • 초기 νŽ˜μ΄μ§€λŠ” ν₯미둜운 DOM이 μœ„μΉ˜ν•œ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•©λ‹ˆλ‹€.
  • 두 번째 νŽ˜μ΄μ§€λŠ” μ½œλ°±μ„ μ•…μš©ν•˜μ—¬ μ·¨μ•½ν•œ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•˜κ³  opener 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ 초기 νŽ˜μ΄μ§€μ—μ„œ μ–΄λ–€ μž‘μ—…μ„ μ ‘κ·Όν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€ (이제 ν₯미둜운 DOM을 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€).

Caution

초기 νŽ˜μ΄μ§€κ°€ 두 번째 νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•œ ν›„ μƒˆ URL에 μ ‘κ·Όν•˜λ”λΌλ„, 두 번째 νŽ˜μ΄μ§€μ˜ opener κ°μ²΄λŠ” μ—¬μ „νžˆ μƒˆ DOMμ—μ„œ 첫 번째 νŽ˜μ΄μ§€μ— λŒ€ν•œ μœ νš¨ν•œ μ°Έμ‘°μž…λ‹ˆλ‹€.

λ˜ν•œ, 두 번째 νŽ˜μ΄μ§€κ°€ opener 객체λ₯Ό μ‚¬μš©ν•  수 있으렀면 두 νŽ˜μ΄μ§€κ°€ λ™μΌν•œ μΆœμ²˜μ— μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이것이 이 취약점을 μ•…μš©ν•˜κΈ° μœ„ν•΄ λ™μΌν•œ μΆœμ²˜μ—μ„œ XSSλ₯Ό μ°Ύμ•„μ•Ό ν•˜λŠ” μ΄μœ μž…λ‹ˆλ‹€.

Exploitation

  • 이 ν˜•μ‹μ„ μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ μœ ν˜•μ˜ 취약점을 μ•…μš©ν•˜κΈ° μœ„ν•œ PoCλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€: https://www.someattack.com/Playground/SOMEGenerator
  • 클릭할 HTML μš”μ†Œμ— λŒ€ν•œ DOM 경둜λ₯Ό μ°ΎκΈ° μœ„ν•΄ 이 λΈŒλΌμš°μ € ν™•μž₯ ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: https://www.someattack.com/Playground/targeting_tool

Example

  • https://www.someattack.com/Playground/μ—μ„œ μ·¨μ•½ν•œ 예제λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 이 μ˜ˆμ œμ—μ„œ μ„œλ²„λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μƒμ„±ν•˜κ³  콜백 λ§€κ°œλ³€μˆ˜μ˜ λ‚΄μš©μ— 따라 HTML에 μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€: <script>opener.{callbacl_content}</script> . κ·Έλž˜μ„œ 이 μ˜ˆμ œμ—μ„œλŠ” opener의 μ‚¬μš©μ„ λͺ…μ‹œν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
  • 이 CTF μž‘μ„±λ¬Όλ„ ν™•μΈν•˜μ„Έμš”: https://ctftime.org/writeup/36068

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 μ§€μ›ν•˜κΈ°