XSS(跨站脚本)概述以及pikachu上的实验操作

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

一般XSS可以分为如下几种常见类型:

1.反射型XSS

交互的数据一般不会被存储在数据库里,一次性,所见即所得,一般出现在查询类页面等。

2.存储型XSS

交互的数据会被存储在数据库里面,永久性存储,一般出现在留言板,注册等页面。

3.DOM型XSS

不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性也属于反射型。

XSS漏洞测设流程:

第一步:在目标站点上找到输入点,比如查询接口,留言板等;

第二步:输入一组“特殊字符+唯一识别字符”,点击提交,查看返回的源码,是否有做对应的处理;

第三步:通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构成执行js的条件(构造闭合);

第四步:提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执则说明存在XSS漏洞

一,反射型XSS实验演示


漏洞形成原因:后台代码从输入到输出都没有进行一个防XSS漏洞的过滤

首先打开pikachu平台的反射型XSS页面,在对应的输入点输入‘“<>6666点击提交

接着查看页面源码,ctrl+F搜索我们刚刚输入的字符6666找到输出点,我们可以看到我们刚才输入的字符被原封不动输出到p标签,

接着尝试输入一段正确的js代码,看是否也会被原封不动的返回,返回页面在输入点上输入<script>alert('xss')</script>(ps:这里我们会发现输入点限制了输入长度我可以通过web控制台修改输入长度)

输入完之后点击提交,成功弹出窗口,但刷新页面之后弹窗就不会出现了

证明这里存在一个反射型的XSS漏洞

二,存储型XSS实验演示


漏洞形成原因:从数据库中输出时没有进行过滤和转译,原封不动的输出到了前端浏览器中

首先打开pikachu的存储型XSS页面,我们先在留言板上随意留言,发现留言会被存储在页面上刷新之后也会在页面上

接着进行XSS测试流程,先输入一段特殊字符'"<>?&66666点击提交

发现我们输入的字符被直接当做留言给显示输出来了,然后我们直接去查看页面源码,ctrl+F搜索我们刚才输入的字符66666找到输入点,

可以看到我们刚才输入的字符被直接输出到p标签里面,没有做任何的过滤和转译的处理,接下来我们就输入一个正确的js代码<script>alert('xss')</script>

弹出弹窗,刷新之后也仍然弹出,因为这段代码被存储到数据库中,每次访问都会被执行

 三,DOM型XSS实验演示

首先要明白什么是DOM

DOM可以理解为理解为一个一个访问HTML的标准的编程接口,通过这个接口我们可以直接用js在前端对html文档进行操作

我们点开pikachu的DOM型XSS页面,随意输入一段字符点击提交弹出了一个what do you see?的提示,接着我们查看源码看看具体流程。

ctrl+F搜索what找到相关的点,是一段js代码,分析下来我们发现这段代码用DOM里面的getELemeById在input中获取到了我们输入的内容,接着将获取到的内容用字符串拼接的方式写到了a标签的herf属性里面

之前我们接触的反射型和存储型都是后台接收到数据然后再输出到前台,而这里我们输入的内容被前端用DOM的getELemeById直接获取到了,再用一个div输出了


接着我们复制a标签的内的输出的代码构造一个闭合函数<a href='#'onclick="alert(xss)">'>what do you see?</a>

将除了源代码内有的其余部分#'onclick="alert('xss')"复制到输入框中,点击提交,弹出弹框

接着我们来看看DOM型XSS-s

和之前的操作一样。先随意输入一些字符,再点开页面源码,找到相关的代码,看看是怎么一个逻辑,简单分析我们发现这段代码和之前的代码大体相同唯一的不同就是他的输入是从浏览器的URL获取的,这个就和反射型的XSS很像了漏洞形成的输入点都是在URL里面

同样的我们来构造闭合函数,其实和刚才的闭合一样我们将闭合函数代码输入进去点提交,连续点击提示,跳出弹窗。

web安全之跨站脚本漏洞(XSS)的更多相关文章

  1. 跨站脚本漏洞(XSS)基础

    什么是跨站脚本攻击XSS 跨站脚本(cross site script),为了避免与样式css混淆所以简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式. 什么是 ...

  2. Java Web开发 - 持久型/存储型XSS漏洞

    Java Web开发 - 持久型/存储型XSS漏洞 1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧, ...

  3. 【代码审计】QYKCMS_v4.3.2 前台存储型XSS跨站脚本漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  4. Postman SMTP 存在跨站脚本(XSS)漏洞,请换用Post SMTP Mailer/Email Log

    Postman SMTP 是一个安装量超过10W的WordPress插件,但是已经2年多没有更新,2017年6月29日,被发现存在跨站脚本(XSS)漏洞(查看详情),并且作者一直没有更新,所以被从Wo ...

  5. 【代码审计】YUNUCMS_v1.0.6 前台反射型XSS跨站脚本漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...

  6. 【代码审计】LaySNS_v2.2.0 前台XSS跨站脚本漏洞

      0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...

  7. 【代码审计】711cms_V1.0.5前台XSS跨站脚本漏洞分析

      0x00 环境准备 711CMS官网: https://www.711cms.com/ 网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20) 程序源码下载:https: ...

  8. 【代码审计】EasySNS_V1.6 前台XSS跨站脚本漏洞分析

    0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/ind ...

  9. 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)

    在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...

随机推荐

  1. Java实现 LeetCode 1013 将数组分成和相等的三个部分

    1013. 将数组分成和相等的三个部分 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 ...

  2. Java实现 LeetCode 140 单词拆分 II(二)

    140. 单词拆分 II 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分 ...

  3. 第七届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可 ...

  4. IDEA连接远程服务器Docker部署Spring Boot项目

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...

  5. 全网最全测试点总结:N95 口罩应该如何测试?

    引言 随着”新冠疫情“慢慢地消散,各大企业都开始恢复正常的运行,因为疫情造成很多工作人员的流失,企业也开始疯狂的招聘新鲜的人才,这对于莘莘求职者无疑是个机会,但是因为求职者众多,很多面试官也开始想方设 ...

  6. 为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于关于常量定义的规约,具体内容如下: 图中的反例是将数据缓存起来,并使用魔法值加链路 id 组成 key,这就可能会出现其他开发人员在复制 ...

  7. DOM 元素的循环遍历

    ​博客地址:https://ainyi.com/89​ 获取 DOM 元素的几种方式 get 方式: getElementById getElementsByTagName getElementsBy ...

  8. 使用Volo.Abp.MailKit发送邮件

    Volo.Abp.MailKit封装继承MailKit库,为Abp邮件发送提供了快捷实现. 邮箱配置 qq邮箱支持smtp功能,需要去申请开通.参考qq邮箱设置,最重要的是smtp发送邮件,qq邮箱对 ...

  9. Spring新注解

    @Configuration作用:指定当前类为一个配置类@ComponentScan作用:用于通过注释指定Spring在创建容器时要扫描的包           当配置类作为AnnotationCon ...

  10. EIGRP-10-弥散更新算法-计算距离,报告距离,可行距离和可行性条件

    对于某个目的网络,EIGRP持续关注它的各种距离参数.EIGRP使用复合度量参数,不过为了简化,这里使用一个没有单位的数值.同样出于简化,这里的EIGRP路由器都不使用水平分割.