XSS漏洞原理及利用跨站请求伪造CSRF

news2024/9/27 21:23:53

XSS漏洞原理及利用&跨站请求伪造CSRF

  • XSS
    • 一、案例
    • 二、什么是XSS
    • 三、XSS危害
    • 四、XSS的分类
      • 4.1、反射型XSS
        • 4.1.1、介绍
        • 4.1.2、利用过程
      • 4.2、存储型XSS
        • 4.2.1、介绍
        • 4.2.2、利用过程
        • 4.2.3、案例
      • 4.3、DOM型XSS
        • 4.3.1、介绍
        • 4.3.2、常用的DOM方法
        • 4.3.3、案例
          • 4.3.3.1、代码分析
          • 4.3.3.2、利用分析
    • 五、XSS三种类型的比较
    • 六、防御方式
  • CSRF
    • 一、介绍
    • 二、危害
    • 三、漏洞现状
    • 四、漏洞利用
      • 4.1、Burp抓包一>生成CSRF PoC
      • 4.2、利用PoC
      • 4.3、不用点击的PoC
    • 五、防御

XSS

一、案例

  • xss.html
<!DOCTYPE htmL>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>案例</title>
</head>
<body>
    <form action="">
        What is your name?
        <input type="text" name="name"><br><br>
        <input type="submit" value="提交">
    </form>
    <p>
    <?php
        if(isset($_GET['name'])){
            $name =$_GET['name'];
            echo "hello,$name";
        }
    ?>
    </p>
</body>
</html>

在这里插入图片描述

有什么问题吗?

在这里插入图片描述

攻击利用

在这里插入图片描述

<script>alert("xss")</script>

二、什么是XSS

  • XSS(Cross Site Scripting)跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets—)的缩写CSS混合,所以改名为XSS。
  • XSS原理:攻击者在网页中嵌入客户端脚本(通常是javaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本攻击。

在这里插入图片描述

三、XSS危害

1、针对用户

  • 盗取Cookie
  • 网络钓鱼
  • 植马挖矿
  • 广告刷流量

2、针对Web服务

  • 劫持后台
  • 篡改页面
  • 内网扫描
  • 制造蠕虫

常出现的场景:

1、重灾区:评论区、留言区、个人信息、订单信息等
2、针对型:站内信、网页即时通讯、私信、意见反馈
3、存在风险:搜索框、当前目录、图片属性等

四、XSS的分类

4.1、反射型XSS

4.1.1、介绍

  • 反射型XSS是非持久型、参数型的跨站脚本,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
  • 出现场景:多出现在搜索框或者输入框。

在这里插入图片描述

  • 如:http://47.109.71.232:8081/
    在这里插入图片描述

4.1.2、利用过程

在这里插入图片描述

4.2、存储型XSS

4.2.1、介绍

  • 存储型XSS:恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性持久性
  • 比较常见的场景是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后, 所有访问该博客的用户,都会在他们的浏览器中执行这段恶意js代码。

在这里插入图片描述

4.2.2、利用过程

在这里插入图片描述

4.2.3、案例

  • xss.php
<?php
     if(isset($_POST['message'])){
         $message = $_POST['message'];
         file_put_contents("message.txt", $message);
    }
?>
<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
     <title>存储型XSS</title>
</head>
<body>
     <h1>存储型XSS案例</h1>
     <form action="" method="post">
         留下你的评论:<textarea rows="5" cols="30" name="message"></textarea>
         <input type="submit" value="提交">
    </form>
    <p>游客说:
        <?php
            if(file_exists('message.txt')){
                echo file_get_contents('message.txt');
            }else{
                echo "说点啥吧!";
            }
        ?>
 </p>
</body>
</html>

在这里插入图片描述

  • 换个浏览器打开该网页,依旧会出现弹窗。

在这里插入图片描述

  • 代码分析:

在这里插入图片描述

4.3、DOM型XSS

4.3.1、介绍

  • DOM,全称Document Object Model(文档对象模型),是W3C推荐的一种独立于平台和语言的标准,定义了访问HTML和XML文档的标准。
  • Dom即window对象下内置的document对象。

在这里插入图片描述

  • DOM-XSS简单去理解就是输出点在DOM,属于特殊的反射型XSS。
    在这里插入图片描述

4.3.2、常用的DOM方法

方法描述
getElementById()返回带有指定 ID 的元素
getElementsByTagName()返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)
getElementsByClassName()返回包含带有指定类名的所有元素的节点列表
appendChild()把新的子节点添加到指定节点
removeChild()删除子节点
replaceChild()替换子节点
insertBefore()在指定的子节点前面插入新的子节点
createAttribute()创建属性节点
createElement()创建元素节点
createTextNode()创建文本节点
getAttribute()返回指定的属性值
setAttribute()把指定属性设置或修改为指定的值

4.3.3、案例

4.3.3.1、代码分析
  • xss.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device?width, initial-scale=1">
	<title>DOM型XSS</title>
