XSS注入漏洞解析(上)

XSS跨站脚本介绍 跨站脚本(Cross-Site Scripting,XSS/CSS)是一种经常出现在Web应用程序中的计算机安全漏洞,是 由于Web应用程序对用户的输入过滤不足而产生的。攻击者利用网站漏洞把恶意的脚本代码(通常包括 HTML代码和客户端Javascript脚本)注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶 意代码,对受害者可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。 XSS跨站脚本攻击本身对Web服务器没有直接危害,它借助网站进行传播,使网站的大量用户受到攻 击。攻击者一般通过留言、电子邮件或其他途径向受害者发送一个精心构造的恶意URL,当受害者在 Web浏览器中打开该URL的时候,恶意脚本会在受害者的计算机上悄悄运行,流程如图所示:

XSS漏洞一直被认为是web安全中危害较大的漏洞,在owasp一直处于top3。而在对sql注入防范越来越 严密的今天,xss也成了绝大部分黑客更喜欢的漏洞利用方式。XSS漏洞是发生在WEB前端的漏洞,所以 危害面及广,任何用户在访问前端时都可能中招。 XSS的本质就是前端代码注入。 注入攻击的本质,是把用户输入的数据当做代码执行。 这里有两个关键条件

第一个是用户能够控制输入

第二个是原本程序要执行的代码,拼接了用户输入的数据

xss注入主要拼接是网页的HTML代码,一般而言我们是可以拼接出 合适的HTML代码去执行恶意的JS语句。

总结:xss就是拼接恶意的HTML

xss的主要危害有:

1.网络钓鱼,包括盗取各类用户账号; 2.窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作; 3.劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件 等; 4.强制弹出广告页面、刷流量等; 5.网页挂马; 6.进行恶意操作,例如任意篡改页面信息、删除文章等; 7.进行大量的客户端攻击,如DDoS攻击; 8.结合其他漏洞,如CSRF漏洞,实施进一步作恶; 9.传播跨站脚本蠕虫等。

xss的分类有3类分别是反射型XSS 你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击 存储型XSS 你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发 DOM型XSS 主要利用DOM相关的操作,修改了页面,引发的惨案。

HTML标签:常用标签回顾。 主要需要掌握基本的标签结构。 标签有: 双标签和单标签

<div class="" id=""></div>
<script src=""></script>
<input value="" name=""/>
<img src=""/>
1.引入外部js
<script src="外部JS的连接"></script>
2.内部JS
<script>JS代码</script>
3.伪协议
<a href="javascript:JS代码"></a>
4.事件引入
<button onclick="JS代码">挫我</button>
<img src="地址" onerror="JS代码"/>
JS的基本的语法:
var num = 1000;
获取DOM对象:
document.getElementById/getElementsByName/getElementsByClassName
跳转:
window.location.href="地址"

同源策略:同协议 同域名|IP 端口 浏览器为了保证数据的安全,对获取相关数据,发送相关数据进行了限制 什么叫同源? 1. 同协议 2. 同域名|IP 3. 同端口号

服务器端需要设置: 所有的域都能访问自己服务器。

XSS利用流程 击者在有漏洞的前端页面嵌入恶意代码,导致受害者访问页面时不知情的情况下触发恶意代码,获取受 害者关键信息。形成XSS漏洞的原因本质上还是对输入输出的过滤限制不严格,导致精心构造的脚本输 入后,在前端被当做有效代码并执行。

1.用firefox和chrome的右键菜单进入html编辑器或者直接查看网页源代码。

2.寻找输入点,在输入点输入特殊字符<>’’等,查看是否存在拦截,并且通过编辑器查看输入后存放的位 置。

3.发现没有过滤特殊字符后,就要考虑如何构造payload进行xss攻击了。开始分析漏洞页面,构建 payload。

怎么简单检测是否存在XSS? 一般是想办法让浏览器弹窗(alert) 最经典的弹窗语句:

一般证明XSS是否存在,就是在正常页面传参然后构建参数让他弹窗就是存在XSS了 记住一句至理名言:见框就插

只要有弹窗,说明就有XSS漏洞。

xss真的执行恶意代码的实际上是JS语句,那么我们一般需要构建 (这个是定义Js的标签) 但是也是有其他方法可以执行的 javascript:alert(1) (经典代码test) Javascript实际上是一个伪协议 伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://, 伪协议只有关联应用能够用, 比如 php:// tencent://(关联QQ) javascript:伪协议实际上声明了URL的主体是任意的javascript代码 javascript:alert(1) 事件也是可以执行JS的: 例如: οnerrοr=alert(1) 在加载文档或图像时发生错误。 该句的意思就是在加载文档或图像时发生错误然后会执行alert(1) 类似的事件有很多 常用的有 onerror、onload(成功加载执行)oninput (有输入框,输入的时候触发) 注意: 如果发现注入对应的标签不生效,一定注意审核源码。

