知识梳理
-
XSS简介
XSS:跨站脚本攻击(Cross Site Scripting),是一种注入型攻击,攻击者使用Web应用程序将恶意脚本发送到不同的用户终端,若应用程序没有对输入的脚本进行验证、过滤or编码等处理,且终端用户的浏览器无法识别脚本是否受信任时,受害者在不知情的情况下访问对应的页面,恶意代码会在其浏览器上执行,恶意脚本可以访问其保留在浏览器中的站点cookie、会话标记or其他敏感信息;这些脚本甚至可以重写HTML页的内容,从而产生XSS攻击。
XSS分为三种类型:反射型(Reflected)、存储型(Stored)、DOM型
-
XSS测试策略
检查Web页面中可输入的位置。除了前端页面,还有前端代码中,所对应的隐藏or明显的输入位置。如:HTTP参数、POST data、隐藏的表单域(文本框、密码框、隐藏域、单选or复选框、下拉选择框)。通过前端源代码可查看到以上位置的存在。
分析每个输入位置,使用特别构造的数据,检测潜在的漏洞。通过预先构造的攻击字符串or敏感符号对Web程序进行模糊测试,根据返回的响应初步判断前后端对敏感字符的处理机制如何。
识别对Web程序有安全影响的XSS漏洞。根据响应数据和HTML代码,判断哪些位置没有对攻击字符or字符串进行过滤、转义、正确编码处理的防范,对这些弱防御的位置进一步攻击测试,检测确定安全漏洞。
-
反射型XSS概述
Reflected XSS:攻击负载是通过单个请求和响应进行交互和执行的,当用户在前端输入带有XSS性质的脚本作为HTTP请求的一部分发送给服务端,后端对收到的请求数据进行解析处理(字符串检测、转义...)之后返回给前端,前端浏览器将对该返回数据进行解析,若其中包含的恶意脚本可被浏览器解析并执行时,就会触发反射型XSS。
反射XSS攻击也称为非持久XSS攻击,反射型XSS脚本注入的攻击并不存储在应用程序中,而是存储在浏览器客户端,即非持久。只要不通过点击该特定url链接进行访问,就不会引起攻击。 -
存储型XSS概述
攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。
存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
原理:用户输入的数据被当作前端代码执行
测试方式
JS触发:<script>alert(1)</script>
伪协议触发:javascript:alert(1)
事件触发:<img src="" onerror=alert(1) />
onerror 失败后触发 onload 成功后触发
靶场演示
靶场地址
地址http://59.63.200.79:8082/
发现网站是FineCMS搭建的,搜索CMS是否存在漏洞
进行漏洞复现
/index.php?c=mail&m=aa<script>alert(1)</script>
利用XSS平台恶意攻击代码进行攻击
得到flag:zKaQ-01sdfDCo0