文章目录
XSS (跨站脚本攻击) 原理是攻击者将恶意脚本注入到其他网站,当用户访问该网站时,恶意脚本会在用户的浏览器中执行,从而窃取用户信息、劫持会话或篡改页面内容。这种攻击利用了网站对用户输入未充分验证和过滤的漏洞。
Cookie概述
- JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。
创建cookie:document.cookie="username=David";
以为 cookie 添加一个过期时间:document.cookie="username=David; expires=Thu, 18 Dec 2026 12:00:00 GMT";
- cookie实例:
创建html,并写入创建cookie来存储用户名:
打开浏览器进行访问:
再刷新一下页面,就能显示欢迎 '再次' 访问,因为cookie中已存在记录了
XSS攻击的原理:
- 漏洞产生:
网站在处理用户输入时,如果未对输入进行充分的验证、过滤或转义,就直接将用户输入的内容嵌入到页面中,就可能存在XSS漏洞。 - 恶意脚本注入:
攻击者构造包含恶意脚本(通常是JavaScript)的URL、表单数据或其他输入,并诱导用户访问或提交。 - 脚本执行:
当用户访问包含恶意脚本的页面时,浏览器会将其解析为HTML和JavaScript代码并执行。 - 攻击行为:
恶意脚本可以执行各种恶意操作,例如:
窃取Cookie:攻击者可以获取用户的Cookie,从而获取用户的会话信息,并冒充用户进行操作。
劫持会话:攻击者可以通过Cookie或会话令牌劫持用户的会话,从而控制用户的账户。
篡改页面:攻击者可以修改页面内容,例如显示虚假信息、进行钓鱼攻击等。
重定向:攻击者可以将用户重定向到恶意网站。
传播恶意软件:攻击者可以利用XSS漏洞传播恶意软件。
XSS攻击的分类:
首先先要装好 sqli-libs 和 DVWA 靶机环境
反射型XSS:
恶意脚本包含在URL中,当用户点击带有恶意脚本的链接时,服务器将恶意脚本"反射"回浏览器执行。


添加一条 JavaScript 代码获取 cookie
<script>alert(document.cookie);</script>
查看是否和浏览器中的cookie信息是否一致
存储型XSS:
恶意脚本被存储在服务器端(例如数据库),当用户访问包含恶意脚本的页面时,服务器从数据库中读取数据并返回给浏览器执行。这种攻击方式危害更大,因为恶意脚本是永久存储的。
再次刷新页面,还是可以弹出弹出 cookie 信息
在服务器中的数据库中查看数据存放位置:
DOM型XSS:
恶意脚本在浏览器端通过JavaScript修改DOM,从而影响页面内容。
创建一个加载 javascript 脚本的dom 网页:
在/var/www/html/dom.html文件中写入以下内容
写入后保存退出,并进入浏览器进行访问
进行 XSS DOM 攻击:
XSS攻击的关键在于网站对用户输入没有进行充分的安全处理,导致恶意脚本得以执行。攻击者利用这种漏洞,可以对用户和网站造成严重的危害。防御XSS攻击需要从网站开发阶段就进行严格的安全措施,包括输入验证、输出编码、使用安全框架等。
反射型XSS和存储型XSS的区别
存储型 XSS 和反射型 XSS 的主要区别是:
XSS 只会弹一次 cookie 信息。存储型 XSS 每次访问这个页面都是会弹出 cookie 信息。因为 XSS 代码已经嵌入在了该 Web 站点当中,所以每次访问都会被执行。