反射型XSS 概念 反射性XSS又称非持久型XSS,这种攻击方式往往具有一次性。 攻击方式:攻击者通过电子邮件等方式将包含xss代码的恶意链接发给目标用户。当目标用户访问该链接 时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏 览器,浏览器解析这段带有XSS代码的恶意脚本后,浏览器解析这段代码后就会触发xss攻击,完成攻击者 想要的功能(获取cookies、url、浏览器信息、IP等等)。

攻击流程 1. 分析源码,看见输入框直接来一句: 2. 观察页面是否发生变化,如果发生变化,就成功 3. 没有变化,一定去分析标签 4. 根据现实效果,调整注入的代码,可以尝试用img标签之类的替换script 5. 只要弹窗就结束

代码分析 在反射型XSS PHP代码中,通过GET获取参数xss_input_value的值,然后通过echo输出一个input标 签,并将xss_input_value的值放入input标签的value中。当访问 xss_input_value=">

时,输出到页面的HTML代码变为

存储型XSS 概念 存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽 性。攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信 息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储 器中。当其他用户浏览这个被注入了恶意叫你本的帖子时,恶意脚本会在他们的浏览器中得到执行。 如下,恶意攻击者在留言板中加入以下代码:当其他用户访问留言版时,就会看到一个弹窗。可以看 到,存储型XSS的攻击方式能够将恶意代码永久地嵌入一个页面中,所以访问这个页面的用户都将成为 受害者。如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存储型XSS则不同, 由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。 攻击流程 bwapp里面的json的通关: 需要json的知识点: 标准的json格式:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出 BERT

Transformer 用于学习句子中的长距离依赖关系&#xff0c;同时执行序列到序列的建模。 它通过解决可变长度输入、并行化、梯度消失或爆炸、数据规模巨大等问题&#xff0c;比其他模型表现更好。使用的注意力机制是神经架构的一部分&#xff0c;使其能够动态突出显示输入数据的…

Meta Llama 3 使用 Hugging Face 和 PyTorch 优化 CPU 推理

原文地址&#xff1a;meta-llama-3-optimized-cpu-inference-with-hugging-face-and-pytorch 了解在 CPU 上部署 Meta* Llama 3 时如何减少模型延迟 2024 年 4 月 19 日 万众期待的 Meta 第三代 Llama 发布了&#xff0c;我想确保你知道如何以最佳方式部署这个最先进的&…

java基于云计算的SaaS医院his信息系统源码 HIS云平台源码

目录 云HIS功能模块 1、预约挂号&#xff1a; 2、药库管理&#xff1a; 3、门诊医生站&#xff1a; 4、门诊费用&#xff1a; 5、药房管理&#xff1a; 6、治疗室&#xff08;门诊护士工作站&#xff09;&#xff1a; 7、统计分析&#xff1a; 8、财务管理&#xff1a;…

vue快速入门(五十三)使用js进行路由跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 几种常用的路由跳转方式演示 源码 App.vue <template><div id"app"><div class"nav"><!-- router-link 自带两个高亮样式类 router-link-exact-active和router-link-active区别&a…

《QT实用小工具·五十四》果冻弹出效果的动画按钮

1、概述 源码放在文章末尾 该项目实现动画按钮&#xff0c;鼠标放在按钮上可以弹性拉出的三个按钮&#xff0c;使用贝塞尔曲线实现&#xff0c;项目demo显示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef WATERCIRCLEBUTTON_H #define WATERCIRCLEBUTTON…

MySQL CRUD进阶

前言&#x1f440;~ 上一章我们介绍了CRUD的一些基础操作&#xff0c;关于如何在表里进行增加记录、查询记录、修改记录以及删除记录的一些基础操作&#xff0c;今天我们学习CRUD&#xff08;增删改查&#xff09;进阶操作 如果各位对文章的内容感兴趣的话&#xff0c;请点点小…

mac查看Linux服务器的性能

mac上安装 linux系统 如果有 linux服务器账号密码&#xff0c;那么上一部可忽略&#xff1b; 比如&#xff1a;直接连接阿里云或腾讯云账号 1. 安装termius 链接: https://pan.baidu.com/s/1iYsZPZThPizxqtkLPT89-Q?pwdbw6j 提取码: bw6j 官网 Termius - SSH platform for …

[Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解

目录 1.TCP头部格式2.TCP协议的特点3.TCP如何封装与分用4.通过序列号和确认应答号提高可靠性1.32位序列号2.32位确认应答号3.保证可靠性4.为什么序列号和确认应答号是单独的字段 5.窗口大小1.TCP的发送和接收缓冲区2.窗口大小 6.连接管理机制 1.TCP头部格式 TCP全称为"传输…

C语言数据结构之队列

目录 1.队列的概念及结构2.队列的实现逻辑3.队列的代码实现4.相关例题选择题 •͈ᴗ•͈ 个人主页&#xff1a;御翮 •͈ᴗ•͈ 个人专栏&#xff1a;C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#x…

SpringBoot与SpringMVC的区别

SpringBoot与SpringMVC的区别是什么&#xff1f; SpringBoot和SpringMVC是Java开发中常用的两个框架&#xff0c;它们都是由Spring框架所提供的&#xff0c;但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。 一、SpringBoot的特点&#…

第16章 基于结构的测试技术(白盒测试技术)

一、静态测试技术 &#xff08;一&#xff09;概述 不运行程序代码的情况下&#xff0c;通过质量准则或其他准则对测试项目进行检查的测试类型&#xff0c;人工或工具检查。 1、代码检查 2、编码规则检查 软件编码规范评测&#xff1a;源程序文档化、数据说明、语句结构、…

wpf线程中更新UI的4种方式

在wpf中&#xff0c;更新UI上面的数据&#xff0c;那是必经之路&#xff0c;搞不好&#xff0c;就是死锁&#xff0c;或者没反应&#xff0c;很多时候&#xff0c;都是嵌套的非常深导致的。但是更新UI的方式&#xff0c;有很多的种&#xff0c;不同的方式&#xff0c;表示的意思…

01-MySQL 基础篇笔记

一、MySQL 概述 1.1 数据库相关概念 数据库&#xff1a;&#xff08;DB&#xff1a;DataBase&#xff09; 存储数据的仓库&#xff0c;数据是有组织的进行存储 数据库管理系统&#xff1a;&#xff08;DBMS&#xff1a;DataBase Management System&#xff09; 操作和管理数…

论文阅读笔记(AAAI 20)Order Matters

个人博客地址 注&#xff1a;部分内容参考自GPT生成的内容 论文笔记&#xff1a;Order Matters&#xff08;AAAI 20&#xff09; 用于二进制代码相似性检测的语义感知神经网络 论文:《Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection》…

时间日志格式的统一和定制

返回当前格式的时间没有错误&#xff0c;但是不符合中国人的阅读习惯 解决&#xff1a; 方案一&#xff1a;JsonFormat 解决后端 传到 前端格式问题 依赖&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jack…

基于MQTT通信开发的失物招领小程序

项目架构设计 这个项目采用前后端分离的方式&#xff0c;重新设计了两条链路来支撑程序的信息获取和传递 前端的小程序页面再启动页面渲染时&#xff0c;直接通过DBAPI从后端数据库获取信息&#xff0c;直接渲染在小程序中项目中给DBAPI的定位是快速从后端获取信息&#xff0…

C语言 计数控制循环

今天 我们来说 计数控制的循环 对于循环次数 我们已知的循环 我们称之为 计数控制的循环 这种情况 我们一般选择 for来实现 更为方便 先看一个案例 求 1 到 N 的累加合 我们代码可以这样写 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031…

一键自动化博客发布工具,chrome和firfox详细配置

blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。 很多小伙伴可能对于如何进行配置和启动不是很了解&#xff0c;今天带给大家一个详细的保姆教程&#xff0c;只需要跟着我的步骤一步来就可以无障碍启动了。 前提条件 前提条件当然是先下…

数据库MySQL的基本操作

在Linux里面&#xff0c;我们要对数据库MySQL进行操作时&#xff08;例如修改MySQL的密码&#xff09;&#xff0c;不是直接在我们的终端上进行操作&#xff0c;而是通过终端连接进入到MySQL里面去&#xff0c;在进行操作&#xff0c;写SQL语句。 而安装C等的开发库sudo命令&a…

【深度学习驱动的蛋白质设计技术与前沿实践-从基础到尖端应用】

RoseTTAFold&#xff0c;作为 David Baker 教授团队早期开发的蛋白质结构预测工具&#xff0c;在学术界与工 业界广受认可。然而&#xff0c;随着时间推移&#xff0c;仅局限于预测已知结构的蛋白质并不能满足生物医药和生 物工程领域对创新设计的需求。这促使 David Baker 教授…