从业者-客户端原型链污染-DOM型XSS
# 实验室:客户端原型链污染-DOM型XSS
# 题目
此实验室容易受到客户端原型链污染以及 DOM型XSS (opens new window) 的影响。若要解决实验室问题,请:
- 找到一个可以向全局
Object.prototype
添加任意属性的源。 - 确定一个允许你执行任意 JavaScript 的小工具属性。
- 将它们组合起来以调用
alert()
。
你可以在浏览器中手动解决此实验,或使用 DOM Invader (opens new window) 来帮助你。
- name: 实验室-从业者
desc: 客户端原型链污染-DOM型XSS >>
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/client-side/lab-prototype-pollution-dom-xss-via-client-side-prototype-pollution
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
(目前只有图,文字后面有时间补)
点击 “ACCESS THE LAB” 进入实验室。
/?__proto__[恶意属性]=值
1
async function logQuery(url, params) {
try {
await fetch(url, {method: "post", keepalive: true, body: JSON.stringify(params)});
} catch(e) {
console.error("Failed storing query");
}
}
async function searchLogger() {
let config = {params: deparam(new URL(location).searchParams.toString())};
if(config.transport_url) {
let script = document.createElement('script');
script.src = config.transport_url;
document.body.appendChild(script);
}
if(config.params && config.params.search) {
await logQuery('/logger', config.params);
}
}
window.addEventListener("load", searchLogger);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
编辑 (opens new window)