</head>
<body>
<h1>DOM型XSS</h1>
<div>name:
	<script>
		if(document.location.href.indexOf("name") >= 0){
			var name = document.location.href.substring(document.location.href.indexOf("name=")+5);
			document.write(decodeURI(name));
		}else{
			document.write('Ryan');
		}
	</script>
</div>
<form>
	What is your name?
	<input type="" name="name">
	<input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述

  • 代码分析:
    在这里插入图片描述
4.3.3.2、利用分析
  • 在输入框中输入XSS探测脚本,浏览器没有触发弹窗。
<script>alert('xss')</script>

在这里插入图片描述

  • 在url中输入XSS探测脚本,浏览器会直接触发弹窗。
    在这里插入图片描述

  • 因为DOM结点在URL处。

五、XSS三种类型的比较

XSS类型存储型反射型DOM型
触发过程1、黑客构造XSS脚本;2、正常用户访问携带XSS脚本的页面正常用户访问携带XSS脚本的URL正常用户访问携带XSS脚本的URL
数据存服务器URLURL
谁来输出后端Web应用程序后端Web应用程序前端JavaScript
输出位置HTTP响应中HTTP响应中动态构造的DOM节点中
是否持久

六、防御方式

  1. 对用户的输入进行合理验证。
    对特殊字符(如 <、>、 ’ 、 ”等)以及<script>javascript等字符进行过滤。
  2. 根据数据位置设置恰当的输出编码。
    根据数据将要置于 HTML 上下文中的不同位置(HTML 标签、HTML 属性、JavaScript脚本、CSS、URL),对所有不可信数据进行恰当的输出编码。
  3. 设置HttpOnly属性。

CSRF

一、介绍

  • CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造
  • 原理:攻击者利用目标用户的身份,执行某些非法的操作 。
  • 跨站点的请求:请求的来源可以是非本站。
  • 请求是伪造的:请求的发出不是用户的本意。

在这里插入图片描述

二、危害

  • 篡改目标站点上的用户数据。
  • 盗取用户隐私数据。
  • 作为其他攻击的辅助攻击手法。
  • 传播CSRF蠕虫。

三、漏洞现状

CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度…而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF 为“沉睡的巨人”。

四、漏洞利用

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

4.1、Burp抓包一>生成CSRF PoC

1、修改用户数据后,提交。

在这里插入图片描述

2、抓包。

在这里插入图片描述

3、右键生成PoC。

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

4、复制PoC。

在这里插入图片描述

5、新建PoC的html文档。

在这里插入图片描述

4.2、利用PoC

1、修改数据。

在这里插入图片描述

2、访问。

在这里插入图片描述

3、点击。

在这里插入图片描述

4.3、不用点击的PoC

1、修改。

在这里插入图片描述

2、访问PoC的链接后,直接跳转到pikachu的页面。

在这里插入图片描述

五、防御

1、检查HTTP Referer是否是同域网。
2、限制Session Cookie的生命周期,减少被攻击的概率。
3、使用一次性token。

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

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

相关文章

Spring源码之XML文件中Bean标签的解析1

读取XML文件&#xff0c;创建对象 xml文件里包含Bean的信息&#xff0c;为了避免多次IO&#xff0c;需要一次性读取xml文件中所有bean信息&#xff0c;加入到Spring工厂。 读取配置文件 new ClassPathResource("applicationContext.xml")ClassPathResource是Sprin…

vue动态生成行

vue代码 <el-table :data"form.lineInfos" :bordertrue style"width: 99.99%;"> <el-table-column type"index" label"序号" width"50"></el-table-column> <el-table-column prop"unitPrice&qu…

【Linux 网络】 传输层协议之TCP协议 TCP的三次握手和四次挥手

TCP协议 TCP协议段格式谈谈什么是 “可靠” 和 “不可靠”TCP协议段——序号与确认序号TCP协议段——窗口大小TCP协议段 —— 六个标志位确认应答机制&#xff08;ACK&#xff09;超时重传机制连接管理机制TCP 的三次握手四次挥手TCP三次握手四次挥手总结图 滑动窗口流量控制拥…

18. SpringBoot 如何在 POM 中引入本地 JAR 包

❤️ 个人主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;成功解决 BUG 合集 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架&#xff0c;它提供了快速开发应用程…

第126天:内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac

知识点 #知识点&#xff1a; 1、入站规则不出网上线方案 2、出站规则不出网上线方案 3、隧道技术-SMB&ICMP&DNS&SSH 4、控制上线-Linux&Mac&IOS&Android-连接方向&#xff1a;正向&反向&#xff08;基础课程有讲过&#xff09; -内网穿透&#xf…

vue2-vue项目中你是如何解决跨域的?

1、跨域是什么&#xff1f; 跨域本质是浏览器基于同源策略的一种安全手段。 同源策略&#xff08;sameoriginpolicy&#xff09;&#xff0c;是一种约定&#xff0c;它是浏览器最核心也是最基本的安全功能。 所谓同源&#xff08;即指在同一个域&#xff09;具有以下三个相同点…

