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. SpringSecurity(1)---认证+授权代码实现

    认证+授权代码实现 Spring Security是 一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和 ...

  2. Java实现 蓝桥杯算法提高 求最大值

    算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...

  3. Java实现 LeetCode 38 外观数列

    38. 外观数列 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述.前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ...

  4. Java实现第十届蓝桥杯矩形切割

    试题 B: 矩形切割 本题总分:5 分 [问题描述] 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形. 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形, ...

  5. java实现第三届蓝桥杯机器人行走

    机器人行走 [编程题](满分18分) 某少年宫引进了一批机器人小车.可以接受预先输入的指令,按指令行动.小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字). ...

  6. ZooKeeper搭建集群

    ZooKeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性 ...

  7. 一文讲透Java序列化

    本文目录 一.序列化是什么 二.为什么需要序列化 三.序列化怎么用 四.序列化深度探秘 4.1 为什么必须实现Serializable接口 4.2 被序列化对象的字段是引用时该怎么办 4.3 同一个对 ...

  8. 在WinForms里嵌入MediaPlayer的一些版本问题, tlbimp导入, 以及不导入而纯用C#+字符串来动态调用.

    网上很多写使用WindowsMediaPlayer WMP控件的文章. 大多数都是从工具栏或COM导入. 最近正在做的CEF整合Asp.Net Core Blazor server side的过程中, ...

  9. 1.Redis Lock

    使用场景 同步锁,让业务方法在锁设定的时间内是同步执行的 redisService.setIfAbsent redisService.expire @PostMapping("/update ...

  10. 【微信H5】 Redirect_uri参数错误解决方法

    1 https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx14127af0bc9fd367&redirect_uri=http ...