Hacking/Wargame

Wargame ) Type Confusion

proggg 2020. 7. 9. 16:15

κ°„λ‹¨ν•œ Compare 에 κ΄€ν•œ μ·¨μ•½μ μœΌλ‘œ 보여진닀. 

 

νŽ˜μ΄μ§€ μžμ²΄λŠ” λ³Ό ν’ˆ μ—†λ‹€. μ†ŒμŠ€λ₯Ό μ‚΄νŽ΄λ³΄μž.

php λ₯Ό μ‚¬μš©ν•˜λ©°, μž…λ ₯받은 값을 key 둜 μ‚¬μš©ν•˜κ³  json ν˜•νƒœλ‘œ μ„œλ²„μ— μ „μ†‘ν•˜λŠ” κ²ƒμœΌλ‘œ 보여진닀. 그리고 submit_check ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯κ°’ 검증도 ν•˜λŠ” 것 처럼 보여진닀.

이 뢀뢄을 보면, POST ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 전솑 된 json ν˜•νƒœμ˜ 값을 κ°€μ Έμ˜¨λ‹€. 그리고 μ„œλ²„μ—μ„œ μƒμ„±ν•œ key κ°’κ³Ό μ‚¬μš©μžκ°€ μž…λ ₯에 보낸 값을 '==' λ™λ“±μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ λΉ„κ΅ν•œλ‹€. 비ꡐ와 κ΄€λ ¨ 된 μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄μ•„μ•Όκ² λ‹€. 

μ„œλ²„μ—μ„œ κ°€μ Έμ˜¨ js μ—μ„œλŠ” submitκ³Ό submit_check ν•¨μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€. submit ν•¨μˆ˜μ—μ„œλŠ” submit_check μ—μ„œ κ²€μ¦ν•œ μž…λ ₯값을 인자둜 μ‚¬μš©ν•˜λŠ”λ° 이 μ‚¬μ΄μ—μ„œ λ°œμƒκ°€λŠ₯ν•œ 취약점이닀. submit_check μ—μ„œ submit 으둜 λ„˜κΈ°λŠ” 쀑에 λ°μ΄ν„°μ˜ λ³€μ‘° (key = true ; )κ°€ μΌμ–΄λ‚œλ‹€λ©΄ μž…λ ₯값을 ν•œλ²ˆλ” κ²€μ¦ν•˜μ§€ μ•ŠλŠ” submit ν•¨μˆ˜μ—μ„œλŠ” κ·ΈλŒ€λ‘œ true κ°’μœΌλ‘œ 인식할 것 이고, ν”Œλž˜κ·Έλ₯Ό λ„˜κ²¨μ€„ 것이닀.

 

ν•΄λ‹Ή ν•¨μˆ˜λ“€μ„ λͺ¨λ‘ λ³΅μ‚¬ν•˜μ—¬, μ½˜μ†”μ—μ„œ 재 μ •μ˜ ν•˜λ„λ‘ ν•˜κ² λ‹€.

사싀 μ΄λŸ°μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό 재 μ •μ˜ ν•  수 μžˆλŠ”μ§€λŠ” λͺ°λžλ‹€. λ¬Όλ‘  submit 은 μ„œλ²„μ™€ ν†΅μ‹ ν•˜λŠ” λΆ€λΆ„μ΄μ§€λ§Œ submit_check λŠ” λ‘œμ»¬μ—μ„œ κ°€μ Έμ˜¨ 값을 μ΄μš©ν•˜λŠ” 것이기 λ•Œλ¬Έμ— submit_check μ—μ„œ key 값을 전솑전에 true 둜 λ°”κΎΈμ–΄μ€€λ‹€. 

 

μ΄λ ‡κ²Œ ν•œλ‹€λ©΄ , μ–΄λ–€ 값을 μž…λ ₯창에 μž…λ ₯해도 μ„œλ²„μ— 전솑 직전에 true 둜 λ°”κΎΈμ–΄ 버리기 λ•Œλ¬Έμ— μ„œλ²„μ—μ„œλŠ” 항상 true κ°’λ§Œμ„ λ°›κ²Œ λœλ‹€.

 

ν’€κΈ΄ν–ˆμ§€λ§Œ 사싀 type confusion 이라기 보닀, input validation 취약점을 μ΄μš©ν–ˆλ‹€κ³  ν•  μˆ˜λ„ μžˆκ² λ‹€. μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ type confusion 문제λ₯Ό webgoat 8.0 μ—μ„œ 풀어본적이 μžˆλ‹€. XXE(XML Externel Entity ) μ—μ„œ Modern REST framework λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ JSON 객체λ₯Ό λ°›μ•„ μ²˜λ¦¬ν•˜λŠ” 뢀뢄이 XXE 곡격에 μ·¨μ•½ν•  수 μžˆλ‹€λŠ” μ μ΄μ—ˆλ‹€. 예λ₯Ό λ“€μ–΄ Json 객체λ₯Ό μ΄μš©ν•˜λ €ν–ˆλ˜ μ„œλ²„μ—μ„œ XML 객체λ₯Ό 보내도 μž‘λ™μ„ ν•œλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€.  뭐 μ–΄μ¨Œλ“  type confusion 의 의미λ₯Ό λ‹€ 살리지 λͺ»ν•œ ν’€μ΄μ—ˆλ˜κ²ƒ κ°™λ‹€.

'Hacking > Wargame' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Wargame ) EASY_Crackme  (0) 2020.07.12
Wargame ) Web Chatting  (0) 2020.07.11
Wargame ) tmitter  (0) 2020.07.09
Wargame ) Fly me to the moon  (0) 2020.07.07
Wargame ) MD5 Compare  (0) 2020.07.06