一、XSS 漏洞概述

1.1 简介

XSS 被称为跨站脚本攻击(Cross-site scripting),本来应该缩写为 CSS,但是由于和 CSS

(Cascading style sheets,层叠样式脚本)重名,所以更名位 XSS。

XSS 主要是基于 JavaScript(JS)完成恶意的攻击行为。JS 可以非常灵活的操作 html、css 和

浏览器,这使得 XSS 攻击的想象空间特别大。

XSS 通过将精心设计构造的代码(JS)注入网页中,并由浏览器解释运行这段 JS 代码,以达

到恶意攻击的效果。当用户访问被 XSS 脚本注入的网页,XSS 脚本就会被提取出来。用户浏

览器就会解析这段浏览器代码,也就是用户被攻击了。

用户最简单的动作就是使用浏览器上网,并且浏览器中有 JavaScript 解释器,可以解析

JavaScript,然而浏览器不会判断代码是否恶意。也就是说,XSS 的对象是用户和浏览器。

1、XSS 漏洞发生在哪里?

发生在服务器端

微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入 XSS 代码,都存在遭受

XSS 攻击的风险,只要没有对用户的输入进行严格的过滤,就会被 XSS 攻击。

1.2XSS 危害

XSS 利用 JS 代码实现攻击,有很多种攻击的方法,以下简单列出几种

1、盗取各种用户账户

2、盗取用户 Cookie 资料,冒充用户身份进入网站

3、劫持用户会话,执行任意操作

4、刷流量、执行弹窗广告

5、传播蠕虫病毒

等等

1.3XXS 漏洞的验证

我们可以用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做 PoC(Proof of Concept)

EXP 是工具,包含 PoC、shellcode、payload 验证漏洞存在的 Poc 如下:

<script>alert(/XSS/)</script> 常用
<script>confirm('XSS')</script>
<script>prompt('XSS')</script>

