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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android°²È«Ö®Intent Scheme Url¹¥»÷
 
×÷ÕߣºYAQÓù°²È« À´Ô´£º51CTO ·¢²¼ÓÚ£º2016-12-23
  2190  次浏览      27
 

0X01 ǰÑÔ

Intent scheme urlÊÇÒ»ÖÖÓÃÓÚÔÚwebÒ³ÃæÖÐÆô¶¯ÖÕ¶Ëapp activityµÄÌØÊâURL£¬ÔÚÕë¶Ôintent scheme URL¹¥»÷´ó±¬·¢Ö®Ç°£¬ºÜ¶àandroidµÄä¯ÀÀÆ÷¶¼Ö§³Öintent scheme url¡£

Intent scheme urlµÄÒýÈëËäÈ»´øÀ´ÁËÒ»¶¨µÄ±ã½ÝÐÔ£¬µ«´ÓÁíÍâÒ»·½Ãæ¿´£¬¸ø¶ñÒâ¹¥»÷Ò³ÃæÍ¨¹ýintent-based¹¥»÷ÖÕ¶ËÉÏÒѰ²×°Ó¦ÓÃÌṩÁ˱ãÀû£¬¾¡¹Üä¯ÀÀÆ÷appÒѾ­²ÉÈ¡ÁËÒ»¶¨µÄ°²È«²ßÂÔÀ´¼õÉÙÕâÒ»Àà·çÏÕ£¬µ«ÏÔÈ»ÊDz»¹»µÄ¡£

2014Äê3Ô£¬Ò»Æª¹ØÓÚintent scheme url¹¥»÷µÄÎÄÕ£º

Whitepaper ¨C Attacking Android browsers via intent scheme URLs

Ïêϸ½éÉÜÁËÏà¹ØµÄ¹¥»÷ÊÖ·¨£¬Ö®ºó¹úÄڵĩ¶´ÊÕ¼¯Æ½Ì¨ÉÏ¿ªÊ¼±»ÕâÒ»ÀàÐÍ©¶´Ë¢ÆÁ¡£

0X02 Intent scheme url½âÎö

Ò»¸öintent scheme urlµÄʹÓÃʾÀý£º

Èç¹ûä¯ÀÀÆ÷Ö§³Öintent scheme url£¬ÔÚ¼ÓÔØÁ˸ÄwebÒ³Ãæºó£¬½«¸ù¾ÝurlÉú³ÉÒ»¸öintent£¬²¢³¢ÊÔͨ¹ýintent´òÀ´Ö¸¶¨µÄactivity¡£´Ë¹ý³ÌÖÐä¯ÀÀÆ÷µÄÐèÒªÍê³ÉµÄ¹¤×÷¿ÉÒÔ²ð·ÖΪ3²½£º

Step1:

¸ù¾ÝurlÉú³É¶ÔÓ¦µÄintent object£¬´Ë¹ý³Ìͨ¹ýÒÔÏ´úÂëÍê³É£º

Intent intent = Intent.parseUri(url);

intent scheme urlµÄÄÚÈÝ¿ÉÒÔ¸ù¾ÝÒ»ÏÂÓï·¨¹æÔòÉèÖõıȽÏÍêÉÆ£º

intent:

HOST/URI-path // Optional host 
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;

Step2:

intent¹ýÂË£¬°²È«Æð¼û£¬ºÜ¶àä¯ÀÀÆ÷¶Ôstep1ÖеÄintent object½øÐйýÂË£¬ÒÔµÖÓùintent-based¹¥»÷£¬²»ÓõÄä¯ÀÀÆ÷£¬¹ýÂ˹æÔò¸÷²»Ïàͬ¡£

Step3:

×é¼þµ÷Óã¬×îºóÒ»²½¾ÍÊÇʹÓÃstep2¹ýÂ˺óµÄintentµ÷ÓÃÖ¸¶¨µÄ×é¼þ£¬ä¯ÀÀÆ÷ÖÐÒ»°ãʹÓÃContext#startActivityIfNeeded() »òÕß Context#startActivity()·½·¨ÊµÏÖ¡£

ÏÂÃæÊǸ÷´óä¯ÀÀÆ÷¶ÔIntent scheme URLµÄÖ§³ÖÇé¿ö £º

0X03¹¥»÷³¡¾°

Ö÷ÒªÓÉÁ½ÖÖ¹¥»÷³¡¾°¡£

ÀàÐÍ1£ºä¯ÀÀÆ÷¹¥»÷

ÒòΪintentÊÇä¯ÀÀÆ÷ÒÀ¾ÝurlÉú³É²¢ÒÔä¯ÀÀÆ÷×Ô¼ºµÄÉí·Ý·¢Ë͵ģ¬Òò´Ë¹¥»÷Õß¶ñÒâÒ³ÃæÖеÄintent scheme url²»½ö¿ÉÒÔµ÷Æðµ¼³ö×é¼þ£¬»¹¿ÉÒÔµ÷Æð˽ÓÐ×é¼þ¡£

ÀàÐÍ2£ºÖÕ¶ËÉϰ²×°µÄÈÎÒâAPP

intent-based¹¥»÷Ò»°ãÊÇͨ¹ýÖÕ¶ËÉϰ²×°µÄ¶ñÒâappÀ´ÊµÏֵ쬵«Í¨¹ýä¯ÀÀÆ÷¼ÓÔØ°üº¬Ìض¨intent scheme urlµÄ¶ñÒâÒ³Ãæ£¬¿ÉÒÔʵÏÖ¶ÔÖÕ¶ËÉϰ²×°µÄÈÎÒâappÔ¶³Ìintent-based¹¥»÷µÄЧ¹û¡£ÔÚ2013Äê¶«¾©µÄPwn2OwnÉϱÈÈüÉÏ£¬´Î¹¥»÷·½Ê½±»Ó¦ÓÃÓÚ¹¥ÏÝÈýÐÇSamsung Galaxy S4¡£

