介绍:
安全漏洞,它允许攻击者在目标网站上注入恶意的客户端脚本。这些脚本通常以JavaScript编写,执行在用户的浏览器上,从而窃取用户信息、劫持用户会话或者重定向到恶意网站。就是将代码植入网页,得到高权限,私密网页内容,cookie的目的。
XSS攻击过程:
分类:
存储型(Persistent):恶意脚本存储在目标服务器上,例如在数据库中。当受害者浏览包含恶意脚本的页面时,脚本会被执行。常见于留言板、评论区等。
反射型(Reflected):恶意脚本作为输入数据提交到服务器,并立即在响应中反射回到用户的浏览器中。常见于搜索框、URL参数等。
DOM型(DOM-Based):恶意脚本直接修改页面的DOM结构,不经过服务器。攻击代码由客户端执行,利用JavaScript修改页面内容。
反射性XSS攻击流程:
反射性XSS攻击方式:
通过将恶意脚本代码嵌入到URL请求参数中,当受害者点击该链接并访问时,服务器将该恶意代码反射回浏览器,浏览器解释并执行这些代码
步骤:
先要判断是否有XSS漏洞,可以在网页输入一些特殊字符,看有没有被过滤 <>'"\/
(1)构造恶意链接
攻击者首先构造一个包含恶意脚本的链接,例如
http://example.com/search?query=<script>alert('XSS')</script>
(2)诱使用户点击链接
攻击者通过电子邮件、即时消息、社交媒体等方式诱使受害者点击上述恶意链接。
(3)恶意脚本执行
当受害者点击链接并访问时,服务器将用户提供的查询参数(包括恶意脚本)直接反射回网页。例如,服务器返回的页面可能包含以下内容:
<html>
<body>
<h1>Search results for: <script>alert('XSS')</script></h1>
</body>
</html>
浏览器解析这段HTML代码并执行其中的<script>alert('XSS')</script>,弹出一个警告框。
储存型XSS攻击方式:
将恶意脚本代码持久化地存储在服务器端,当其他用户访问相关数据时,恶意代码会在他们的浏览器中执行
步骤:
(1)注入恶意脚本
攻击者通过正常的输入途径,例如表单提交、留言板、评论系统等,将恶意脚本代码提交到服务器。例如,攻击者在留言板上发表一条包含恶意代码的留言:
<script>alert('XSS');</script>
(2):恶意脚本存储
服务器将上述恶意代码存储在数据库中,如下所示:
INSERT INTO comments (username, message) VALUES ('attacker', '<script>alert('XSS');</script>');
(3)恶意脚本执行
当其他用户访问该留言板时,服务器将存储的留言从数据库中读取并在页面中显示出来:
<html>
<body>
<div class="comment">
<p><strong>attacker:</strong></p>
<p><script>alert('XSS');</script></p>
</div>
</body>
</html>
浏览器解析并执行了恶意脚本,触发了攻击者预设的行为,例如弹出警告框、窃取用户数据或执行其他恶意操作。
DOM型XSS攻击方式:
利用了客户端JavaScript代码的漏洞,通过修改DOM结构或属性,在页面中注入和执行恶意脚本。通常,这种攻击依赖于将不受信任的数据直接插入DOM中,而没有进行适当的验证或编码。
步骤:
(1)构造恶意输入
攻击者构造一个包含恶意代码的输入,例如通过URL参数、锚点(hash)值、表单输入等。例如,攻击者可能构造一个恶意链接:
http://example.com/page#<script>alert('XSS')</script>
(2):诱使用户访问链接
攻击者通过电子邮件、即时消息、社交媒体等方式诱使受害者点击上述恶意链接。
(3)客户端执行恶意代码
受害者点击链接后,页面加载时,JavaScript代码读取URL中的恶意参数并将其插入到DOM中。例如,以下是一个存在漏洞的JavaScript代码片段:
<!DOCTYPE html>
<html>
<head>
<title>DOM XSS Example</title>
</head>
<body>
<h1>Welcome!</h1>
<div id="content"></div>
<script>
// 从URL中获取hash值
var hash = window.location.hash.substring(1);
// 将hash值插入到DOM中
document.getElementById('content').innerHTML = hash;
</script>
</body>
</html>
当用户访问http://example.com/page#<script>alert('XSS')</script>
时,页面将执行hash值中的恶意脚本,弹出警告框。
XSS的攻击途径:
URL参数:攻击者在URL中加入恶意脚本代码
表单输入:攻击者在表单提交时注入恶意脚本代码
HTTP头部:通过修改HTTP请求头部,例如Referer或User-Agent,注入恶意脚本代码。
用户提交内容:例如在留言板、评论系统或用户简介中注入恶意脚本代码
数据库存储:恶意脚本代码被存储在数据库中,并在页面渲染时被执行
URL片段(hash):攻击者在URL片段中加入恶意脚本代码
beef-xss安装
(1)apt命令安装
sudo apt-get install beef-xss
(2)前面加sudo运行
(3)这里叫你修改密码
(4)上面密码为root,修改完后发现自动弹出窗口,访问127.0.0.1:3000/ui/authentication
(5)登录,默认的账号为beef,这里密码是root。进入成功。
*(6)再次输入sudo beef-xss,启动工具
(7)这里有生成的漏洞链接,最后的Hook和Example就是链接,ip换成想要注入的网页ip就行。