渗透测试之XSS

XSS漏洞原理

XSS攻击可以分为三种:反射型、存储型和DOM型

  1. 反射型 XSS
    反射型XSS又称非持久型XSS ,这种攻击往往具有一次性。
攻击方式:攻击者通过电子邮件等方式将包含 XSS 代码的恶意链接发送给目标用户;
当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器;
浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
  1. 存储型 XSS
    存储型XSS 又称持久型XSS,攻击脚本将被永久的存放再目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中;
随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器地后端存储器中;
当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
例如恶意攻击者在留言板中加入以下代码:
<script>alert(/XSS/)</script>            #在PHP等语言中alert表示弹窗
浏览这个留言板的用户就会看到一个XSS的弹窗。
  1. DOM 型 XSS
    DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。
    DOM型XSS其实是反射型XSS的一种特殊类型,它是基于DOM文档对象模型的一种漏洞。
攻击方式:用户请求一个经过专门设计过的URL,它由攻击者提交,并且其中包含XSS代码。
服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞

XSS常用语句及编码绕过。

XSS常用测试语句:

<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<script>alert(document.cookie)</script> :         弹出当前页面cookie

常见的XSS的绕过编码有JS编码、HTML实体编码和URL编码。

  1. JS编码
    JS 编码提供了四种字符编码的策略:
三个八进制数字,如果个数不够,在前面补0。
两个十六进制数字,如果个数不够,在前面补0。
四个十六进制数字,如果个数不够,在前面补0。
对一些控制字符,使用特殊的C类型的转义风格(例如\n和\r)。
  1. HTML编码
    命名实体:以&开头,以分号结尾的,例如 “<” 的编码是 “&lt”
    字符编码:十进制,十六进制ASCII码或 Unicode字符编码,样式为 “&#数值;”,例如 “<” 可以编码为 “&#060;” 和 “&#x3c;”

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值