CSRF(跨站请求伪造)和SSRF(服务端请求伪造)漏洞复现:风险与防护方法

news2024/11/25 4:26:37

这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。 

环境准备

一、CSRF(跨站请求伪造)

示例:假设用户在银行网站A上登录并保持会话活动,同时他也在浏览其他网站。攻击者在一个不可信任的网站B上创建了一个恶意链接,当用户点击该链接时,会自动向银行网站A发送一个恶意请求,导致执行未经授权的操作,例如转账或更改密码。

攻击相关介绍:

CSRF漏洞指的是攻击者利用受害者的身份,在其不知情的情况下发送恶意请求给目标网站。由于目标网站无法区分恶意请求和正常请求,因此会执行该请求。这使得攻击者能够以受害者的名义执行一些不被授权的操作,例如更改密码、发表言论、转账等。

原理:

        CSRF漏洞的原理在于浏览器的自动提交机制。当用户在目标网站登录后,并保持了有效的身份认证信息(如Cookie),在不退出登录的情况下访问其他网站时,浏览器会自动发送与目标网站相关的请求,而这些请求是由攻击者精心构造的。由于浏览器会自动携带受害者的身份认证信息,目标网站无法区分请求的真伪。

使用方法:

        攻击者通常通过诱导受害者点击恶意链接、访问恶意网站或打开包含恶意代码的邮件等方式来利用CSRF漏洞。一旦受害者在浏览器中执行了攻击者精心构造的请求,攻击就会生效。

使用前提:

  • 受害者必须已经登录并且在目标网站上保持有效的身份认证。
  • 目标网站的请求没有采取预防CSRF攻击的措施。

防御方法:

  • 使用CSRF Token:为每个用户生成一个唯一的令牌,并将其嵌入到表单中,请求验证时校验该令牌。
  • 检查Referer头:服务器端检查请求头中的Referer字段,确保请求来源于合法的网站。
  • 使用验证码:在进行敏感操作之前,要求用户进行验证码验证。
  • 添加随机请求参数:向请求中添加随机生成的参数,使攻击者无法预测和构造合法的请求。
  • 限制用户权限:根据用户的权限级别限制其操作范围,减少潜在危害。

攻击复现

1、打开DVWA的相关靶场

2、查看Burp Suite抓包情况

截取更改密码的请求

3、生成CSRF的PoC

然后更改请求参数

例如:

<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->

<body>
  <script>history.pushState('', '', '/')</script>
  <form action="http://192.168.1.91/dvwa/vulnerabilities/csrf/">
    <input type="hidden" name="password&#95;new" value="aaaa" />
    <input type="hidden" name="password&#95;conf" value="aaaa" />
    <input type="hidden" name="Change" value="æ&#148;&#185;å&#143;&#152;" />
    <input type="submit" value="Submit request" />
  </form>
</body>

</html>

4、最后就是诱导受害者点击打开我们的攻击脚本的链接

不过我这里是测试就直接在浏览器打开脚本

复现成功,其他类型的攻击方式操作也是这样。 

二、SSRF(服务端请求伪造)

示例:攻击者通过在受害服务器上构造恶意请求,使其尝试访问内部资源或第三方服务。例如,攻击者可以构造一个请求,要求目标服务器读取敏感文件并将其内容返回给攻击者,从而获取敏感信息。

攻击相关介绍

介绍:

        SSRF漏洞指的是攻击者通过操纵目标Web应用程序中的请求来发起伪造请求。攻击者利用这种漏洞可以访问应用程序所在服务器上的本地资源,或者攻击内部网络中的其他系统,并执行恶意操作。

原理:

        SSRF漏洞的原理在于目标Web应用程序对外部资源的访问没有进行充分的过滤和验证。攻击者通过构造特定的请求,可以控制目标服务器向任意的内部或外部资源发起请求。这使得攻击者能够访问未授权的资源、窃取数据或发起其他恶意操作。

使用方法:

        攻击者通常通过向目标Web应用程序提交包含特殊URL的请求来利用SSRF漏洞。这些URL可能指向内部系统的地址、本地文件、外部服务器等。一旦目标应用程序未能正确过滤或验证这些URL,并将其用于发送请求,攻击就会生效。

