개요
IDN(Internationalized Domain Names)는 ASCII가 아닌 다른 문자(Unicode)를 포함한 도메인을 의미합니다.
사용자가 도메인에 IDN을 입력하게 되면 2단계(Normalization, Punycoding)를 거쳐 ASCII 형태의 도메인으로 나타나게 됩니다.
1. Normalization
여러 형태의 값을 하나의 값으로 변경시켜주는 단계로써 수 많은 Unicode를 표준화하는 작업입니다.
2. Punycoding
실질적으로 Unicode의 값을 ASCII 코드로 변경하는 단계입니다.
KISA에서 제공하는 퓨니코드 변환기가 있으니 참고하시길 바랍니다.
분석
이 2 단계 중 Normalization에서 Host Split 취약점이 발생하게 되는데, 간단히 예를 들면 etℍsms.co.kr 이 ethsms.co.kr 로 인식되는 것을 의미합니다. 이를 이용한 공격이 Host Split 취약점입니다.
Before에 입력된 글자들이 Host Split Attack에서 사용되는 글자들 중 일부이며, Normalization 과정을 통하여 After에 대응하는 글자로 변경됩니다.
Before | After |
¼ | 1/4 |
℀ | a/c |
⁈ | ?! |
/ | / |
# | # |
@ | @ |
: | : |
⒈ |
1. |
﹇ |
즉, test.c℀.office.com 으로 입력된 IDN의 경우 test.ca/c.office.com 으로 해석되어 공격에 이용될 수 있습니다.
Host Spoofing외에도 Open Redirect, SSRF 등 여러 취약점에서 이용될만한 기법일 것 같습니다.
Reference
http://unicode.org/reports/tr15/#Compatibility_Equivalence_Figure
'Hack > Web' 카테고리의 다른 글
Reflected File Download (0) | 2020.09.22 |
---|---|
Phar 파일을 이용한 PHP Unserialization (0) | 2020.09.22 |
commons-fileupload Module WAF Filtering Bypass (0) | 2020.09.21 |
CVE 2020-10487 (Ghostcat : Tomcat AJP) (0) | 2020.09.21 |
Nginx off by slash fail (0) | 2020.09.21 |
댓글