注意:
index.html
表示正常访问的页面,为了体现浏览器的跨域请求,此文件不通过Flask路由,而是通过VSCode的Open In Default Browser
插件模拟网页访问
app.py
文件中设置了监听服务器允许跨域请求,Flask框架是提供恶意网页和监听服务运行的
参考漏洞复现简要介绍
- 首先开启服务监听
对应代码为,相应注释
- 之后在VSCode打开
index.html
并模拟正常访问
且控制台内容显示当前的cookies
对应正常页面的代码
- 点击按钮,触发Ajax异步事件,执行结果
对应恶意代码见templates/inject.html
执行原理
返回内容也是一段JS代码,而且会被立即执行,执行结果会输出在正常访问用户的控制台内
由于执行者是正常页面所在的浏览器,所以可以访问当前的cookies,进而再通过一次Ajax调用post()
发送得到的cookie信息给监听服务器URLhttp://127.0.0.1:5000/fake/
查看Flask app运行的控制台
确实对应了一次恶意页面的获取,和两次cookie的POST
传输
说明攻击成功
使用jQuery大于等于1.9.0版本的库即可
当然,官方推荐永远使用最新版本的jQuery
目前仍有大量1.x.x版本的jQuery用于PC端Web开发,其目的是为了兼容旧版IE