使用前提:

  • 目标Web应用程序存在SSRF漏洞,未对外部资源的访问进行充分的验证和过滤。
  • 攻击者能够向目标应用程序提交恶意请求,并控制或影响请求中的参数。

防御方法:

  • 输入验证和过滤:对用户输入的URL进行严格的验证和过滤,确保请求的目标是合法的。
  • 白名单限制:限制目标URL只能访问特定的合法域名或IP地址,避免访问不受信任的资源。
  • 特权分离:降低应用程序对内部资源的访问权限,仅允许访问必要的资源。
  • 使用代理服务:通过使用代理服务器来隔离应用程序与外部资源之间的联系,限制请求的范围。
  • 加强访问控制:对敏感资源进行严格的访问控制,确保只有授权用户才能访问。

造成SSRF漏洞的常见函数

fsockopen():

  • fsockopen()函数用于打开一个网络连接,并返回一个文件指针。它可以用于与远程服务器进行通信,包括发起请求和获取响应。 

file_get_contents()

  • file_get_contents()函数用于读取文件的内容,并将其作为字符串返回。它可以用于获取远程文件的内容,包括通过URL获取内容。

curl_exec():

  • curl_exec()函数用于执行一个CURL会话,并返回执行结果。它可以用于发送HTTP请求,并获取响应。

在SSRF漏洞中,以下协议有不同的作用: 

dict://协议:

  • dict://协议用于访问字典服务(DICT)。
  • 攻击者可以使用dict://协议来查询字典服务上的单词定义或其他信息。

示例:

  • attacker.com/ssrf.php?url=dict://dict.org:2628/define:test
  • 上述请求将在dict.org字典服务上查询单词"test"的定义。
  • 如果没有对URL参数进行适当的验证和过滤,攻击者可以构造恶意请求并通过应用程序执行不受信任的操作。

file://协议:

  • file://协议用于访问本地文件系统。
  • 攻击者可以使用file://协议来读取服务器上的文件,包括敏感文件或配置文件。

示例:

  • attacker.com/ssrf.php?url=file:///etc/passwd
  • 上述请求将尝试读取位于目标服务器上的/etc/passwd文件。
  • 如果应用程序没有正确限制文件协议的使用,攻击者可以访问和下载任意文件,导致信息泄露或系统安全受到威胁。

gopher://协议:

  • gopher://协议是一个早期的互联网协议,用于在客户端和服务器之间传输文本数据。
  • 攻击者可以使用gopher://协议来执行各种操作,如查询目录、读取文件等。

示例:

  • attacker.com/ssrf.php?url=gopher://example.com:70/_
  • 上述请求将尝试使用gopher协议连接到example.com的70端口。
  • 如果应用程序不对协议进行正确过滤和验证,攻击者可以利用gopher协议在目标服务器上执行未经授权的操作。

攻击复现

存在SSRF的脚本

将脚本存放在本地的phpStudy下的WWW目录下

<?php
$url = $_GET['url'];
$response = file_get_contents($url);
echo $response;
?>

解释:

这个脚本存在SSRF漏洞。原因在于它没有充分验证和过滤用户输入的URL参数$_GET['url'],攻击者可以通过构造恶意的URL参数,将请求发送到应用程序不受信任的目标地址上。

具体来说,攻击者可以通过向URL参数中添加如下payload,来进行SSRF攻击:

  • 添加错误的IP地址,以绕过IP地址验证
  • 添加危险的协议,如file://,以访问本地文件系统
  • 添加内网主机的IP地址或域名,以访问内部的敏感资源
  • 指定重定向URL,以执行钓鱼等攻击

举例来说,如果攻击者向URL参数中注入如下payload,就可以将请求发送到不受信任的目标地址上,进而发起一次SSRF攻击: Example Domain

为了防止这种攻击,开发人员必须对用户输入的URL参数进行严格的验证和过滤,确保只允许访问合法、安全可信任的URL。例如,可以使用白名单限制目标URL只能指向安全可信任的域名或IP地址,规避潜在的恶意资源。

file:// 协议
http://127.0.0.1/SSRF.php?url=file:///F:1.txt

复现成功

