ãã¡ã¤ã¢ã¦ã©ã¼ã«å ã®ãµã¼ãã«å¯¾ããShellshockãå©ç¨ããæ»æ
æ¡ä»¶ã¨ãã¦ã¯ã
- ãã®ãµã¼ãã«ã¯ã·ã§ã«ãçµç±ãã¦å¤é¨ã³ãã³ããèµ·åããCGIçãåãã¦ãã(é常ã®Shellshockã®æ»æã¨åæ¡ä»¶)
- æ»æè ããã®URLãäºåã«ç¥ã£ã¦ãã(ãããã¯æ¨æ¸¬å¯è½)
ã¨ãªãã¾ãã
æ»æè
ã¯ãã¦ã¼ã¶ã¼ãç½ URLã¸èªå°ãã以ä¸ã®ãããªJavaScriptãç½ ãã¼ã¸ä¸ã§åãããæ»æå¯¾è±¡ã®Webã¢ããªã±ã¼ã·ã§ã³ã¸XHRçµç±ã§ãªã¯ã¨ã¹ããçºè¡ãã¾ãã
var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://192.168.1.1/shellshock-vulnerable.cgi", true ); // ãã¡ã¤ã¢ã¦ã©ã¼ã«å ã®URL xhr.onload = function(){}; xhr.setRequestHeader( "Accept", "() { :;}; ping -c 3 my-site.example.jp" ); xhr.send( null );
XHRã«ããAcceptãããã®å¤æ´ã§ã¯ãã¯ãã¹ãªãªã¸ã³ã®ãªã¯ã¨ã¹ãã§ãpreflightãªã¯ã¨ã¹ããçºè¡ãããªããããä¸è¨JavaScriptã«ãã£ã¦ãã¡ã¤ã¢ã¦ã©ã¼ã«å ã®CGIã«å¯¾ãã¦æ£å¸¸ã«ãªã¯ã¨ã¹ããçºè¡ããã¾ããCGIã§ã¯Acceptã«æå®ãããæååãç°å¢å¤æ° HTTP_ACCEPT ã«è¨å®ãããããããã®æååãã³ãã³ãã¨ãã¦å®è¡ããã¦ãã¾ãã¾ãã
ããã¾ã§ãããã¡ã¤ã¢ã¦ã©ã¼ã«å ã®ãµã¼ããã¨èª¬æãã¾ãããããã¡ã¤ã¢ã¦ã©ã¼ã«å ã«éããBASICèªè¨¼ã§ä¿è·ããã¦ãããµã¼ãã§ãã£ã¦ãå ¨ãåæ§ã«ããã°ã¤ã³æ¸ã¿ã®ã¦ã¼ã¶ã¼ãç½ URLã¸èªå°ãããã¨ã§æ»æãå¯è½ã¨ãªãã¾ãã
該å½ãµã¼ãä¸ã®Shellshockæ»æãé©ç¨ããURLãç¥ããã¦ããã¨ããã ãã§æ»æå¯è½ã«ãªãã¾ãã®ã§ã伿¥å çã®ãµã¼ãã§ãã£ã¦ãå¯è½ãªéãéããã«ãããã®é©ç¨ããã¾ãããã
ãããã以ä¸ã¯2014-09-27ã«å¤æ´ããããåã®è¨è¿°ã§ã䏿£ç¢ºãªå 容ã§ãã
ä¼ç¤¾ã®ããã°ã«ãæ¸ãã¦ã¾ããããã¡ã¤ã¢ã¦ã©ã¼ã«å
ã«ç½®ãã¦ãããµã¼ãã§æ»æè
ãç´æ¥ã¢ã¯ã»ã¹ã§ããªãããã¨ãã£ã¦bashã®æ´æ°ãæ ã£ã¦ããã¨ãæ¡ä»¶ã«ãã£ã¦ã¯æ»æãå¯è½ã¨ãªãã¾ãã
æ¡ä»¶ã¨ãã¦ã¯ã
- ãã®ãµã¼ãã«ã¯ã·ã§ã«ãçµç±ãã¦å¤é¨ã³ãã³ããèµ·åããCGIçãåãã¦ãã(é常ã®Shellshockã®æ»æã¨åæ¡ä»¶)
- ãã®ãµã¼ãã«ã¯XSSã®ããWebã¢ããªã±ã¼ã·ã§ã³ãåå¨ãã¦ãã夿´ï¼ãã®æ¡ä»¶ã¯æ»æè ã«ã¯ä¸è¦)
- æ»æè ã¯1.ããã³2.ã®ä¸¡æ¹ã®URLãäºåã«ç¥ã£ã¦ãã(ãããã¯æ¨æ¸¬å¯è½)
ã¨ãªãã¾ãã
æ»æè
ã¯ãã¦ã¼ã¶ã¼ãç½ URLã¸èªå°ãã2.ã®XSSãåå¨ãããã¼ã¸ãå©ç¨ãã¦ä»¥ä¸ã®ãããªJavaScriptãæ»æå¯¾è±¡ã®Webã¢ããªã±ã¼ã·ã§ã³ä¸ã§åããã¾ãã
var xhr = new XMLHttpRequest(); xhr.open( "GET", "/shellshock-vulnerable.cgi", true ); xhr.onload = function(){}; xhr.setRequestHeader( "X-test", "() { :;}; ping -c 3 my-site.example.jp" ); xhr.send( null );
XMLHttpRequestã«ãã£ã¦ã«ã¹ã¿ã ããããä»ä¸ãããã¨ã§CGIã¸ã¯æ°ããªç°å¢å¤æ°ã容æã«ä¸ãããã¨ãã§ãã¾ããã¾ããã¯ãã¹ãªãªã¸ã³ã§ã®XMLHttpRequestã«ãããªã¯ã¨ã¹ãã®çºè¡ã§ã¯ã«ã¹ã¿ã ããããã¤ãã¦ããå ´åã«ã¯preflightã¨å¼ã°ãããªã¯ã¨ã¹ããäºåã«çºè¡ãããããã«é常ã¯CGIã¯èµ·åãã¾ããããXSSã«ãã£ã¦åä¸ãªãªã¸ã³å ã§ã®ãªã¯ã¨ã¹ãã¨ãªãããã«ãããã£ãå¶ç´ãçºçãã¾ããã
ããã«ããã対象ãµã¤ãä¸ã§ã¯CGIã®åä½ã«ä¼´ãç°å¢å¤æ°å ã®æååãã³ãã³ãã¨ãã¦å®è¡ããã¦ãã¾ãã¾ãã
ããã¾ã§ãããã¡ã¤ã¢ã¦ã©ã¼ã«å ã®ãµã¼ããã¨èª¬æãã¾ãããããã¡ã¤ã¢ã¦ã©ã¼ã«å ã«éããBASICèªè¨¼ã§ä¿è·ããã¦ãããµã¼ãã§ãã£ã¦ãå ¨ãåæ§ã«ããã°ã¤ã³æ¸ã¿ã®ã¦ã¼ã¶ã¼ãç½ URLã¸èªå°ãã¦XSSãçµç±ãããã¨ã§æ»æãå¯è½ã¨ãªãã¾ãã
該å½ãµã¼ãä¸ã«XSSããããã¨ã»æ»æè ããããã®URLãç¥ã£ã¦ãããã¨ã¨ããæ¡ä»¶ã¯ç¾å®çã«ã¯ç°¡åã«ã¯åå¨ãå¾ãªãããç¥ãã¾ããããã¨ã¯ããããã¡ã¤ã¢ã¦ã©ã¼ã«å ãªã®ã§å¤§ä¸å¤«ãã¨ããå®å¿ããã¦ããããªãã¨ãããã¨ã«ãªãã¾ãã伿¥å çã®ãµã¼ãã§ãã£ã¦ãå¯è½ãªéãéããã«ãããã®é©ç¨ããã¾ãããã
ï¼XSSã使ããªãªãã¦ããã¯ãã¹ãªãªã¸ã³ã§ç°¡åã«ç°å¢å¤æ°ãè¨å®ã§ãããããªãªã¯ã¨ã¹ãã®æãæ¹ãç¥ã£ã¦ã人ãããæãã¦ãã ããï¼ï¼