环境配置
Kali-Linux-2021 + WebGoat 8.2.2
1
概念
本课介绍什么是跨站脚本 (XSS),以及如何利用它来执行并非开发人员初衷的任务。
目标
-
用户应基本了解什么是 XSS 及其工作原理
-
用户将了解什么是反射 XSS
-
用户将展示以下方面的知识
-
反射 XSS 注入
-
基于 DOM 的 XSS 注入
2
什么是 XSS?
跨站脚本(通常也称为 XSS)是一种漏洞/缺陷,它允许将 html/脚本标记作为输入,未经编码或消毒就呈现在浏览器中。
跨站脚本 (XSS) 是最普遍、最有害的网络应用程序安全问题
虽然这种攻击有一个众所周知的简单防御方法,但在网络上仍有很多这样的事例。就修复而言,修复范围也往往是个问题。我们稍后将进一步讨论防御问题。
XSS 影响巨大
特别是随着 "富互联网应用 "越来越普遍,通过 JavaScript 链接的特权函数调用可能会受到威胁。如果保护不当,敏感数据(如您的身份验证 cookie)可能会被窃取并用于他人目的。
快速示例:
-
从浏览器(Chrome 浏览器、Firefox 浏览器)开发工具中的 JavaScript 控制台查看
alert("XSS Test"); alert(document.cookie);
-
返回客户端的任何数据字段都有可能被注入
试试看 使用Chrome浏览器或火狐浏览器
-
打开第二个标签页,使用与当前页面相同的网址(或 WebGoat 实例中的任何网址)
-
然后,在第二个标签页上打开浏览器开发工具,并打开 javascript 控制台。然后键入:alert(document.cookie); 。
每个标签页上的 cookie 是否相同?
答:yes
3
最常见的位置
-
将搜索字符串反馈给用户的搜索字段
-
反馈用户数据的输入框
-
返回用户文本的错误信息
-
包含用户提供的数据的隐藏字段
-
任何显示用户提供数据的页面
-
留言板
-
自由格式注释
-
-
HTTP 标头
4
我们为什么要关注?
XSS 攻击可能导致
-
窃取会话 cookie
-
创建虚假请求
-
在页面上创建虚假字段以收集凭证
-
将页面重定向到 "非友好 "网站
-
创建伪装成有效用户的请求
-
窃取机密信息
-
在终端用户系统上执行恶意代码(活动脚本)
-
插入敌对和不适当的内容
">GoodYear recommends buying BridgeStone tires...
XSS 攻击增加了网络钓鱼攻击的有效性
URL 中使用有效域
5
XSS 类型
反射式
-
用户请求中的恶意内容在网络浏览器中显示给用户
-
恶意内容从服务器响应后写入页面
-
需要社会工程学
-
在浏览器中以用户继承的浏览器权限运行
基于 DOM(技术上也是反射式)
-
客户端脚本使用用户请求中的恶意内容将 HTML 写入自己的页面
-
类似于反射式 XSS
-
利用用户在浏览器中继承的浏览器权限运行
存储或持久
-
恶意内容存储在服务器上(数据库、文件系统或其他对象中),随后在网络浏览器中向用户显示
-
不需要社会工程学
6
反射 XSS 场景
-
攻击者向受害者发送恶意 URL
-
受害者点击链接加载恶意网页
-
在受害者的浏览器中执行嵌入在 URL 中的恶意脚本
-
脚本窃取敏感信息(如会话 ID)并发布给攻击者
受害者没有意识到攻击的发生
7
试试看 反射 XSS
这项任务的目标是确定哪个字段容易受到 XSS 的影响。
在服务器端验证所有输入始终是一种良好做法。当未经验证的用户输入被用于 HTTP 响应时,就会发生 XSS。在反射式 XSS 攻击中,攻击者可以制作一个带有攻击脚本的 URL,并将其发布到其他网站、通过电子邮件发送,或以其他方式让受害者点击。
使用 alert() 或 console.log() 方法是查找某个字段是否易受 XSS 攻击的简单方法。使用其中一个方法即可找出哪个字段存在漏洞。
答:在 Enter your credit card number 处填写或
8
自身 XSS 还是反射 XSS?
通过上一个示例,您应该可以执行脚本。但此时,它将被视为 "自身 XSS"。
为什么会这样?
因为没有任何链接会触发 XSS。您可以自己试试看会发生什么......请访问
/WebGoat/CrossSiteScripting/attack5a?QTY1=1&QTY2=1&QTY3=1&QTY4=1&field1=4128+3214+0002+1999&field2=111
9
反射式 XSS 和基于 DOM 的 XSS
基于 DOM 的 XSS 是反射 XSS 的另一种形式。两者都是通过发送带有输入的链接触发的,而输入会被反射到浏览器。DOM 与 "传统 "反射 XSS 的区别在于,使用 DOM 时,有效载荷永远不会进入服务器。它只会由客户端处理。
-
攻击者向受害者发送恶意 URL
-
受害者点击链接
-
该链接可能会加载一个恶意网页或一个他们使用(登录?)的网页,该网页有一个易受攻击的路由/处理程序
-
如果是恶意网页,它可能会使用自己的 JavaScript 攻击另一个具有易受攻击路由/处理程序的网页/URL
-
有漏洞的网页会渲染有效载荷,并在该网页/网站的用户上下文中执行攻击
-
攻击者的恶意脚本可能以本地账户权限运行命令
受害者没有意识到攻击的发生......恶意攻击者不会使用
-
-
-
-
-
-
-
-
-