Archive for Dev. (junyup2)

지식을 μ±„μ›Œκ°€λŠ” γ€Žκ°œλ°œμž/ν™”μ΄νŠΈν•΄μ»€γ€λ₯Ό λͺ©ν‘œλ‘œ μ •λ¦¬ν•˜λŠ” λΈ”λ‘œκ·Έ

Wargame & CTF/SegFault

[SegFault] (Authorization) - authorization 3

Gearvirus(junyup2) 2024. 2. 21. 23:16

[SegFault] Authorization

authorization 3

미사일 λ°œμ‚¬ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ„Έμš”!

문제 νŒŒμ•…

μœ„μ˜ νŽ˜μ΄μ§€μ— λ“€μ–΄κ°€λ©΄ μ•„λž˜μ™€ 같이 λ‚˜μ˜¨λ‹€.

'Fire' λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ 'κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€.' λΌλŠ” μ•Œλ¦Όμ°½λ§Œ λ‚˜μ˜€κ²Œ λœλ‹€.

ν•΄λ‹Ή μš”μ²­μ„ Burpλ₯Ό μ΄μš©ν•˜μ—¬ μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

μœ„μ˜ μš”μ²­μ—μ„œ 보면 λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œμ˜ λ™μž‘μ„ 확인할 수 μžˆλ‹€.

onclick="goMenu('9999', ' ')"

ν•΄λ‹Ή λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œμ˜ goMenu 의 경우 user.jsμ—μ„œ λ™μž‘ν•˜λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

user.js의 goMenu 9999λ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

μœ„μ™€ 같이 ν•΄λ‹Ή 메뉴에 λŒ€ν•œ μ •λ³΄λŠ” λ‚œλ…ν™”λ₯Ό 톡해 μ•ŒκΈ° μ–΄λ ΅κ²Œ μ“°μ—¬μ Έ μžˆμ—ˆλ‹€.

ν•˜μ§€λ§Œ μ€‘μš”ν•œ 것은 ν•΄μ„ν•˜λŠ” 것이 μ•„λ‹ˆλΌλŠ” 생각을 ν•΄μ•Όν•œλ‹€.

λ¬Όλ‘  λ‚œλ…ν™”λ₯Ό 풀어보고, λ‚΄μš©μ„ μ•Œμ•„λ‚΄λŠ” 것도 ν•„μš”ν•  수 μžˆμ§€λ§Œ,  이 λ¬Έμ œμ—μ„œλŠ” ν•΄λ‹Ή switch-case문이 λ“€μ–΄μžˆλŠ” ν•¨μˆ˜ guMenuλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λœλ‹€.

 


생각과정

goMenu ν•¨μˆ˜κ°€ νŒŒλΌλ―Έν„°λ‘œμ„œ code 와 userLevel을 λ°›κ³  μžˆλŠ” 것을 확인할 수 μžˆλ‹€.
codeλŠ” switch-case문의 νŒŒλΌλ―Έν„°μΈ 것을 확인할 수 μžˆλ‹€.

μ•žμ„œμ„œ ν™•μΈν•œ λ²„νŠΌ oncilck 뢀뢄을 μ‚΄νŽ΄λ³΄λ©΄ onclick="goMenu('9999', ' ')" λ‘œμ„œ userLevel 뢀뢄이 λΉ„μ–΄μ Έ μžˆλŠ” μƒνƒœλ‘œ 전달 λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.
κ·ΈλŸ¬λ―€λ‘œ κ΄€λ¦¬μžμΈ admin을 ν•΄λ‹Ή νŒŒλΌλ―Έν„° 뢀뢄에 λ„£μ–΄ μ£Όμ–΄ goMenu('9999', 'admin') 으둜 λ°”κΎΈμ–΄ μš”μ²­ν•΄μ£Όλ©΄ λœλ‹€λŠ” 생각을 ν•΄ λ³Ό 수 μžˆλ‹€.

풀이 κ³Όμ • (ν•΄κ²° λ°©μ•ˆ)

Burp Suite의 interceptλ₯Ό μ΄μš©ν•˜μ—¬ μš”μ²­μ„ λ‹€μŒκ³Ό 같이 λ³€μ‘°ν•΄μ€€λ‹€.

goMenu 에 userLevel을 λ„£μ–΄μ£Όμ–΄ 보낸 ν›„ λ²„νŠΌμ„ λˆŒλŸ¬λ³Έλ‹€.

그럼 λ‹€μŒκ³Ό 같이 flagκ°€ λ‚˜μ˜€λŠ” μ•Œλ¦Όμ°½μ„ 확인할 수 μžˆλ‹€.


취약점에 κ΄€ν•œ κ³ μ°°

λ‚œλ…ν™”λ₯Ό 톡해 μ•Œμ•„λ³΄κΈ° μ–΄λ ΅κ²Œ λ§Œλ“  μ½”λ“œ

js μ½”λ“œ λ‚΄λΆ€λ₯Ό λ‚œλ…ν™” μ‹œν‚¨λ‹€κ³  ν•΄κ²° λ˜λŠ” 것은 μ•„λ‹ˆλ‹€.

λΆ€λΆ„μ μœΌλ‘œ λ‚œλ…ν™” μ‹œν‚€λ”λΌλ„ μ€‘μš”ν•œ ν•¨μˆ˜λ‚˜, νŒŒλΌλ―Έν„° 등이 κ·ΈλŒ€λ‘œ λ…ΈμΆœλ˜μ–΄ μžˆλ‹€λ©΄ κ·Έ λΆ€λΆ„λ§Œμ„ 보고도 우회의 λ°©ν–₯성을 찾을 수 μžˆλ‹€λŠ” 것이닀.

일반적으둜 λ‚œλ…ν™”λ₯Ό ν•˜λ”λΌλ„, λΆ€λΆ„μ μœΌλ‘œ μ•Œμ•„ λ³Ό 수 μžˆλŠ” 것듀이 있기 λ•Œλ¬Έμ— 그런 뢀뢄을 확인해 λ΄μ•Όν•œλ‹€.

 

질문 ν™˜μ˜, μˆ˜μ • 및 보완에 λŒ€ν•œ μ§€μ  ν™˜μ˜