Wargame & CTF/SegFault

[SegFault] (Authentication Bypass) - PIN Code Bypass

Gearvirus(junyup2) 2023. 12. 6. 04:00

[SegFault] Authentication Bypass (Code)

PIN CODE Bypass.

핡미사일 μ‹œμŠ€ν…œ μ ‘κ·Ό κΆŒν•œμ„ νšλ“ν–ˆλ‹€! λ°œμ‚¬λ§Œ λ‚¨μ•˜λ‹€! κ°€μž!!!

문제 νŒŒμ•…

  • μœ„μ˜ νŽ˜μ΄μ§€μ— μ ‘μ†ν•˜λ©΄ μ•„λž˜μ™€ 같은 화면이 λ‚˜μ˜¨λ‹€.

  • Burp Suite을 μ΄μš©ν•˜μ—¬ μƒνƒœμ½”λ“œ(Status code) ν™•μΈν•œλ‹€.
    • 200 OK (접속)
    • 200 OK (Fire)
    • 200 OK (확인)
    • 200 OK (인증)


생각 κ³Όμ •

생각 κ³Όμ •
1. νŒŒλΌλ―Έν„° admin_passκ°€ λ„˜μ–΄κ°€μ§€λ§Œ, μ•Œμ•„λ‚Ό 방법이 μ•ˆλ³΄μΈλ‹€.
2. 그런데? URL을 보면 Step으둜 단계가 λ„˜μ–΄κ°€λŠ” 것을 확인할 수 μžˆλ‹€.
3. 직접 μ ‘κ·Ό μ‹œλ„ ν•΄λ³΄μž!!
4. Step1.php μ—μ„œ Step2.php둜 λ„˜μ–΄κ°€λ‹ˆκΉŒ?
5. λ‹€μŒμ€ Step3.phpκ°€ μ•„λ‹κΉŒ?

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

1. Intercept On 으둜 λ°”κΏ”μ€€λ‹€.

2. μž¬μš”μ²­(Request) : μƒˆλ‘œ κ³ μΉ¨(νŽ˜μ΄μ§€ λ¦¬λ‘œλ”©)ν•˜μ—¬ νŽ˜μ΄μ§€λ₯Ό μž¬μš”μ²­ ν•΄μ€€λ‹€.

3. Intercept μ—μ„œ GET /3/step2.php?admin_pass= λ₯Ό GET /3/step3.php 둜 고쳐쀀 ν›„ Forward ν•΄μ€€λ‹€.

4. λΈŒλΌμš°μ € μ°½ 및 νžˆμŠ€ν† λ¦¬(HTTP history)λ₯Ό 확인 ν•΄λ³΄μž!

  • Edited μ— 체크된 μƒνƒœ(μš”μ²­μ΄ μˆ˜μ •λœ μƒνƒœ)의 μ‘λ‹΅μž„μ„ 확인 κ°€λŠ₯
  • λ°”λ‘œ λ¦¬λ””λ ‰μ…˜ 되며, 경고창에 Flagλ₯Ό 확인 κ°€λŠ₯ν•˜λ‹€.

  • μš”μ²­(Request)κ³Ό μ‘λ‹΅(Response)λ₯Ό μ‚΄νŽ΄ 보자 !

  •  Step3.php둜 고친 μš”μ²­μ˜ μ‘λ‹΅μœΌλ‘œ, μš”μ²­(Request)λΆ€λΆ„μ—μ„œ /3/gogoHack.php 경둜둜 λ¦¬λ””λ ‰μ…˜λ˜λŠ” 것을 확인할 수 μžˆλ‹€.

5. 응닡(Response)의 alert λΆ€λΆ„μ—μ„œ Flag 확인 κ°€λŠ₯ν•˜λ‹€.


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

(μœ μΆ”λ₯Ό ν†΅ν•œ) 직접 μ ‘κ·Ό

