点击蓝字
关注我们
始于理论,源于实践,终于实战
老付话安全,每天一点点
激情永无限,进步看得见
严正声明
本号所写文章方法和工具只用于学习和交流,严禁使用文章所述内容中的方法未经许可的情况下对生产系统进行方法验证实施,发生一切问题由相关个人承担法律责任,其与本号无关。
特此声明!!!
手动查找客户端原型污染源
尝试不同的方法将任意属性添加到 Object.prototype 中,直到找到有效的源。测试客户端漏洞时,使用以下步骤:
1、通过查询字符串、URL 片段和任何 JSON 输入注入任意属性。例如:
example.com/?__proto__[cc]=by
2、在浏览器控制台中,检查 Object.prototype 以查看是否已成功使用任意属性污染它,F12打开浏览器控制台,输入Object.prototype ,看是否显示cc:by,
3、如果该属性未添加到原型中,请尝试使用不同的技术,例如切换到点表示法而不是方括号表示法,反之亦然:/?__proto__.cc=by
4、对每个潜在源重复此过程
手动查找客户端原型污染小工具
一旦确定了允许向全局 Object.prototype 添加任意属性的源,下一步就是找到一个合适的小工具,使用它来制作漏洞利用。可以借助第三方工具来完成此操作。
通过构造函数进行原型污染
前面我们通过特殊的 __proto__ 访问器属性获取对原型对象的引用。因此常见的防御措施是在合并用户控制的对象之前从用户控制的对象中去除任何带有 __proto__ 属性的键。但是还有有其他方法可以引用 Object.prototype,而不依赖 __proto__ 字符串。
除非其 prototype 设置为 null,否则每个 JavaScript 对象都有一个 constructor 属性,该属性包含对用于创建它的 constructor 函数的引用。
创建对象可以使用字面量语法创建,如:
let myObject = {
name: "John",
age: 30
};
// 对象的constructor属性指向Object构造函数
console.log(myObject.constructor === Object);
还可以使用Object()构造函数创建对象
let anotherObject = newObject();
anotherObject.property = "value";
// 对象的constructor属性同样指向Object构造函数
console.log(anotherObject.constructor === Object);
在JavaScript中,constructor属性是一个对象原型(prototype)上的属性,它指向创建该对象实例的构造函数。对于普通的对象字面量(myObjectLiteral)或者通过new Object()创建的对象(myObject),它们的constructor属性都指向Object构造函数。当你创建一个对象时,JavaScript会自动为该对象设置constructor属性,以便能够追溯到创建它的构造函数。
myObjectLiteral是一个对象字面量,myObject是通过Object构造函数创建的对象(例如myObject = new Object())。
当访问它们的constructor属性时,都返回function Object(){{...}},这表明它们都是由Object构造函数创建的。不过需要注意的是,虽然对象字面量看起来没有显式使用Object构造函数创建,但在JavaScript内部,对象字面量的创建机制与使用Object构造函数有一定的关联,所以它们的constructor属性也指向Object构造函数。
绕过有缺陷的密钥清理
网站试图防止原型污染的一种明显方法是在将属性键合并到现有对象之前对其进行清理。这意味着在处理用户输入或外部数据时,应该验证和过滤掉可能引起原型污染的属性键。例如,如果用户输入的属性键是__proto__,那么在合并到现有对象之前,应该将其过滤掉或进行适当的处理。
一个常见的错误是未能递归清理 Importing 字符串。这意味着如果用户输入的数据包含嵌套的对象或数组,那么仅仅清理顶层的属性键是不够的。还需要递归地清理每一层的属性键。例如:
https://example.com/?data=%7B%22__proto__%22:%7B%22polluted%22:%22value%22%7D%7D
在这个 URL 中,data参数是一个 JSON 字符串,解码后会变成一个对象,其中包含一个__proto__属性。如果在合并到现有对象之前没有递归清理这个对象,那么就会导致原型污染。
END
老付
欢迎扫码
关注我们
网络安全
原文始发于微信公众号(老付话安全):客户端原型污染漏洞利用解析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论