知识导航
- xss跨站脚本漏洞概述
- 获取cookie流程
- xss的三种常见类型
- 此漏洞的测试流程
- 反射型xss(get)漏洞实验
xss跨站脚本漏洞概述
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容
- xss漏洞一直是web中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
- xss是一种发生在前端的漏洞
- xss可以用来尽心钓鱼攻击、前端js挖矿、获取用户cookie等等等
利用xss漏洞获取cookie的攻击流程
- 攻击者会根据该站点存在的xss漏洞类型,相应将自己精心编写的js插入到该站点的某一个页面中。然后欺骗用户访问
- 用户访问这个页面之后,带回了这个带有恶意的js。该js会在用户浏览器上执行。如上述js的功能便是将用户的cookie信息返回到攻击者自己搭建的接口。
- 攻击者伪造用户登录,进行各种操作
xss漏洞的常见类型
这里不理解可以先看后面的演示,自然的便会清楚
- 反射型
它进行交互的数据一般不会被存放在数据库中,即只为暂时性的 - 存储型
交互的数据会被存放在数据库中 - DOM型
不与后台产生交互,是通过DOM操作前端输出时产生的问题
xss漏洞形成的原因
它形成的主要原因是程序对输入输出的控制不够严格,导致恶意脚本注入后。返回到前端被当做正常代码来执行从而产生危害
xss漏洞的测试流程
- 在目标站点找到输入点,比如查询接口,留言版
- 输入一组自己指定的特殊字符,点击提交后查看返回的源码。看是否有做相应的处理
- 打开源码定位到我们的指定字符位置,检查该位置是否可以构造执行js的条件
- 提交构成的脚本代码,看是否能够执行成功。成功则证明存在xss漏洞
值得注意:
- 一般查询接口容易出现反射型,留言板容易出现存储型
- 后台可能存在过滤措施,构造的js可能会被过滤掉或者是环境(浏览器)限制了执行
- 通过变换不同的js,尝试绕过后台的过滤
反射型xss(get)漏洞实验
实验平台还是pikachu,浏览器火狐
首先进行测试是否存在漏洞
输入我们自己指定的字符如下:
结果返回:
查看源码
发现我们输入的东西被原封不动的返回过来的,可以初步判断可能存在漏洞,接下来编写js。不过这里它的前端做了字数的限制,不过基本上前端做的限制对我们来说都是形同虚设的。修改如下
编写js,这里我们只是简单的实验。所以只写了个弹框
结果如下:
这里的提交是get形式提交的,链接如下:http://192.168.211.1:8081/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%28%22aaa%22%29%3B%3C%2Fscript%3E&submit=submit
试想如果这是一个大型的论坛或者比较出名的网站,只是查看前面的站点地址可信度应该是很高的吧。不过我们如果把上述的js由弹框修改成其他恶意的js脚本。诱导用户访问。后果可想而知了吧
查看pikachu的后台源码
可以发现这里只是将前台获取的信息有原封不动的返了回去,没有进行保存至数据库等的操作
即它的类型为反射型