Java对象的前世今生

文章目录 一、创建对象的步骤二、类加载机制三、内存分配指针碰撞 (内存连续)空闲列表 (内存不连续) 四、创建对象的5种方法五、浅拷贝与深拷贝 以下一行代码内部发生了什么&#xff1f; Person person new Person();一、创建对象的步骤 根据JLS中的规定&#xff0c;Java对象…

牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码

1、背景 Spring的核心思想就是容器&#xff0c;当容器refresh的时候&#xff0c;外部看上去风平浪静&#xff0c;其实内部则是一片惊涛骇浪&#xff0c;汪洋一片。Springboot更是封装了Spring&#xff0c;遵循约定大于配置&#xff0c;加上自动装配的机制。很多时候我们只要引…

Scala编程语言入门教程

Scala教程 方便个人学习和查阅 学习目标 Scala介绍 简介 Scala创始人Martin Odersky马丁奥德斯基 再回到我们的scala语言&#xff0c;在Scala官网https://www.scala-lang.org/介绍了其六大特征。 Java和scala可以混编 类型推测(自动推测类型) 并发和分布式&#xff08;Ac…

nginx的优化和防盗链 重要!!!

实验一、隐藏版本号 要把nginx的版本号隐藏起来&#xff0c;防止恶意攻击 方法一&#xff1a;修改配置文件 在http模块中加入一个命令 server_token off&#xff1b; 过程&#xff1a; 备份&#xff0c;改配置文件一定要备份 修改配置文件 在http模块中添加 server_tokens …

城市与AI,正待济沧海

厦门&#xff0c;自古以来是海上丝绸之路的战略支点&#xff0c;是中国海洋贸易网络中的明珠。外来的理念与技术自厦门而入&#xff0c;中国的文化与商品自厦门而出。新事物、新科技往往在这里焕发最耀眼的生机——比如说&#xff0c;人工智能。 多年来&#xff0c;厦门持续推进…

外部排序算法总结

一.内排总结 在之前博客里&#xff0c;博主已经介绍了各种内部排序算法的原理和C语言代码实现&#xff0c;不懂的朋友可以在同系列专栏里选择查看&#xff0c;今天介绍常见排序算法的最后一点&#xff0c;也就是外部排序。在此之前&#xff0c;我们先对外部排序的各种算法做一…

Centos7/8 安装/配置 Redis5

目录 一、安装 Redis 二、创建符号链接 1.针对可执行程序设置符号链接 2.针对配置文件设置符号链接 三、修改配置文件 1.修改 ip 地址 2.关闭保护模式 四、设置工作目录 1.创建工作目录 2.在配置文件中&#xff0c;配置工作目录 五、设置日志文件 1.创建日志目录 2…

vue3中的自定义指令用法

我们都知道vue2中自定义指令全局和局部是这样写的 局部&#xff1a; 全局&#xff1a; 可vue3写法发生改变&#xff0c;如下&#xff1a; 全局&#xff1a; 局部&#xff1a;

python高阶技巧

目录 设计模式 单例模式 具体用法 工厂模式 优点 闭包 案例 修改闭包外部变量 闭包优缺点 装饰器 装饰器原理 装饰器写法 递归 递归的调用过程 递归的优缺点 用递归计算阶乘 设计模式 含义&#xff1a;设计模式是一种编程套路&#xff0c;通过这种编程套路可…

Docker极速安装Jenkins

安装 Jenkins 是一个常见的任务&#xff0c;使用 Docker 进行安装可以简化该过程并确保环境一致性。以下是在 Docker 中安装 Jenkins 的详细步骤&#xff1a; 安装 Docker: 首先&#xff0c;请确保您已在目标机器上安装了 Docker。根据您的操作系统&#xff0c;可以在 Docker 官…

展示Streamlit文本魔力(六):从头顶到脚尖

文章目录 1 前言✨2 st.markdown - 引入丰富的Markdown文本3 st.title - 引入引人注目的大标题4 st.header - 引入简洁的小标题5 st.subheader - 添加次级标题6 st.caption - 添加解释性文字7 st.code - 显示代码块8 st.text - 显示文本9 st.latex - 显示LaTeX公式10 st.divide…

【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)

这篇文章&#xff0c;主要介绍如何使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;创建Freemarker工具类 &…

linux下绑定进程到指定CPU的操作方法

taskset简介 # taskset Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]] Show or change the CPU affinity of a process. Options: -a, --all-tasks operate on all the tasks (threads) for a given pid -p, --pid operate on ex…

高级web前端开发工程师的职责说明(合集)

高级web前端开发工程师的职责说明1 职责&#xff1a; 1、根据需求文档&#xff0c;完成PC端、移动端页面及交互的开发&#xff0c;并保证兼容性和确保产品具有优质的用户体验; 2、熟练使用 HTML 、 CSS 、 JS 、 Ajax 等技术&#xff0c;能解决各种浏览器兼容性问题&#xff…