目录
XSS的原理和分类
XSS漏洞分类
dom
存储型
XSS的危害
XSS漏洞的验证
XSS的黑盒测试
XSS漏洞的白盒测试
XSS的原理和分类
xss全称跨站脚本攻击xss(Cross Site Scripting) 为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,把跨站脚本攻击缩写为xss
xss产生的原因是因为程序过滤的不完善导致用户输入危险代码,在html页面执行
主要分两大类:反射性(普通反射型、dom型)和存储型
XSS漏洞分类
反射性
反射性xss 一次性(非持久)
流程:
1.发送带有xss恶意脚本连接
2.用户点击了恶意连接,访问了目标服务器
3.网站将xss同正常页面返回到用户浏览器
4.用户浏览器解析了网页中的xss恶意代码,向恶意服务器发起请求
5.黑客从自己搭建的恶意服务器中获取用户提交的信息
dom
基于dom的xss是一种xss攻击,其中攻击的payload由于修改的是浏览器本地的dom树而执行,并不会传到服务器上,这也使得dom型xss比较难以检测
存储型
存储型xss是一种持久型跨站脚本,他的xss代码不是写在某个参数(变量)中,而是写进数据库或文件等可以永久保存的介质中。存储型xss通常出现在留言板中,我们在留言板留言,将恶意代码写进数据库中,此时我们只完成了第一步,因为xss使用的是js代码,js代码运行环境是浏览器,我们需要浏览器从服务器中载入恶意代码,才能触发真正的xss。
XSS的危害
针对用户:
盗取cookie
网络钓鱼
放马挖矿
广告刷流量
针对web服务:
劫持后台
传播蠕虫
篡改页面
内网扫描
XSS漏洞的验证
我们可以用简单的代码进行验证,这样的代码叫做PoC(Proof of Concept)
<script>alert(1)</script>
<a href="javascript:alert(1)">aaa</a>
<img src=1 onerror="alert(1)">
XSS的黑盒测试
尽可能找到一些用户可控的并且能够输出在页面代码中的地方,比如:
URL的每一个参数、URL本身、表单、搜索框、常见业务等场景
重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等
XSS漏洞的白盒测试
关于XSS代码审计的地方着重于接收参数的地方和关键字入手
php中常见的接受参数的方式有$GET、$POST、$_REQUEST等,可以搜索所有接受参数的地方。然后对接受到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的代码有没有被过滤和html编码处理
也可以搜索类似echo的输出语句,看是从哪里来的,我们能否控制,如果从数据库来,我们能否控制数据库中的数据,存到数据库之前有没有进行过滤
大多数程序会统一调用封装在公共文件的函数,我们需要审计这些公共函数看有没有过滤,绕过的可能。