三、CSRF(跨站请求伪造)与SSRF(服务端请求伪造)漏洞主要区别

攻击对象:

  • CSRF攻击针对的是用户,利用用户已经身份验证的会话来执行未经授权的操作。
  • SSRF攻击针对的是服务器,通过欺骗服务器发起请求来访问内部资源或第三方服务。

目标:

  • CSRF攻击的目标是利用用户的身份和权限执行未经授权的操作,可能导致数据泄露、账户劫持、信息篡改等后果。
  • SSRF攻击的目标是访问服务器受限制的资源,可能导致内部系统暴露、敏感信息泄露、甚至远程命令执行等后果。

攻击方式:

  • CSRF攻击利用受信任用户的会话信息,诱使用户在已验证的网站上执行恶意请求,通过构造特殊的请求来执行攻击
  • SSRF攻击通过构造恶意请求,欺骗服务器发起请求到攻击者指定的目标,利用服务器信任的能力来获取敏感数据或执行其他操作

防御机制:

  • 针对CSRF攻击,常用的防御机制包括使用CSRF令牌验证、验证请求来源(Referer、Origin等)以及双重确认等措施。
  • 针对SSRF攻击,常用的防御机制包括使用白名单验证输入URL、限制访问服务器的网络连接和端口等。

总结:

  • CSRF攻击利用用户身份和会话执行未经授权的操作,而SSRF攻击利用服务器发起请求访问内部资源或第三方服务。
  • CSRF攻击的目标是利用用户权限,可能导致用户账户问题,而SSRF攻击的目标是访问服务器受限制的资源,可能导致服务器安全问题。
  • 针对这两种漏洞,有不同的防御机制可供开发人员采取,以保护应用程序和服务器的安全性。

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

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

相关文章

亚马逊加拿大站儿童床垫SOR安全要求SOR/2016-152

儿童床垫的安全性对于家庭的健康和孩子的成长至关重要。加拿大制定了一系列儿童产品安全法规&#xff0c;其中包括关于儿童床垫的安全要求。本文将介绍亚马逊加拿大站对儿童床垫的SOR安全要求&#xff0c;以帮助消费者选择安全可靠的产品。 本政策适用于与婴儿床、摇篮、婴儿摇…

Go死码消除

