XSS 漏洞概述
简介
XSS作为OWASP TOP 10 之一
XSS被称为跨站脚本攻击(Cross-site scripting),本来应该缩写为CSS,但是由于和CSS(Cascading Style Sheets,层叠样式脚本)重名,
所以更名为XSS。XSS(跨站脚本攻击) 主要基于javascript (JS) 完成恶意的攻击行为。
JS可以非常灵活的操作html,css和浏览器,这使得XSS攻击的"想象"空间特别大。
XSS通过将精心构造的代码(JS)代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果。
当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来,用户浏览器就会解析这段XSS代码,也就是说用户被攻击了。
用户最简单的动作就是使用浏览器上网,并且浏览器中有javascrit解释器,可以解析javascript,
然而浏览器不会判断代码是否恶意。也就是说,XSS的对象是用户和浏览器。
XSS漏洞发生在哪里?
服务器
微博、留言板、聊天室等等收集用户输入的地方都有可能被注入XSS代码,都存在遭受XSS的风险,只要没有对用户的输入进行严格过滤,就会被XSS
XSS危害
XSS利用JS代码实现攻击,有很多种攻击方法,以下简单列出几种
@ 盗取各种用户账号
@ 窃取用户Cookie资料,冒充用户身份进入网站
@ 劫持用户回话,执行任意操作
@ 刷流量,执行弹窗广告
@ 传播蠕虫病毒
......
XSS漏洞的验证
我们可以用一段简单的代码,验证和检测漏洞存在,这样的代码叫做PoC(Proof of Concept)
P0C 漏洞的验证与检测
EXP 漏洞的完整利用工具
shellcode 利用漏洞时,所执行的代码
payload 攻击载荷
sqlmap 攻击代码的模板
msf shellcode类似,功能是建立与目标的连接
验证XSS漏洞存在的PoC 如下:
<script>alert(/xss/)</script> 弹框(常用)
<script>confirm('xss')</script> 弹确认框
<script>prompt('xss')</script> 弹输入框
我们可以在测试页面中提交这样的代码
[<script>alert(/xss/)</script>]
点击提交按钮就能看到弹窗操作
点击确定,邮件查看网页源代码如下:
我们发现,提交的代码
[<script>alert(/xss/)</script>]
被当做字符串输出在HTML页面中,浏览器会根据
[<script>]
标签识别为JS
语句并且执行它,执行弹窗操作。也就是说,可以执行其他JS代码,因此我们验证了XSS漏洞的存在性
XSS的分类
XSS漏洞大概可以分为三个类型:反射型XSS、存储型XSS、DOM型XSS
反射型XSS
反射型XSS是非持久性、参数型的跨站脚本
反射型XSS的JS代码在Web应用的参数(变量)中,如搜索框的反射型XSS
在搜索框中,提交
PoC[<script>alert(/xss/)</script>]
点击搜索,即可出发反射型XSS
注意到,我们提交的poc会出现在search.php页面中的keywords参数中
存储型XSS