首先是XSS漏洞的成因:
之后是XSS攻击的流程
在之后是XSS漏洞的分类以及危害性比较
以上是针对漏洞做的简单了解,之后是测试XSS漏洞的基本思路,如下图
接下来进行PIKACHU靶场的实战,一开始是反射型的漏洞,交互的数据不存入数据库,一般只是在查找的情况,
一般来说,应该先用特殊字符进行试探的,不过作为靶场第一关没有什么防御,那就直接开始攻击,这里的输入框对输入字符的数量进行了限制,也许之后实战也会有,不过这关的限制是在前端的,就没有什么意义。
所以我们可以把这个20改成20000都可以,直接改掉就可以突破限制了。 这个就是一个反射型的XSS(查询,不存在数据库,一次性)
接下来是存储型也叫永久型的XSS
最重要一点是在存储上,这里我们直接想到一个场景:留言板!
就像这里,我们发送的留言被存储起来了,那就是应该有个数据库,反正就是被保存起来了,那我们构建攻击性语句,那也被一直存储起来了,这就是存储型的XSS漏洞。
再之后是DOM型的XSS漏洞
如何去理解DOM呢?
就看上图,H1 P里面是正常的javascript标签,上面写的代码(意思是获得myHeader的值并且展示)就叫DOM(访问html标准的接口)
GET传参方式的XSS漏洞利用
首先我们需要有一个后台,让用户把数据发往这个后台。然后上面的<script>是一个获得cookie的语句,我们自己这样写在框内就是获取cookie,下面的就是进行url编码后的样子,把这个链接发给别人,她点击了就相当于执行了上面的script语句。那我们就可以再自己的钓鱼后台看到这个上当用户发来的COOKIE。
POST传参方式的XSS漏洞利用
其实和GET的也类似,也是让用户去点一个网页,不过这里我们已经写好了一个post表单了,所以这个站点是XXXX/post.html.
类似于GET传参的利用,
存储型XSS漏洞的利用
比如我们是一个留言板,那就预先写好一个恶意脚本,引导用户去访问
因为是存储型的XSS,所以刷新了也还在的,这个请求框是我们伪造的,之后肯定可以改进得更有迷惑性
什么是跨域?
跨域同源策略
为什么要有同源策略![](https://i-blog.csdnimg.cn/blog_migrate/272bd0575ef87f2ae43ec0da99134b18.png)
怎么跨过同源策略进行攻击
我们的攻击后台就可以设置允许跨源操作,hearder(acess......),然后我们在受害者网页上写好允许跨域加载资源的标签去请求我们的攻击后台的脚本原件。
XSS盲打
也就是说像是给别人提建议这种,我们可以输入点内容上去,但是我们看不到回馈的,只有后端才能看到我们输入的,但是仍然可以输入攻击语句打进去,管他的。
XSS绕过
如果那些安全代码写在前端,那将毫无意义可言(我想实战不会再遇到这种了)
绕过的方法和SQL注入的绕过也很相似。
大小写 拼凑(就是可能只是过滤一次script标签,专门写一个就是给他过滤的)
使用注释进行干扰(加注释在运行的时候是没什么用的,但是把字符搞乱了,也许会识别失效)
还有就是换标签,script标签使用频率较高,针对其一定有不少成熟的防御经验,那么可以换一些标签达成目的。
还有一种思路是编码,比如编成url编码
XSS里的htmlspecialchars()函数
htmlspecialchars()函数是前端常用的XSS防御措施,但是如果程序员直接用这个函数,那么他处理引号类型就是COMPAT默认的,就只处理双引号,漏过了单引号,可以根据这一点去搞事情。
XSS的常见防范措施![](https://i-blog.csdnimg.cn/blog_migrate/337cfc413a4af58779e26afe9c50a336.png)
特别需要注意的是在A标签的href属性里面,可以使用javascript协议来执行JS,那就可以设置白名单只允许http https两种协议通过,然后还是可以再使用htmlspecialchars处理一下