eval5 前端沙箱逃逸与 CSP Bypass

eval5 前端沙箱逃逸与 CSP Bypass

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文讨论了沙箱逃逸XSS攻击方法,通过访问原型链中的构造函数成功实现。使用原型链污染和Dom Clobbering技术修改代码执行内容和窃取window对象。方案需要执行两次才能成功。

🎯

关键要点

  • 讨论沙箱逃逸XSS攻击方法,通过访问原型链中的构造函数实现。
  • 使用原型链污染和Dom Clobbering技术修改代码执行内容和窃取window对象。
  • 方案需要执行两次才能成功。
  • 提到eval5开源库和相关沙箱示例。
  • 在sandbox2中可以使用Object进行攻击,但sandbox3由于CSP限制无法直接绕过。
  • 原型链污染可以实现XSS,但在当前沙箱中没有可用的Sink和依赖库。
  • 通过污染code变量,可以修改代码执行内容。
  • 使用Object.prototype.__defineGetter__方法来窃取window对象。
  • 总结方案需要两次执行,一次注入原型链污染,第二次触发污染并窃取window。
➡️

继续阅读