λ³Έ λ¬Έμ œμ—μ„œλŠ” 인증의 κ³Όμ •μ—μ„œ λ‹€μŒ νŽ˜μ΄μ§€μ— λŒ€ν•œ 이름을 μœ μΆ”ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ§„ κ²½μš°μ˜€λ‹€.
step1, step2, step3 와 같이 λˆ„κ°€ 봐도 λ‹€μŒ νŽ˜μ΄μ§€κ°€ μ˜ˆμƒλ˜λŠ” 경우라고 ν•  수 μžˆλ‹€.

λ˜ν•œ 과정을 λ„˜μ–΄κ°€λŠ” 경우 인증이 ν•„μš”μ—†λ‹€λŠ” 것도 λ¬Έμ œμ΄λ‹€. ν•΄λ‹Ή νŽ˜μ΄μ§€μ—μ„œλŠ” 좔가적인 인증이 μ—†λ‹€λŠ” 것이닀.

μ—¬κΈ°μ„œ 생각해볼 점은 λ‹€μŒκ³Ό κ°™λ‹€.
직접(direct) 접근을 ν†΅ν•˜μ—¬ 절차(Process)λ₯Ό λ›°μ–΄ λ„˜μ—ˆλ‹€λŠ” 것이 문제이기 λ•Œλ¬Έμ— '인증' 을 λ›°μ–΄ λ„˜μ€ 인증 μ·¨μ•½μ μ΄λΌλŠ” 생각을 ν•΄λ³Ό 수 μžˆλ‹€.
ν•˜μ§€λ§Œ μ›λž˜ λͺ»ν•˜λŠ” 건데 ν•  수 μžˆμ—ˆκΈ° λ•Œλ¬Έμ— 인가 취약점이라고도 ν•  수 μžˆλŠ” 것이 μ•„λ‹κΉŒ? λΌλŠ” 생각을 ν•  수 μžˆλ‹€.
(μ—¬κΈ°μ„œλŠ” λŒ€μ‘λ°©μ‹μ— λŒ€ν•˜μ—¬ μ‚΄νŽ΄λ΄μ•Όν•œλ‹€.)
λŒ€μ‘ 방식은 인증을 λ›°μ–΄ λ„˜μ–΄μ„œ λ°œμƒν•œ 것이기 λ•Œλ¬Έμ— 이것을 κ³ μΉ˜ν•œλ‹€λŠ” κ΄€μ μ—μ„œ 인증 취약점이 λ§žλ‹€.

ν•˜μ§€λ§Œ 절차λ₯Ό λ›°μ–΄ λ„˜μ€ 뒀에 λ²„νŠΌμ΄ λˆŒλ¦¬λŠ” λΆ€λΆ„μ—μ„œλŠ” 좔가적인 κΆŒν•œμ˜ 확인이 없이 눌렸기 λ•Œλ¬Έμ— 인가 μ·¨μ•½μ μœΌλ‘œλ„ 뢄리할 수 μžˆλ‹€λŠ” 것이닀.

(μ΄λ ‡κ²Œ μ–΄λŠμ •λ„ 주관이 λ“€μ–΄κ°€λŠ” λΆ€λΆ„μœΌλ‘œμ„œ, μ„€λͺ…λ§Œ ν•  수 μžˆλ‹€λ©΄?! 취약점이 λœλ‹€.!)

 

ν•΄λ‹Ή μ·¨μ•½μ μ˜ 좔가적 μ˜ˆμ‹œ

본인 인증을 μš°νšŒν•˜λŠ” κ²½μš°μ— 많이 μ‚¬μš©λœλ‹€.

ex) νšŒμ› κ°€μž… 절차
(1) μ•½κ΄€λ™μ˜
(2) 본인인증(νœ΄λŒ€μ „ν™”)
(3) νšŒμ›κ°€μž…
(μ—¬κΈ°μ„œ (2)의 인증 μ ˆμ°¨μ—†μ΄ κ±΄λ„ˆλ›°κ³  νšŒμ› κ°€μž…μ΄ κ°€λŠ₯ν•œ 경우)

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