目录
一、什么是XSS攻击?
XSS攻击全称为跨站脚本,XSS的 重点在于脚本执行,而不是跨站。这是一种将任意JavaScript代码插到其他web用户页面里执行以达到攻击目的的漏洞。攻击者利用浏览器的动态展示数据功能,在HTML页面里嵌入恶意代码。当用户浏览器页面时,这些潜入在HTML中的恶意代码会被执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的。XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
二、XSS产生的原因
是由于web应用程序对用户的输入和输出过滤不足产生的,导致脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危险。
三、常用的XSS攻击手段和目的
- 盗用cookie,获取敏感信息。
- 利用植入Flash,通过cross domain权限设置进一步获取更高权限。
- 利用iframe、frame、等方法,以用户的身份执行一些管理动作。
- 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作。
- 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDOS攻击的效果。
四、XSS攻击流程
五、预防措施
输入检查:对输入进行过滤,不允许可能导致XSS攻击的字符输入,制定白名单,输入检查特殊字符。
输出检查:在用户输内容中使用标签。
HTTPOnly: HttpOnly是包含在http返回头Set-Cookie里面的一个附加的flag,所以它是后端服务器对cookie设置的一个附加的属性,在生成cookie时使用HttpOnly标志有助于减轻客户端脚本访问受保护cookie的风险.通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。
六、类型
pikachu之XSS分类、场景(钓鱼、盲打、过滤)_Moriia---的博客-CSDN博客
七、攻击场景
pikachu之XSS分类、场景(钓鱼、盲打、过滤)_Moriia---的博客-CSDN博客
八、XSS绕过常用方法
- 前端限制绕过,直接抓包重放,或者修改html前端代码。
- 大小写绕过:HTML对大小写不敏感,可以大小写混用
- 双写绕过:有些情况的规则会将黑名单标签替换为空,可以利用这一点构造标签
例如:<script>改为<scr<script>ipt>
同理某些注释符在规则中也会替换为空,这时候可以利用它构造payload
例如:<script>改为<scr<!---test--->ipt>
4、开口标签:在某些特殊环境,由于html代码补全机制,可以故意不闭合标签绕过黑名单 检测例如:<script>改为<script
5、使用注释进行干扰:<scri<!--test-->pt>alert(“1”)</script>
6、编码:后台过滤了特殊字符,比如<script>标签,但该标签可以被编码,后台不一定会过滤,。当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行。
九、跨站脚本漏洞测试流程
- 在目标站点找到输入点,如查询接口、留言板等。
- 输入一组“特殊字符+唯一识别字符”,点击提交,查看返回源码,是否有做出对应处理。如果字符没有被处理或者过滤,就说明存在XSS漏洞
- 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合)
- 提交构造的脚本代码以及各种绕过姿势,看是否可以执行成功,如果执行成功说明存在xss漏洞。
- 一般查询接口容易出现反射性xss,留言板容易出现存储型XSS
- 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行
- 通过变化不同的SCRIPT,尝试绕过后台的过滤机制。