我们可以在测试页面中提交这样的代码,当我发现提交的代码
被当作字符串输出在 HTML 页面中,浏览器会根据[

它,并执行弹窗操作,即可以执行其他 JS 代码,因此我们验证了 XSS 漏洞的存在性。

例如:

index.php 文件

xss.php 文件

二、XSS 的分类

XSS 漏洞大概分为三个类型:反射型 XSS、存储性 XSS、DOM 型 XSS

2.1 反射型 XSS

反射型只是简单的将用户输入的数据"反射"给浏览器,其应用场景往往是黑客诱使用户点击

一个恶意链接,从而获得用户的 cookie 信息。

反射性 XSS 是非持久性、参数型的跨站脚本。反射型 XSS 的 JS 代码在 Web 应用的参数

(变量)中,如搜索框的反射型 XSS。

例如 cms 文件管理系统中:

在搜索框中,提交 PoC[],点击搜索,即可触发反射型 XSS。

注意到,我们提交的 poc 会出现在 search.php 页面的 keywords 参数中。

例如编写如下测试页面 xss_test.php

<?php
$input = $_GET["var"];
echo "<div>".$input."</div>";
?>

在浏览器输入端提交参数 http://ip/xss_test.php?var= 会发现 alert(/xss/)已经被执行了,弹窗成功 查看页面源代码,会发现用户输入的 script 代码,已经被写入到页面中,显然,这不是开发 人员想要看到的情况。

2.2 存储型 XSS

存储型 XSS 是一个持久性跨站脚本。持久性体现在 XSS 代码不是在某个参数(变量)中,

而是写进数据库或文件等可以永久性保存数据的介质中。

存储型 XSS 通常发生在留言板的地方。我们在留言板位置留言,将恶意代码写进数据库中。

此时,所有查看我留言的用户,甚至是管理员,都会在他们的浏览器端执行恶意的 javascript

代码,黑客把恶意的脚本保存到服务器端,所以这种 XSS 攻击就叫存储型 XSS。

例如 cms 文件管理系统,留言板中存在存储型 xss 漏洞

2.3 DOM XSS

DOM XSS 比较特殊。owasp 关于 DOM 型号 XSS 的定义是基于 DOM 的 XSS 是一种 XSS

攻击,其中 XSS 攻击的 payload 由于修改受害者浏览器页面的 DOM 树而执行的。其特殊

地方在于 payload 在浏览器本地修改 DOM 树而执行,并不会上传到服务器上,这也就使

得 DOM XSS 比较难以检测,其实它和反射型 XSS 类似,但是由于历史原因,将其单独作为

一个分类。

例如,创建 domxss.html 文件

unescatpe()函数的功能是,将 url 地址中的 url 编码进行解码,因为 url 地址中有些字符是进

行 url 编码的。

提交请求

http://ip/domxss.html# message=

或者

http://ip/domxss.html?message=

我们以描点的方式提交 PoC 并不会发送到浏览器,但是已经触发了 XSS。

查看提交参数后的 HTML 页面(DOM 树),会被重新渲染,从而在不通过服务器端的情况

下改变 DOM 树。

页面源代码中,没有弹窗的 xss 代码,但是在审查元素的查看器中存在弹窗的 xss 代码。

注意:只要修改了 DOM 树,浏览器就会重新渲染页面。

练习:DVWA 中的 xss

XSS讲解上(web安全入门10)相关推荐

  1. 渗透测试流程及方法论讲解(web安全入门04)

    一.渗透测试方法论 1.1 渗透测试(penetration testing,pentest) 是实施安全评估(即审计)的具体手段. 方法论是在制定.实施信息安全审计方案时,需要遵循的规则.惯例和过程 ...

  2. web前端入门必知的10个技术

    随着HTML5的发展和普及,了解HTML5将成为Web开发人员的必修课.如何把网页做得更美观,对用户更有吸引力,不仅是企业对前端开发人员要求,更是一个合格的web前端工程师的自我修行.今天小编就跟大家 ...

  3. SLAM导航机器人零基础实战系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览...

    SLAM导航机器人零基础实战系列:(二)ROS入门--10.在实际机器人上运行ROS高级功能预览 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了 ...

  4. Flask Web开发入门(十)之图片上传(使用Flask-Upload)

    在Flask Web开发入门(八)之文件上传中,我们探讨了Flask框架下的文件上传,本章我们将使用Flask插件Flask-Uploads示例说明的图片上传与展现如何实现 开始之前,我们先简单看下F ...

  5. 前端如何实现音乐盒胶盘的转动_郑州Web前端入门教程之如何实现图片优化?

    统计数据显示,图片内容已经占据互联网内容总量的62%,因此想要优化网站性能,图片绝对是优化的热点和重点.图片优化是Web前端工程师必须要掌握的知识点,在接下来的郑州Web前端入门教程就给大家讲解一下如 ...

  6. java web快速入门_Web安全快速入门

    java web快速入门 Web开发人员针对CORS,CSP,HSTS和所有Web安全首字母缩写词的入门知识! (A web developer's primer on CORS, CSP, HSTS ...

  7. Angular和.NET Core Web API入门应用程序

    下载源160.2 KB 您可以在此处查看此项目的源代码和最新更新 这是Angular/.NET Core Web API入门应用程序,具有添加.编辑和删除客户的基本功能,因此您可以将其用作构建应用程序 ...

  8. web前端入门指南:来看看这位大佬的学习之路吧!

    开始他的表演 第一章:为什么要学习前端开发?web前端开发是什么? 从事前端开发工作差不多3年了,自己也从一个什么都不懂的小白积累了一定的理论和实践经验.编写<Web前端入门指南>系列文章 ...

  9. 经验分享:Web前端入门要怎么开始学?

    现在,几乎整个互联网行业都缺前端工程师,不仅是刚起步的创业公司,对上市公司乃至巨头这个问题也一样存在. 据统计,国外的前端开发人员和后端开发人员比例约1:1,但是在国内比例却在1:3以下,Web前端开 ...

最新文章

  1. 拒绝躺平,Redis选择实现了自己的VM
  2. ReactNative v0.55学习笔记
  3. 数据库mysql_row_MYSQL数据库mysql found_row()使用详解
  4. leetcode222. 完全二叉树的节点个数(两种做法)
  5. linux rpm 删除
  6. 【剑指offer】面试题32 - III:从上到下打印二叉树 III(Java)
  7. qq饥荒联机版服务器没有响应,饥荒联机版专用服务器卡顿原因及解决方法汇总...
  8. Redis笔记4-持久化方案
  9. 第二章 Jackson属性名转换+属性忽略
  10. C++ delete的三种面貌
  11. 前端笔记-201805
  12. 语音识别中的CTC算法的基本原理解释
  13. linux下用tcpdump抓包
  14. matlab2c使用c++实现matlab函数系列教程-sqrt函数
  15. 使用pip+清华镜像源安装软件
  16. 使用NFC读卡器ACR122u读取银行卡信息
  17. 怎样才算是优质的Scratch作品?
  18. wpf 客户端 添加qq客服咨询
  19. 用IAR调试芯唐Cortex-M0系列芯片指南
  20. 怎样使用 Hardhat 开发 Solidity 智能合约

热门文章

  1. 远程进服务器怎么全屏显示,远程服务器如何全屏显示
  2. 全景视频拼接的关键技术与发展优势、作用、应用。
  3. iframe(标签的使用)
  4. 成功解决:ping不通腾讯云服务器问题
  5. 剪辑视频怎么学?手把手教你自学视频剪辑
  6. watch | 监听器、computend
  7. STM32内存结构总结
  8. Kurento 第一坑
  9. linux dhcp 故障转移,Windows DHCP 故障转移
  10. 实现Windows下Qt扫描U盘的两种方式