- ：在这节课和接下来的几节课中,
我们将讨论一个叫做XSS的漏洞｡
XSS是跨站点脚本的缩写｡
此类型的漏洞使得攻击者能够将JavaScript注入页面｡
JavaScript是一种编程语言｡
利用此漏洞, 攻击者将能够在网站的特定页面中执行用JavaScript编写的代码｡
JavaScript是一种客户端语言,
因此当代码被执行时, 它将在客户端､
用户､ 浏览网页的人身上执行｡
它不会在服务器上执行,
因此即使代码会给您一个反向shell, 该shell也将来自正在浏览页面得用户,
而不是来自网站.
所以你用JavaScript写的任何代码都会被利用,
或者在目标用户上运行, 在看到页面的人身上, 而不是在Web服务器上｡
因此, Web服务器将仅用作执行代码或交付代码的手段｡
有三种主要类型的XSS漏洞,
持久或存储, 反射和基于DOM｡
存储的XSS被存储到数据库中, 因此您注入的代码将被存储到数据库或页面中,
以便每次任何人查看该页面时,
您的代码都将被执行｡
反射的, 只有当目标用户运行您精心编制或编写的特定URL时,
才会执行代码｡
因此, 您将操作某种URL并将其发送到目标,
当他们运行该目标时,
当他们运行该URL时,
将执行代码｡
基于DOM的结果来自于在客户端上编写的JavaScript代码｡
因此, 代码实际上将在客户端进行解释和运行,
而无需与Web服务器进行任何通信｡
这些可能是非常危险的,
因为有时Web服务器会应用某种安全和过滤来检查XSS｡
但是使用基于DOM的代码永远不会被发送到Web服务器｡
因此, 代码将在Web浏览器上被解释和运行,
甚至不需要与Web服务器交互｡
而这些将呈现在网站上, 更新其内容而不刷新｡
我们都使用过这样的网站, 例如, 你输入你的用户名,
它就可以直接加载,
而不必与Web服务器进行检查,
或者你输入某种字符串, 它就可以在不与Web服务器通信的情况下进行搜索,
或者在不与Web服务器通信的情况下执行某些操作｡
因此, 如果您能够向其中注入,
则不会验证此注入, 因此它将直接执行,
并绕过所有验证｡