打印 上一主题 下一主题

原型污染——JavaScript的隐形杀手

[复制链接]
跳转到指定楼层
楼主
发表于 昨天 23:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查看 : 4|回复 : 0
原型污染——JavaScript的隐形杀手
摘要:原型污染(Prototype Pollution)是指攻击者修改JavaScript对象的内建原型(如Object.prototype),从而影响所有继承自该原型的对象,导致应用程序行为异常、XSS或RCE。这类漏洞常见于接受用户输入并递归合并对象的函数(如merge、clone)。本文讲解原型污染的传播方式及防御:冻结原型、避免危险递归合并。
关键词:黑客网站攻击;原型污染;渗透测试;JavaScript安全;对象注入

一、引言
在JavaScript中,如果允许用户通过键值修改__proto__、constructor.prototype等属性,就能改变所有对象的默认行为。许多开源库(如lodash.merge)曾存在原型污染漏洞,导致大量Web应用被黑客攻击。此漏洞可引发DoS、属性覆盖甚至代码执行。
二、原型污染原理2.1 基础知识
每个对象有一个隐藏的[[Prototype]],可通过__proto__访问(现代标准推荐Object.getPrototypeOf)。修改{}.__proto__.toString = () => 'hacked'会影响所有对象。
2.2 污染入口
典型危险代码:
[size=12.573px]javascript



function merge(target, source) {    for (let key in source) {        target[key = source[key;    }    return target;}

如果攻击者提交{"__proto__": {"isAdmin": true}},经过递归合并后,所有新建对象的isAdmin属性都将被设为true。
三、渗透测试中的利用
  • 属性覆盖:污染constructor.prototype.isAdmin = true绕过权限检查。
  • XSS:污染某个HTML元素的属性,如innerHTML或src。
  • DoS:污染toString为死循环。
  • RCE(极罕见):配合electron、vm2等沙箱逃逸。

四、防御措施
  • 冻结原型:Object.freeze(Object.prototype) 防止修改。
  • 避免使用__proto__:检查用户输入的key,拒绝__proto__、constructor、prototype。
  • 使用无原型对象:Object.create(null) 创建的对象没有原型。
  • 升级库:修复已知原型污染漏洞(如lodash 4.17.12+)。
  • 使用Map代替普通对象存储键值对,Map不受原型污染影响。

五、检测方法
  • 构造{"__proto__":{"test":"polluted"}} 发送到接受JSON的API,之后检查{}是否有test属性。
  • 使用自动化工具如ppmap。

六、总结
原型污染漏洞深埋在JavaScript对象的灵活性中。防御关键是永远不要递归合并用户控制的键到已有对象,并过滤特殊属性名。


黑客接单网,一个诚信可靠的黑客在线接单平台网站 - 论坛版权欢迎各位客户访问黑客接单网
黑客接单网,一个诚信可靠的黑客在线接单平台网站是一个专业的黑客在线接单服务平台
黑客接单网,一个诚信可靠的黑客在线接单平台网站聚集多位顶级黑客大牛于此
专业服务于网站攻击,网站入侵,软件开发,软件破解,聊天记录截取,手机定位,删帖,改贴,开房记录查询等各种网络服务
如果您有相关业务需求,请联系我们在线客服咨询,获取解决方案
黑客接单网,一个诚信可靠的黑客在线接单平台网站全体工作人员恭候您下达任务,我们誓必不负重托。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

HeiKeJieDan(黑客接单网)黑客接单网,是一个国际顶级黑客在线接单网站平台,平台聚集数十位IT界顶级黑客精英大神,软件-网站开发工程师,逆向破解工程师,以及后勤协助人员,网络在线全职兼职人员,强大的IT精英团队聚集,只为为您提供最优质可靠的网络安全技术服务。

联系我们

新加坡-缅甸-菲律宾-美国

0037259400637(服务时间:9:00-18:00)

hk@heike8.com

在线咨询新浪微博官方微信官方微信

黑客客服

网   址:WWW.HKJD.CC
邮箱号:hk@heike8.com
快手号:HeiKeJieDan
电报TG号:hkjd9988
国际客服:0037259400637

快速回复 返回顶部 返回列表