挖洞实战:顺着“改地址”摸到服务端原型污染,这漏洞藏得太深了

admin 2026-05-22 03:11:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了通过地址变更功能挖掘服务端原型污染漏洞的实战过程,包括利用BurpSuite进行请求拦截、注入proto属性污染Object原型、通过触发错误验证污染效果等具体步骤,最终实现对全局对象原型的篡改。 综合评分: 85 文章分类: 漏洞分析,Web安全,实战经验,渗透测试


cover_image

挖洞实战:顺着“改地址”摸到服务端原型污染,这漏洞藏得太深了

原创

升斗安全XiuXiu 升斗安全XiuXiu

升斗安全

2026年5月21日 08:18 广东

在小说阅读器读本章

去阅读

【文章说明】

  • 目的:本文内容仅为网络安全技术研究与教育目的而创作。
  • 红线:严禁将本文知识用于任何未授权的非法活动。使用者必须遵守《网络安全法》等相关法律。
  • 责任:任何对本文技术的滥用所引发的后果自负,与本公众号及作者无关。
  • 免责:内容仅供参考,作者不对其准确性、完整性作任何担保。

阅读即代表您同意以上条款。

有些网站后端在处理用户提交的 JSON 数据时,会不小心让攻击者污染全局对象原型,进而篡改应用行为。今天咱们就手把手走一遍“地址变更”功能里的服务端原型污染实战,全程用 Burp 操作。

第1步:正常改一次地址,让流量进历史记录

登录目标账户,进入地址管理页面。

填写表单,提交一次正常的账单地址或收货地址变更。

不用急着抓包,正常走完流程就行。

第2步:在 Burp 里定位目标请求

  1. 切到burp工具的 Proxy → HTTP history。
  2. 找到那条 POST /my-account/change-address 请求。

点开看一眼:请求体是 JSON 格式的地址字段,返回包里也直接回显了更新后的用户信息对象。

右键该请求,选择 Send to Repeater。

第3步:初探原型注入(可能没反应,别慌)

在 Repeater 的请求体中,往 JSON 里加一个 __proto__ 属性:

"__proto__": {    "foo": "bar"}

发送。

观察响应:返回的用户对象里看不到 foo 这个属性,这很正常,但不代表没漏洞。

第4步:故意破坏 JSON,探探错误信息

在请求体里故意搞个语法错误,比如删掉某行末尾的逗号。

发送。

看响应:虽然 HTTP 状态码是 500,但返回的 JSON 错误对象里应该能找到一个 status 字段,值是 400。

记住这个字段名“status”,它就是咱们下一步要攻击的目标。

第5步:用自定义 status 值去污染服务端原型

先把刚才故意搞出的语法错误修好,恢复合法 JSON。

修改注入内容,把目标对准那个 status 属性,值设在 400–599 之间,比如:

"__proto__": {    "status": 500}

发送,确认能正常收到包含用户对象的响应。

第6步:再次触发错误,验证污染是否成功

在已注入 __proto__ 的请求体中,再次故意破坏 JSON 语法。

发送,并仔细观察返回的错误对象。

如果 status 和 statusCode 字段都变成了你设定的 500,而不是原来的 400,那就成了。 这证明你成功污染了 Object.prototype,整个应用里后续读取 status 的地方都在用你的值。

实操完这六步,这个服务端原型污染就算拿下。把这个思路平移到其他功能点,下一个高危赏金就是你的了。

觉得有用的话,点个「在看」让更多赏金搭子看到。手里攒了什么好玩的漏洞案例,欢迎评论区晒出来,一起切磋,一起搞钱。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:升斗安全 升斗安全XiuXiu 升斗安全XiuXiu《挖洞实战:顺着“改地址”摸到服务端原型污染,这漏洞藏得太深了》

务实,是一种很稀缺的能力 网络安全文章

务实,是一种很稀缺的能力

文章总结: 本文通过金融行业安全团队务实更换终端安全产品的案例,指出安全行业普遍存在因回避决策失误而持续使用低效产品的问题,强调正视问题、务实决策对团队效能的重
评论:0   参与:  0