0X04 ¹¥»÷°¸Àý

ÒÔϽéÉÜÈý¸öä¯ÀÀÆ÷µÄintent scheme url¹¥»÷°¸Àý£¬¹¥»÷Ö÷ÒªÔ´ÓÚÕâЩä¯ÀÀÆ÷ÔÚstep2(Ò²¾ÍÊÇintent¹ýÂ˹ý³Ì)ÖдæÔÚȱÏÝ¡£

Opera mobile for Android cookie theft

Operaä¯ÀÀÆ÷ÖÐȱÉÙintent¹ýÂ˲½Ö裬һ´Î¿ÉÒÔͨ¹ý¶ñÒâÒ³ÃæÖеÄintent scheme urlµ÷Æðä¯ÀÀÆ÷µÄÈÎÒâactivity£¬°üÀ¨Ë½ÓеÄactivity£¬Í¨¹ýÈçϹ¥»÷´úÂë¿ÉÒÔ»ñÈ¡µ½Operaä¯ÀÀÆ÷µÄcookie£º

"com.admarvel.android.ads.AdMarvelActivity"ÊÇOperaä¯ÀÀÆ÷µÄ˽ÓÐ×é¼þ£¬"url=file:///data/data/com.opera.browser/app_opera/cookies"ÊÇOperaä¯ÀÀÆ÷cookieÎļþµÄ´æ·ÅλÖá£

Chrome for Android UXSS (Universal XSS)

ChromeµÄUXSS©¶´ÀûÓÃÏà¶Ô¸´ÔÓ£¬ÕâÀïÏȽéÉÜÒ»ÏÂIntent Selector¡£Intent Selector»úÖÆÌṩһÖÖmain intent²»Æ¥ÅäµÄÇé¿öÏ¿ÉÒÔÉèÖÃÌæ²¹µÄ·½°¸¡£ÈçϵÄintent scheme url£º

ÆäÖС°SEL¡±ÊÇselector intentµÄ±êʶ¡£

ÔÚchromeÖаüº¬ÒÔÏ´úÂ룺

1£ºIntent intent = Intent.parseUri(uri);

2£ºintent.addCategory("android.intent.category.BROWSABLE");

3£ºintent.setComponent(null);

4£ºcontext.startActivityIfNeeded(intent, -1);

µÚ¶þÐÐÌí¼ÓÁËBROWSABLE category(Ä¿±êActivityÔÊÐí±¾Éíͨ¹ý Web ä¯ÀÀÆ÷Æô¶¯£¬ÒÔÏÔʾÁ´½ÓÒýÓõÄÊý¾Ý,ÒԴ˹ýÂË/·ÀֹһЩ²»¸Ã±»µ÷ÆðµÄ×é¼þ±»µ÷Æð)£¬µÚÈýÐн«×齨ÉèÖÃΪnull£¬ÓÃÒÔµÖÓùintent-based¹¥»÷£¬µ«Èç¹ûʹÓÃselector intent¿ÉÒÔÍêÃÀµÄbypassÒÔÉÏÏÞÖÆ¡£

ÒÔÏÂÊÇandroid chromeÉϵÄÒ»¸öUXSS¹¥»÷µÄPOC:

Old stock browser cookie theft

Android stock browser (com.android.browser)µÄÎÊÌâÀàËÆÓÚandroid chrome£¬Í¬ÑùÊÇÔÚstep2ÖжÔintentµÄ¹ýÂËÎÊÌ⣬×îÖÕ¹¥»÷Õß¿ÉÒÔµÁÈ¡ä¯ÀÀÆ÷µÄcookie¡£´Ë©¶´¿ÉÄÜÖ»´æÔÚÓÚAndroid 4.3ÒÔϵÄÉ豸£¬Ö®ºóµÄ°æ±¾Öв»Ò»¶¨Ô¤×°stock browser¡£

0X05 ×ܽá

ÓÐЧµÖÓùintent scheme url¹¥»÷µÄ·½·¨Ö÷ÒªÊÇÔÚstep2ÖжÔintent×öÑϸñµÄ°²È«ÏÞÖÆ£º

// convert intent scheme URL to intent object 
Intent intent = Intent.parseUri(uri);
// forbid launching activities without BROWSABLE category
intent.addCategory("android.intent.category.BROWSABLE");
// forbid explicit call
intent.setComponent(null);
// forbid intent with selector intent
intent.setSelector(null);
// start the activity by the intent
context.startActivityIfNeeded(intent, -1);

0X06 ²Î¿¼

http://www.mbsd.jp/Whitepaper...

ÌÚѶÓù°²È«Îª¿ª·¢ÕßÍÆ³öÁ˰²È«±£»¤·þÎñ£¬ÆäÖаüÀ¨Â©¶´É¨Ãè¡¢Ó¦Óüӹ̡¢SO¼Ó¹ÌµÈ£¬Äܹ»°ïÖúÆóÒµÈí¼þ·¢ÏÖDZÔÚ©¶´·çÏÕ¡¢·ÀÄæÏò¡¢·À´Û¸Ä¡¢·À¶þ´Î´ò°ü¡£ÓÐÐèÇóµÄÍŶӿÉÒԵǼÓù°²È«¹ÙÍøÊÔÓá£

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

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