| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> node.js原型链污染漏洞 -> 正文阅读 |
|
[JavaScript知识库]node.js原型链污染漏洞 |
node.js入门:http://nodejs.cn/learn/how-much-javascript-do-you-need-to-know-to-use-nodejs 对象与原型链JavaScript当中的所有事物都是对象:字符串、数值、数组、函数。对象只是一种特殊的数据。对象拥有属性和方法。
JavaScript 对象就是一个 name:value 集合。而对象的的属性就是以键值的的形式表现。
第二种方式类似于python当中的字典或者php的关联数组,那么能够控制数组(对象)的“键名”的操作就能设置对象的属性值了,这也是漏洞的成因之一。
当然也支持像Java的class形式定义(本质是一个语法糖) 所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。 那么当原型存在该属性时,只要其子类实例没有定义该同名属性,就会直接继承这个属性,就如同姓氏一般。 要修改原型的属性即控制数组键值对的操作,常见有merge、clone(将待操作的对象merge到一个空对象)。 将 JSON 格式在语法上与创建 JavaScript 对象代码是相同的,在转化为JavaScript对象时, Lodash 模块原型链污染lodash.merge 方法通过
lodash.defaultsDeep 方法(CVE-2019-10744)Lodash 库中的 defaultsDeep 函数可能会被包含 constructor 的 Payload 诱骗添加或修改 Object.prototype
jQuery CVE-2019-11358 原型污染漏洞jQuery CVE-2019-11358 原型污染漏洞分析和修复建议
Jquery可以用$.extend将两个字典merge 题目实列[XNUCA2019Qualifier]HardJS关键词:nodejs lodash原型链污染
可以看到依赖项lodash存在原型链污染漏洞,即CVE-2019-10744. 从robots.py当中可见,admin的密码即为flag。 1. 后端的原型链污染漏洞server.js当中的/get路由可见,当消息数量大于5时将会调用lodash.defaultsDeep来合并消息。 express框架支持根据Content-Type来解析请求Body,那么将payload发送6次然后访问 /get 即可触发原型链污染 此时已经可以伪造登陆状态了
除了/static,/login和/register以外,其他路由在访问的时候均须auth函数进行身份验证。 2.前端的原型链污染漏洞在app.js当中可见前端获取后台数据时,调用了$.extent函数merge数据 在使用js生成模板时,遍历了hints对象并将hints对象的属性键值对写入到对应li标签中。 index.ejs中,含有type属性的li标签除了上面写的五个还有一个logger 通过污染原型的logger属性,即可覆盖logger的内容从而导致XSS
vps上搞个模拟登录的html表单就行 利用ejs进行rce除了像上面那样利用前后端组合攻击,也可仅利用后端漏洞利用ejs进行rce。 跟进这个调用的函数定义/node_modules/express/lib/application.js 继续跟进 调用了engine,查看声明 默认引擎出口 跟进这个__express的声明 查看这个renderFile的实现 最后调用了tryHandleCache函数 经过 handleCache 函数处理后返回最终的页面 handleCache返回了一个函数 再跟进 compile 看到各种代码拼接 后面是一个动态函数生成 这个对象会与其他生成的模板字符串一起拼接到this.source,然后传递给src,接着是fn,然后以returnedFn返回并最后被执行 利用
或者直接回显flag到页面上
参考:https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:32:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |