掌控安全学习-存储型XSS

知识梳理

  1. XSS简介

XSS:跨站脚本攻击(Cross Site Scripting),是一种注入型攻击,攻击者使用Web应用程序将恶意脚本发送到不同的用户终端,若应用程序没有对输入的脚本进行验证、过滤or编码等处理,且终端用户的浏览器无法识别脚本是否受信任时,受害者在不知情的情况下访问对应的页面,恶意代码会在其浏览器上执行,恶意脚本可以访问其保留在浏览器中的站点cookie、会话标记or其他敏感信息;这些脚本甚至可以重写HTML页的内容,从而产生XSS攻击。
XSS分为三种类型:反射型(Reflected)、存储型(Stored)、DOM型

  1. XSS测试策略
    • 检查Web页面中可输入的位置。除了前端页面,还有前端代码中,所对应的隐藏or明显的输入位置。如:HTTP参数、POST data、隐藏的表单域(文本框、密码框、隐藏域、单选or复选框、下拉选择框)。通过前端源代码可查看到以上位置的存在。

    • 分析每个输入位置,使用特别构造的数据,检测潜在的漏洞。通过预先构造的攻击字符串or敏感符号对Web程序进行模糊测试,根据返回的响应初步判断前后端对敏感字符的处理机制如何。

    • 识别对Web程序有安全影响的XSS漏洞。根据响应数据和HTML代码,判断哪些位置没有对攻击字符or字符串进行过滤、转义、正确编码处理的防范,对这些弱防御的位置进一步攻击测试,检测确定安全漏洞。

  2. 反射型XSS概述

    Reflected XSS:攻击负载是通过单个请求和响应进行交互和执行的,当用户在前端输入带有XSS性质的脚本作为HTTP请求的一部分发送给服务端,后端对收到的请求数据进行解析处理(字符串检测、转义...)之后返回给前端,前端浏览器将对该返回数据进行解析,若其中包含的恶意脚本可被浏览器解析并执行时,就会触发反射型XSS。
    反射XSS攻击也称为非持久XSS攻击,反射型XSS脚本注入的攻击并不存储在应用程序中,而是存储在浏览器客户端,即非持久。只要不通过点击该特定url链接进行访问,就不会引起攻击。

  3. 存储型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是否存在漏洞

image

进行漏洞复现

/index.php?c=mail&m=aa<script>alert(1)</script>

image

利用XSS平台恶意攻击代码进行攻击

image

得到flag:zKaQ-01sdfDCo0

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容