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

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><?phpif(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
<?phpif(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>游客说:<?phpif(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.rhkb.cn/news/82770.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速完成MySQL数据的差异对比|NineData

在现代商业环境中&#xff0c;数据库是企业存储核心数据的重要工具&#xff0c;而 MySQL 作为最受欢迎的关系型数据库管理系统&#xff0c;广泛应用于各行各业。在容灾、数据迁移、备份恢复等场景下&#xff0c;为了确保两端或多端之间数据的一致性&#xff0c;通常需要对数据进…

Android 实现 RecyclerView下拉刷新,SwipeRefreshLayout上拉加载

上拉、下拉的效果图如下&#xff1a; 使用步骤 1、在清单文件中添加依赖 implementation ‘com.android.support:recyclerview-v7:27.1.1’ implementation “androidx.swiperefreshlayout:swiperefreshlayout:1.0.0” 2、main布局 <LinearLayout xmlns:android"http…

渐进式云渲染和模块式云渲染:二者的区别与选择

云渲染是一种利用云计算技术&#xff0c;将本地的渲染任务分配到远程的服务器上进行高效、快速、低成本的渲染的服务。云渲染可以帮助用户节省时间、资金和硬件资源&#xff0c;提高工作效率和质量。但是&#xff0c;在使用云渲染时&#xff0c;用户需要面对一个重要的选择&…

SpringBoot 底层机制分析[上]

文章目录 分析SpringBoot 底层机制【Tomcat 启动分析Spring 容器初始化Tomcat 如何关联Spring 容器】[上]搭建SpringBoot 底层机制开发环境Configuration Bean 会发生什么&#xff0c;并分析机制提出问题&#xff1a;SpringBoot 是怎么启动Tomcat &#xff0c;并可以支持访问C…

【iOS】autoreleasepool

来说一下最近在了解的autoreleasepool吧&#xff0c;我们可能平时书写过许多脑残代码&#xff0c;其有很多的缺陷但是我们可能当时学的比较浅就也不太了解&#xff0c;就像下面这样的&#xff1a; for (int i 0; i < 1000000; i) {NSNumber *num [NSNumber numberWithInt…

matlab使用教程(10)—脚本和函数

1.概述 MATLAB 提供了一个强大的编程语言和交互式计算环境。您可以使用此语言在 MATLAB 命令行中一次输入一个命令&#xff0c;也可以向某个文件写入一系列命令&#xff0c;按照执行任何 MATLAB 函数的相同方式来执行这些命令。使用 MATLAB 编辑器或任何其他文件编辑器可以创建…

HCIP实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】两个协议间进行多点双向重发布 【2】R7的环回没有宣告在OSPF协议中&#xff0c;而是后期重发布进入的 【3】解决环路&#xff0c;所有路径选择最优&#xff0c;且存在备份 实验思路如下&…

九、Spring 声明式事务学习总结

文章目录 一、声明式事务1.1 什么是事务1.2 事务的应用场景1.3 事务的特性&#xff08;ACID&#xff09;1.4 未使用事务的代码示例1.5 配置 Spring 声明式事务学习总结 一、声明式事务 1.1 什么是事务 把一组业务当成一个业务来做&#xff1b;要么都成功&#xff0c;要么都失败…

网络安全的相关知识点

网络安全威胁类型&#xff1a; 1.窃听&#xff1a;广播式网络系统。 2.假冒 3.重放&#xff1a;重复一份报文或者报文的一部分&#xff0c;以便产生一个被授权的效果。 4.流量分析 5.数据完整性破坏 6.拒绝服务 7.资源的非授权使用 8.陷门和特洛伊木马&#xff1a;木马病毒有客…

解数独(Java)

题目链接&#xff1a; 力扣 题目详情&#xff1a; 37. 解数独t编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只…

jmeter测试rpc接口-使用dubbo框架调用【杭州多测师_王sir】

1.基于SOAP架构。基于XML规范。基于WebService协议。特点:接口地址?wsdl结尾2.基于RPC架构&#xff0c;基于dubbo协议&#xff0c;thrift协议。SpringCloud微服务。3.基于RestFul架构&#xff0c;基于json规范。基于http协议(我们常用的都是这种&#xff0c;cms平台也是) Rest…

Git笔记--Ubuntu上传本地项目到github

目录 1--基本配置 2--本地上传 1--基本配置 ① 创建ssh-key cd ~/.sshssh-keygen -t rsa -C "邮箱地址"② 查看并关联ssh-key gedit id_rsa.pub 复制内容&#xff0c;在 GitHub 中依次点击 Settings -> SSH and GPG keys -> New SSH key&#xff0c;将 id…

实战指南:使用OpenCV 4.0+Python进行机器学习与计算机视觉

&#x1f482; 个人网站:【办公神器】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 1.背景2. 安装和配…

CTF Stegano练习之隐写初探

今天要介绍的是CTF练习中的Stegano隐写题型 。做隐写题的时候&#xff0c;工具是很重要的&#xff0c;接下来介绍一些工具。 1、TrID TrID是一款根据文件二进制数据特征进行判断的文件类型识别工具。虽然也有类似的文件类型识别工具&#xff0c;但是大多数都是使用硬编码的识…

【计算机视觉|生成对抗】生成对抗网络(GAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Generative Adversarial Nets 链接&#xff1a;Generative Adversarial Nets (nips.cc) 摘要 我们提出了一个通过**对抗&#xff08;adversarial&#xff09;**过程估计生成模型的新框架…

CentOS虚拟机更改屏幕锁屏时间

&#xff08;1&#xff09;点击“应用程序”&#xff0c;再点击“系统工具”&#xff0c;再点击“设置” &#xff08;2&#xff09; &#xff08;3&#xff09;在“设置”中点击“Privacy”&#xff0c;点击“锁屏”

Java基础入门篇——While循环(十二)

目录 一、循环结构语句 二、while循环语句 三、do-while循环语句 四、break使用 一、循环结构语句 在实际生活中经常会将同一件事情重复做很多次。例如&#xff0c;在做眼保健操的第四节轮刮眼眶时&#xff0c;会重复刮眼眶的动作&#xff1a;打乒乓球时&#xff0c;会重复…

新的里程碑!纪念正月十六工作室博客总访问量突破两百万

时值盛夏&#xff0c;清风徐徐&#xff0c;不觉间我们的博客访问量又迈入了新的里程碑——访问量突破两百万&#xff01; 总访问量突破百万&#xff1a; 个人成就&#xff1a; 记得上次突破重大里程碑还是去年夏天&#xff0c;那时我们重修岳阳楼&#xff0c;追往忆&#…

Python web实战之Django 的 RESTful API 设计详解

关键词: Python, Web 开发, Django, RESTful API 1 API的一些事儿 1.1 什么是API&#xff1f; API是应用程序编程接口&#xff08;Application Programming Interface&#xff09;的缩写。它是一种定义了不同软件组件之间交互方式的规范。API允许不同的应用程序之间进行通信和…

C语言内嵌汇编

反编译&#xff08;二进制文件或者so库&#xff09; objdump --help objdump -M intel -j .text -ld -C -S out > out.txt #显示源代码同时显示行号, 代码段反汇编-M intel 英特尔语法-M x86-64-C:将C符号名逆向解析-S 反汇编的同时&#xff0c;将反汇编代码和源代码交替显…