XSS漏洞攻防

news2024/11/17 13:50:09

目录

  • XSS攻击简介
  • XSS攻击的危害
  • XSS攻击分类
  • XSS产生原因
  • 实战
    • 靶场搭建
    • 构造xss攻击脚本
      • 弹窗警告
      • 页面嵌套
      • 页面重定向
      • 弹窗警告并重定向
      • 图片标签利用
      • 绕开过滤的脚本
      • 存储型xss基本演示
      • 访问恶意代码(网站种马)
      • XSS获取键盘记录
      • XSS盲打
      • htmlspecialchars()函数
    • 自动xss攻击
  • 安全防御

XSS攻击简介

在这里插入图片描述

  • xss (Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS。

  • 主要基于java script (JS) 完成恶意攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的“想象”空间特别大。攻击者在网页中嵌式客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本攻击。

  • 微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS代码,都存在遭受XSS的风险,只要没有对用户的输入进行严格过滤,就会被XSS。

  • 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
    因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
    输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
    输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

XSS攻击的危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马 让更多人的受害
7、控制受害者机器向其它网站发起攻击 卖肉机

XSS攻击分类

  • 反射型
    • 非持久性跨站点脚本攻击
    • 攻击是一次性的,仅仅对当前的页面访问产生影响
  • 存储型
    • 持久型跨站点脚本
    • 攻击者的数据存储在服务器端,攻击行为将伴随着供给数据一直存在
  • dom型
    • 既可能是反射型又可能是存储型

XSS产生原因

  • web应用对用户的输入过滤不严谨

  • 攻击者写入恶意的脚本代码到网页中

  • 用户访问了含有恶意代码的网页

  • 恶意脚本就会被浏览器解析执行并导致用户被攻击

  • 反射型XSS的流程:

    • hacker发送带有xss恶意脚本的链接向用户
    • 用户点击了链接访问正常服务器
    • 正常服务器将正常的页面返回到用户浏览器
    • 用户浏览器解析了网页的恶意xss代码向恶意服务器发起请求
    • hacker从自己搭建的恶意服务器中获取到用户的提交信息
  • 存储型XSS攻击流程

    • hacker在目标服务器上构造xss恶意脚本,保存在数据库中
    • 用户在网站登录状态下访问了目标服务器,查看了存在恶意脚本的页面
    • 网站将xss和正常页面返回到用户浏览器
    • 用户浏览器解析了网页的xss恶意代码向恶意服务器发起请求
    • hacker从自己搭建的恶意服务器中获取用户提交的信息

实战

靶场搭建

BlueLotus
我这里选择的清华大学的是蓝莲花靶场(BlueLotus)
下载BlueLotus_XSSReceiver-master解压缩到PHPstudy的WWW目录下在这里插入图片描述
然后打开PHPstudy
在这里插入图片描述

成功之后是这样的
在这里插入图片描述

然后访问本地ip,127.0.0.1:84
在这里插入图片描述
点安装
设置密码,然后下拉点提交
在这里插入图片描述
在这里插入图片描述
输入密码登录
在这里插入图片描述
登录界面
在这里插入图片描述

构造xss攻击脚本

弹窗警告

<script>alert(1)</script>

在这里插入图片描述
盗取用户cookie
<script>alert(document.cookie)</script>

在这里插入图片描述

页面嵌套

<iframe style="overflow:hidden; width:520px;height:400px;position:fixed;left:500px;top:400px;border:none;margin:0px;padding:0px;"src="http://127.0.0.1:82/ "></iframe>
在这里插入图片描述

  • 可以看到页面里面又套了一个页面

页面重定向

<script> window.location= "https://www.baidu.com/" </script>
<script>location.href= "https://www.baidu.com/"</script>

弹窗警告并重定向

<script>alert("请移步到我们的新站");location.href="https://www.baidu.com/"</script>

在这里插入图片描述
在这里插入图片描述

  • 点击确定以后就加载到了目标网站

图片标签利用

图像标签,有一定的隐蔽性
<img src= "#"  onerror= alert('欢迎来钓鱼')>

绕开过滤的脚本

绕开过滤的脚本
大小写 <ScrIpt>alert('xss')</SCRipt>
字符编码 字符编码采用URL、Base64、HTML等编码
<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

可以用html编码进行绕过

存储型xss基本演示

危害最大的xss
写好一个脚本

在这里插入图片描述

有了弹窗
在这里插入图片描述
然后复制url再次打开发现弹窗还在,也就是说每一个访问这个网页的人都会弹出这个对话框
在这里插入图片描述

访问恶意代码(网站种马)

  • 能诱导用户访文恶意网站的攻击文件xss.js。获取用户cookie

XSS获取键盘记录

将rk.js改为自己ip
在这里插入图片描述
然后在pikachuxss平台输入

这样只要用户在输入框输入点击提交,后台就会在pkxss_keypress_result.php文件中记录下来

XSS盲打

进入XSs盲打
在这里插入图片描述随便输入
在这里插入图片描述
输入
![!](https://img-blog.csdnimg.cn/7d7b47e3bb0e4f21b1f16c77e6617a9d.png)
访问http://127.0.0.1:81/vul/xss/xssblind/xss_blind.php输入账户密码。就还可以看到有一个弹窗
http://127.0.0.1:81/vul/xss/xssblind/xss_blind.php
然后点击确定后还有记录
在这里插入图片描述

htmlspecialchars()函数

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体
预定义的字符是:
&(和号) 成为&amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &apos;
< (小于) 成为 &lt;
>  (大于) 成为 &gt;

在这里插入图片描述
源码
在这里插入图片描述

在这里插入图片描述

自动xss攻击

  • beEF
    • 介绍:Browser Exploitation Framework (BeEF)BeEF是目前强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透;BeEF是基于Ruby语言编写的,并且支持图形化界面,操作简单
    • 官网点这里
    • 功能
      • 信息收集
      • 持久化控制
      • 社工
      • 渗透攻击

安全防御

1.对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。

2.在javascript中加入多个tab键,得到
< IMG SRC=“jav ascript:alert(‘XSS’);” >;
  
3.在javascript中加入 编码字符,得到< IMG SRC=“javascript:alert(‘XSS’);” >;

4.在javascript中加入字符,得到
  < IMG SRC=“javascript:alert(‘XSS’);” >;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot - ZooKeeper

SpringBoot - ZooKeeper1、Curator框架的集成2、构建zookeeper客户端3、Master选举3.1、LeaderSelector3.2、LeaderLatch4、成员组注册5、节点监听1、Curator框架的集成 <dependency><groupId>org.apache.curator</groupId><artifactId>curator-recip…

博客系统前端实现

目录 1.预期效果 2.实现博客列表页 3.实现博客正文页 4.实现博客登录页 5.实现博客编辑页面 1.预期效果 对前端html,css,js有大致的了解后,现在我们实现了一个博客系统的前端页面.一共分为四个页面没分别是:登陆页面,博客列表页,博客正文页,博客编辑页 我们看下四个界面…

功能:vue:浏览器打印小票、打印参数配置

一、需求说明 1、要实现点击打印小票按钮&#xff0c;弹出预览弹框&#xff0c;点击弹框里面的打印&#xff0c;则实现浏览器打印预览&#xff0c;以及浏览器打印。 2、根据对应需求可以做步骤的加减&#xff0c;本例多了一个本地预览。 3、环境&#xff1a;pc端打印、chrome浏…

在 TypeScript 中导入 JavaScript 包,解决声明文件报错问题

前言 如果你在 TypeScript 中引入了一个纯 JavaScript 包&#xff0c;那很有可能会看到这样的报错&#xff1a; Could not find a declaration file for module ‘koumoul/vjsf/lib/VJsf’. ‘c:/*/node_modules/koumoul/vjsf/lib/VJsf.js’ implicitly has an ‘any’ type. …

uniapp拍照+上传后台 + pc端上传后台

uniapp 一、拍照&#xff0c;拿到本地路径 首先调用uniapp的api实现拍照 uni.chooseImage({sourceType: [camera,album],//拍照或是打开系统相册选择照片count: 3, //最多三张success(res) {if (Array.isArray(res.tempFilePaths)) {//最多选择三张&#xff0c;如果多选删掉…

新安webpack插件后编译报错compiler.plugin is not a function

安装使用generate-asset-webpack-plugin时报错TypeError&#xff1a;compiler.plugin is not a function&#xff0c;网上搜索了一下大概就是webpack5与这些插件不匹配。推荐的方法几乎都是换一个适配的插件版本&#xff0c;但我所需要的这个插件在npm上最近更新时间是7年前&am…

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 目录 Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 一、简单介绍 二、安装 vue-awesome-swiper 三、引入&#xff08;全局或局部引入&#xff09; 四、简单使用 一、简单介绍 Vue 开发的一些知识整理…

八个步骤实现一个Web项目(在线聊天室)

实现一个在线网页的聊天室 Hello&#xff0c;今天给大家带来的是我的一个Web项目的开发过程的相关步骤&#xff0c;这个项目实现的功能是一个Web在线聊天室&#xff0c;简单的来说就是实现在网页版的聊天框&#xff0c;能够实现对于用户信息进行注册&#xff0c;登录&#xff…

vue3、ts如何封装 axios,使用mock.js

今天我们一起来看一看 vue3ts如何优雅的封装axios&#xff0c;并结合 mock.js 实现敏捷开发&#xff1b; 但是我们要注意区分 Axios 和 Ajax &#xff1a; Ajax 是一种技术统称&#xff0c;技术内容包括&#xff1a;HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要…

Vue首次加载太慢之性能优化

Vue首次加载太慢之性能优化前言一、防止编译文件中出现map文件二、vue-router 路由懒加载三、使用gzip压缩四、使用CDN加载第三方库第一步&#xff1a;引入资源第二步&#xff1a;添加配置第三步&#xff1a;去掉原有的引用五、去掉代码中的console.log前言 首页加载很慢的问题…

Vite4 + Vue3 + vue-router4 动态路由

动态路由&#xff0c;基本上每一个项目都能接触到这个东西&#xff0c;通俗一点就是我们的菜单是根据后端接口返回的数据进行动态生成的。表面上是对菜单的一个展现处理&#xff0c;其实内部就是对router的一个数据处理。当然你只对菜单做处理也是可以的&#xff0c;但是没有任…

js中的内存泄漏

简版 内存泄漏一般是指变量的内存没有及时的回收&#xff0c;导致内存资源浪费。一般有三种情况出现内存泄露比较多。&#xff08;1&#xff09;常见的声明了一个全局变量&#xff0c;但是又没有用上&#xff0c;那么就有点浪费内存了&#xff0c;&#xff08;2&#xff09;定…

【Vue3】用Element Plus实现列表界面

&#x1f3c6;今日学习目标&#xff1a;用Element Plus实现列表界面 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人格言&#xff1a;生如芥子&#xff0c;心藏须弥 ⏰本期期数&#xff1a;第四期 &#x1f389;专栏系列&#xff1a;Vue3 文章目录前言效果图目录简介修改vite…

uniapp微信小程序实现连接低功耗蓝牙打印功能

微信小程序项目中有使用到蓝牙连接打印&#xff0c;参考官方文档做了一个参考笔记&#xff0c;这样使用的时候就按着步骤查看。 uni-app蓝牙连接 蓝牙&#xff1a; 1、初始化蓝牙 uni.openBluetoothAdapter(OBJECT) uni.openBluetoothAdapter({success(res) {console.log(…

毫米波雷达的硬件架构与射频前端

说明 本篇博文梳理(车载)毫米波雷达的系统构成&#xff0c;特别地&#xff0c;对其射频前端各部件做细节性的原理说明。本篇博文会基于对这方面知识理解的加深以及读者的反馈长期更新内容和所附资料&#xff0c;有不当之处或有其它有益的参考资料可以在评论区给出&#xff0c;我…

vue3.x结合element-plus如何使用icon图标

基于 Vue 3的Element Plus如何使用icon图标 首先注意Element Plus版本&#xff1a;官网如图所示&#xff0c; 基于vue3的具体如何使用&#xff1a; 参考官网文档&#xff1a; 1.首先选择一种方式安装 2.然后全局注册图标 在main.js或main.ts文件中引入&#xff1a; import …

【web前端开发】CSS文字和文本样式

文章目录前言字体大小字体粗细字体样式字体font复合属性文本缩进文本水平对齐方式文本修饰线行高颜色标签水平居中⭐思维导图前言 本篇文章主要讲解CSS中的文字和文本样式及一些实用技巧.文章最后有思维导图. 字体大小 属性名:font-size 取值: 数字px 注意: 谷歌浏览器默认…

无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

这是我在学习 JSTL 时产生的错误。没有使用 Maven 。 是手动引入 JSTL 包&#xff08;jstl.jar 和 standard.jar&#xff09;。在请求转发到 .jsp 界面&#xff0c;再没有使用 JSTL 语句前是通的&#xff0c;使用 JSTL 后就会报错。org.apache.jasper.JasperException: 无法在w…

【Vue】filter 过滤器用法

文章目录一、全局过滤器二、局部过滤器一、全局过滤器 语法&#xff1a; Vue.filter(name,function) - name: 过滤器名称 - function: 执行函数&#xff0c;必须有一个过滤后的返回值使用方法&#xff1a;变量名 | 过滤器名称 {{name | function()}}示例&#xff1a; <!D…

webpack的安装

webpack是当前前端最热门的前端资源模块化管理和打包工具。 安装webpack 首先要安装Node.js&#xff0c;Node.js自带了软件包管理工具npm&#xff0c;可以使用npm安装各种插件。Webpack至少需要Node.js v0.6版本&#xff0c;直接安装最新版就好了。 1.nodeJs官网&#xff0c…