概念: 死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码 和 逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化 效果: 对于 const.go代码如下: package mainimport "fmt"func max(a, b i…

【数据库事务】

数据库事务 何为事务事务的特性原子性 Atomicity一致性 Consistency隔离性 IsolationRead UncommittedRead CommittedRepeatable ReadSerializable 持久性 Durability功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的…

嵌入式学得多拿得少?选好方向最重要!

嵌入式开发确实是一个知识领域非常广泛的行业&#xff0c;涉及到模电、数电、C语言、EDA、单片机、RTOS、ARM、Linux等等众多方面。然而&#xff0c;关于工资少的说法其实是有误导性的。如果按照这种说法&#xff0c;那要学习几年才能达到爱因斯坦的水平了&#xff01; 事实上&…

RTSP/Onvif流媒体视频平台EasyNVR视频平台旧版本视频播放出现花屏情况的处理方法

EasyNVR安防视频云服务是基于RTSP/Onvif协议的流媒体视频平台&#xff0c;可实现设备接入、实时直播、录像、检索与回放、云存储、视频分发、级联等视频能力服务&#xff0c;能分发RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC格式的视频流。 有用户反馈&#xff0c;在现场部署…

VR全景对行业发展有什么帮助?VR全景制作需要注意什么?

引言&#xff1a; 虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;早已不再是科幻电影的概念&#xff0c;而是在以惊人的速度改变着我们的世界。VR全景&#xff0c;作为其中的重要组成部分&#xff0c;正为多个行业带来了全新的机遇。 一、VR全景的应用领…

对分库分表进行批量操作

对ShardingJDBC基础了解&#xff1a;https://blog.csdn.net/m0_63297646/article/details/131894472 对批量操作案例&#xff1a;https://blog.csdn.net/m0_63297646/article/details/131843517 分为db0和db1两个库&#xff0c;每个库都有三张订单表&#xff0c;分表键根据年份…

核心交换机的六个基础知识

中午好&#xff0c;我的网工朋友 今天来聊聊核心交换机啊。 首先你要明确一个概念&#xff0c;接入层交换机、汇聚层交换机、核心层交换机并非是交换机的种类或者属性&#xff0c;只是由其所执行的任务来划分的。 从网络拓扑结构来讲&#xff0c;一个计算机网络系统结构需采用…

Soul的社交元宇宙之路,还有多远?

在元宇宙概念爆火的当下&#xff0c;以互联网为依托的虚拟社交逐步为用户承载起其空缺的精神交流与寄托&#xff0c;而在这其中&#xff0c;以“跟随灵魂找到你”为Slogan&#xff0c;主打年轻人社交元宇宙平台的APP--Soul则在这条赛道上凭借着独特的风格&#xff0c;逐步突出重…

Elasticsearch 7.6 - APi基础操作篇

ES7.6-APi基础操作篇 前言相关知识索引相关创建索引查询索引查询所有索引删除索引关闭与打开索引关闭索引打开索引 冻结与解冻索引冻结索引解冻索引 映射相关创建映射查看映射新增字段映射 文档相关(CURD)新增文档根据ID查询修改文档全量覆盖根据ID选择性修改根据条件批量更新 …

移动数据安全案例(MAG)| 好的方案是恰到好处的平衡

某基金公司是由国有商业银行直接发起设立并控股的合资基金管理公司&#xff0c;服务于超过5000万客户&#xff0c;其资产管理规模近2万亿。作为国内头部基金公司&#xff0c;在网络安全和数据安全的建设上已经非常完善。目前已在办公网敏感数据的创建、流转、存储等数据安全生命…

Python钢筋混凝土结构计算.pdf-混凝土构件计算

计算原理&#xff1a; 代码实现&#xff1a; #钢筋混凝土参数 def c_hrb(): global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk global a1,epsilon_cu fcukEcfcftftk0.0 HRBEsfyfypfyk0.0 #矩形应力图系数a1&#xff0c;C50以下为1.0 a11.0 #正截面混凝土极限压应变epsilon_cu&#…

IP网络广播系统有哪些优点

IP网络广播系统有哪些优点 IP网络广播系统有哪些优点&#xff1f; IP网络广播系统是基于 TCP/IP 协议的公共广播系统&#xff0c;采用 IP 局域网或 广域网作为数据传输平台&#xff0c;扩展了公共广播系统的应用范围。随着局域网络和 网络的发展 , 使网络广播的普及变为可能 …

透过康希诺,谈谈疫苗这个行业

这两天疫苗企业的财报陆续发布了&#xff0c;国外的辉瑞和默沙东&#xff0c;国内像康希诺、智飞生物这些&#xff0c;8月30日&#xff0c;康希诺公布2023年半年报&#xff1a;实现总收入2590.78万元&#xff0c;归母净利润亏损8.41亿元&#xff0c;主要系由于新冠疫苗产品需求…

【LeetCode题目详解】第九章 动态规划part01 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 (day38补)

本文章代码以c为例&#xff01; 一、力扣第509题&#xff1a;斐波那契数 题目&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a…

21.CSS的动态圆形进度条

效果 源码 <!doctype html> <html><head><meta charset="utf-8"><title>Animated Circular Progress | CSS Only</title><link rel="stylesheet" href="style.css"></head><body><di…

【前端demo】CSS border-radius可视化 原生实现

文章目录 效果原理代码 前端demo系列目录&#xff1a;https://blog.csdn.net/karshey/article/details/132585901 效果 参考&#xff1a; Fancy Border Radius Generator (9elements.github.io) https://border-radius.com/ CSS border-radius 新玩法(含可视化生成工具) - …

【实战】十一、看板页面及任务组页面开发(六) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十八)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

【LeetCode-中等题】437. 路径总和 III

文章目录 题目方法一&#xff1a;迭代层序 每层节点dfs 维护一个count变量 题目 方法一&#xff1a;迭代层序 每层节点dfs 维护一个count变量 思路&#xff1a; 层序遍历每一个节点遍历一个节点就对这个节点进行dfsdfs的同时&#xff0c;维护一个count变量&#xff0c;并且…

vue v-on 艾特@

vue v-on 内联代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…