安全技能-XSS

XSS介绍

跨站脚本攻击(简称XSS),是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种,他允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响

XSS攻击可以分为三种

  1. 反射型XSS

  2. 存储型XSS

  3. DOM型XSS

原理

  1. 反射型XSS

反射型XSS又称非持久型XSS,这种攻击方式具有一次性

攻击方式:

攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户,当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给被攻击者

当浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞

  1. 存储型XSS

存储型XSS又称持久型XSS,攻击脚本将被永久存储在服务器的数据库或文件中,具有很高的隐蔽性

攻击方式:

存储型XSS常见于论坛,博客,留言板,攻击者在发帖过程中,将恶意脚本连同正常信息一起注入帖子内容中,随着帖子被服务器存储下来,恶意脚本也永久的被存放在服务器的后端存储器中

当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本就会在他们浏览器执行

  1. DOM型XSS

DOM全称Document Object Model 使用DOM 可以使程序脚本动态访问更新文档内容

DOM型XSS其实是一种特殊的反射型XSS,它是基于DOM文档对象模型的一种漏洞

攻击方式:

用户请求一个专门经过设计的URL,他由攻击者提交,而且其中包含XSS代码,服务器响应不会以任何形式包含攻击者的脚本,当用户浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞

常用语句和编码绕过

  1. 常用测试语句

    1. <script>alert(1)</script>

    2. <img src=x οnerrοr=alert(1)>

    3. <svg οnlοad=alert(1)>

    4. <a href=javascript:alert(1)>

  2. 常见的XSS绕过编码有JS编码,HTML实体编码和URL编码

    1. JS编码(JS提供了四种字符编码策略)
  • 三个八进制数字,如果个数不够,在前边补零

  • 两个十六进制数字,如果个数不够,在前边补零

  • 四个十六进制数字,如果字数不够,在前边补零

  • 对于一些控制字符,使用特殊的C类型转义风格(如\n和\r)

    1. HTML实体编码

命名实体:以&开头,以分号结尾,如”<”的编码是”<”

字符编码:十进制,十六进制,ASCII码或Unicode字符编码,样式为”&#数值;”

如”<”可以编码为”&#060;”和”&#x3c;”

  1. URL编码

这里的URL编码,也是两次URL全编码的结果,如果alert被过滤,结果为%25%36%31%25%36%63%25%36%35%25%37%%32%25%37%34

使用XSS编码测试时,需要考虑HTML渲染的顺序,特别是针对多种编码组合时,要选择合适的编码方式进行测试

  1. XSS漏洞修复意见

因为XSS漏洞涉及输入和输出两部分,所以其修复也分为两部分

过滤输入的数据,包括单引号,双引号,大于号,小于号等非法字符

对输出到页面的数据进行相应的编码转换,包括HTML实体编码,JS编码等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

USG_f4d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值