2021. 6. 22. 20:18ㆍ문제연습/webhacking.kr
본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.
모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.
Webhacking.kr
old-19번 문제풀이
이번 문제는 쿠키, 세션 값 생성 과정에서 발생하는 논리 모순을 이용하는 문제입니다.
잘못된 쿠키, 세션 값 생성 알고리즘을 이용하는 것은 관리자로 하여금 안전하다는 잘못된 인식을 만드는 것뿐만 아니라 시스템의 잠재적인 위험성에 노출되게 하는 것이므로 매우 위험한 취약점들 중 하나입니다.
그럼 오늘의 문제 풀이를 진행해 보도록 하겠습니다.
1. 접속 화면
아무 설명 없이 그냥 화면에 로그인 폼 하나만 존재하며, admin으로 로그인을 시도하면 다음과 같은 문구가 출력되면서 다시 로그인 창으로 이동합니다.
owasp에서 제공하는 웹 점검용 스파이더링 툴을 이용해 숨겨진 경로가 있는지 확인해 봤지만 특별한 경로는 발견되지 않았습니다.
2. 분석 & Exploit!!!
임의적으로 아무 이름을 넣고 로그인을 하니 다음과 같은 결과가 나타났습니다.
해당 쿠키 값을 확인해 보니 url 인코딩이 되어있으며 마지막 값이 %3d여서 base64 인코딩이 한 번 더 진행한 것으로 의심됩니다.
디코딩 결과는 다음과 같습니다.
입력 값 | URL decoding | base64 decoding |
asdf | MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjEwM2M3YzBhY2UzOTVkODAxODJkYjA3YWUyYzMwZjAzNDgyNzdlMDkxMGQ3NTAxOTViNDQ4Nzk3NjE2ZTA5MWFkOGZhMTRjZGQ3NTRmOTFjYzY1NTRjOWU3MTkyOWNjZTc= | 0cc175b9c0f1b6a831c399e26977266103c7c0ace395d80182db07ae2c30f0348277e0910d750195b448797616e091ad8fa14cdd754f91cc6554c9e71929cce7 |
혹시 쿠키 값 생성 로직에 취약점이 있는 게 아닌가 의심이 들어서 다음과 같은 테스트를 진행하였습니다.
입력 값 | URL decoding | base64 decoding |
a | MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE= | 0cc175b9c0f1b6a831c399e269772661 |
s | MDNjN2MwYWNlMzk1ZDgwMTgyZGIwN2FlMmMzMGYwMzQ= | 03c7c0ace395d80182db07ae2c30f034 |
d | ODI3N2UwOTEwZDc1MDE5NWI0NDg3OTc2MTZlMDkxYWQ= | 8277e0910d750195b448797616e091ad |
f | OGZhMTRjZGQ3NTRmOTFjYzY1NTRjOWU3MTkyOWNjZTc= | 8fa14cdd754f91cc6554c9e71929cce7 |
즉, 쿠키 값을 생성할 때 철자에 따른 생성 값의 base64 디코딩 값이 위와 겹치는 것을 알 수 있습니다.
0cc175b9c0f1b6a831c399e269772661 -> a
03c7c0ace395d80182db07ae2c30f034 -> s
8277e0910d750195b448797616e091ad -> d
8fa14cdd754f91cc6554c9e71929cce7 -> f
즉, admin이라는 값에 해당하는 userid 쿠키 값을 만들어 준다면 로그인이 가능할지도 모릅니다.
입력 값 | URL decoding | base64 decoding |
a | MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE= | 0cc175b9c0f1b6a831c399e269772661 |
d | ODI3N2UwOTEwZDc1MDE5NWI0NDg3OTc2MTZlMDkxYWQ= | 8277e0910d750195b448797616e091ad |
m | NmY4ZjU3NzE1MDkwZGEyNjMyNDUzOTg4ZDlhMTUwMWI= | 6f8f57715090da2632453988d9a1501b |
i | ODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE= | 865c0c0b4ab0e063e5caa3387c1a8741 |
n | N2I4Yjk2NWFkNGJjYTBlNDFhYjUxZGU3YjMxMzYzYTE= | 7b8b965ad4bca0e41ab51de7b31363a1 |
admin's cookies : url_Encode( base64_Encode(admin) )
0cc175b9c0f1b6a831c399e2697726618277e0910d750195b448797616e091ad6f8f57715090da2632453988d9a15
01b865c0c0b4ab0e063e5caa3387c1a87417b8b965ad4bca0e41ab51de7b31363a1
-> base64 encode
MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFh
ZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxY
Tg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==
-> url encode
MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFh
ZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxY
Tg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ%3D%3D
Clear!!!
'문제연습 > webhacking.kr' 카테고리의 다른 글
old-2_풀이 (0) | 2021.06.23 |
---|---|
old-47_풀이(보류) (0) | 2021.06.23 |
old-21_풀이 (0) | 2021.06.12 |
old-12_풀이 (0) | 2021.06.10 |
old-24_풀이 (0) | 2021.06.06 |