文章总结: 本文探讨了黑盒测试中服务端原型污染的探测与利用方法,指出其相比前端测试面临源码缺失、无控制台、易致服务瘫痪及污染持久化等挑战。核心探测技术是利用for…in循环会遍历原型链上可枚举属性的特性,通过注入proto属性并观察响应中是否反射污染属性来确认漏洞。文章建议在用户数据更新等接口进行探测,并强调发现漏洞后需寻找可利用gadget实现权限提升等攻击。 综合评分: 85 文章分类: 漏洞分析,渗透测试,Web安全
赏金猎人进阶:黑盒条件下如何揪出服务端原型污染
原创
升斗安全XiuXiu 升斗安全XiuXiu
升斗安全
2026年5月18日 08:08 广东
在小说阅读器读本章
去阅读
【文章说明】
- 目的:本文内容仅为网络安全技术研究与教育目的而创作。
- 红线:严禁将本文知识用于任何未授权的非法活动。使用者必须遵守《网络安全法》等相关法律。
- 责任:任何对本文技术的滥用所引发的后果自负,与本公众号及作者无关。
- 免责:内容仅供参考,作者不对其准确性、完整性作任何担保。
阅读即代表您同意以上条款。
你可能觉得原型污染是前端漏洞,早在浏览器里玩腻了。但别忘了,当年只能在浏览器里蹦跶的 JavaScript,自从有了 Node.js 这类运行时,早已大举进军后端,成了服务器、API 的主力开发语言。代码在哪儿跑,漏洞就在哪儿长【服务端原型污染】,正是前端那套脏活的后端翻版。
原理虽相通,但真要在黑盒条件下把它揪出来,再一路武装成远程代码执行,难度上了不止一个台阶。
为什么服务端这摊水更浑?
第一,你拿不到源码。不像前端那样能翻个底朝天,危险汇聚点和可用的 Gadget 属性,全藏在你摸不着的地方。
第二,没控制台可用。远程系统上的对象运行时是黑盒,你没法像 DevTools 那样扒开看。除非折腾出肉眼可见的异常,否则根本不知道原型到底被污染了没有。
第三,随随便便就搞瘫服务。服务端环境里,用真实属性污染对象,多半会搅乱应用逻辑甚至直接宕机。在生产环境做测试,一个不小心就成拒绝服务攻击。即便真发现了洞,站点也被你玩残了,后续利用难上加难。
第四,污染甩不掉。浏览器里刷个页面就能回到干净环境,但服务端的原型一旦被污染,它会赖在 Node 进程的整个生命周期里,你没机会重置。
既然这么棘手,怎么不动声色地探测?这里有个很讨巧的思路【污染属性反射】。
很多开发者容易忘,JavaScript 里的 for…in 循环会遍历对象上所有可枚举属性,原型链上继承来的也照单全收。内置的构造函数属性默认不可枚举,所以不会被揪出来,但你注入的可枚举属性,就会被一视同仁。
不好理解?自己跑一下就明白了:
const myObject = { a: 1, b: 2 };// 往原型上随便挂个属性Object.prototype.foo = 'bar';myObject.hasOwnProperty('foo'); // falsefor(const propertyKey in myObject){ console.log(propertyKey);}// 输出:a, b, foo
数组也一样,for…in 会先遍历每个索引,再接着遍历继承来的属性。
const myArray = ['a','b'];Object.prototype.foo = 'bar';for(const arrayKey in myArray){ console.log(arrayKey);}// 输出:0, 1, foo
这就给我们开了一扇窗:如果应用在响应里原样返回了这些遍历出的属性,就等于主动把“被污染了”的信号递到你手上。那些用 POST 或 PUT 提交 JSON 数据的用户更新接口,通常是绝佳探测点——服务器往往会返回刚刚创建或修改好的对象信息。
你可以像这样发起试探:
POST /user/update HTTP/1.1Host: vulnerable-website.com...{ "user":"wiener", "firstName":"Peter", "lastName":"Wiener", "__proto__":{ "foo":"bar" }}
如果站点存在漏洞,你注入的属性会像钉子户一样,端端正正地出现在响应数据里:
HTTP/1.1 200 OK...{ "username":"wiener", "firstName":"Peter", "lastName":"Wiener", "foo":"bar"}
个别情况下,这些属性甚至会被服务端用来拼装 HTML 并在浏览器中渲染,那可就是额外的惊喜了。
一旦确认原型污染可行,别停,马上切换思维去找能落地的 Gadget。凡是涉及用户数据更新的功能都值得深挖,因为这类操作常常会把传入数据合并进代表用户身份的内部对象。如果你能往自己用户对象上黏贴任意属性,权限提升这类高危漏洞往往就藏在几步之后。
觉得这波操作有意思?想深入挖掘更多服务端漏洞组合拳?
欢迎关注本号,每周拆解实战中的硬核渗透技巧,带你从赏金新手走向漏洞猎手。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:升斗安全 升斗安全XiuXiu 升斗安全XiuXiu《赏金猎人进阶:黑盒条件下如何揪出服务端原型污染》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论