ssrf学习(ctfhub靶场)

news2024/10/6 6:54:24

ssrf练习

目录

ssrf类型

漏洞形成原理(来自网络)

靶场题目

第一题(url探测网站下文件)

第二关(使用伪协议)

关于http和file协议的理解

file协议

http协议

第三关(端口扫描)

第四关(post请求)


ssrf类型
漏洞形成原理(来自网络)

很多网站提供了从其他的服务器上获取数据的功能。通过指定的URL,网站可以从其他地方获取图片、下载文件、读取文件内容等。SSRF的实质就是利用存在缺陷的Web站点作为代理攻击远程和本地的服务器。

SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器获取数据的功能但没有对目标地址做过滤与限制。攻击者可以利用改漏洞获取内部系统的一些信息(因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内网系统)。

靶场题目

第一题(url探测网站下文件)

非常的简单,ok呀,有30分钟,不着急,这一关的目的应该是通过url跳转到内网服务器上的127.0.0.1/flag,没有做任何限制,导致可以直接读取到内网的文件

/?url=http://127.0.0.1/flag.php

?url这个意思应该是参数可控,导致可以跳转到别的界面

题目让我们访问内网的http://127.0.0.1/flag.php

开头也是直接给出来了啊,非常的不错,没有什么难度

第二关(使用伪协议)

Apache2的默认目录在:/var/www/html,也就是网站的默认目录

让我想一想,这一关和上一关有什么不同的地方,上一关是直接读取内网的127.0.0.1/flag.php文件,那这一关为什么不可以呢?

我尝试用http协议,发现并不能访问到这个文件

用file协议就可以获取,当然也可以写成/?url=http:///var/www/html/flag.php,/应该是表示本地的IP地址的意思

关于http和file协议的理解

file协议主要是读取本地的文件,是不对外开放的

http协议是对外开放的,在搭建的网站下的目录

file协议

本地系统的文件

http协议

,例如读取到pikachu下的文件(靶场的本地网站)

第三关(端口扫描)

这一关需要使用dict伪协议了,具体是什么我也不知道啊

在网上找的

Dict协议查看端口,版本信息;向服务器端口请求curl命令

来靶场给的提示

开局一个IP地址啊,非常的人性化,

那我们直接加上dict协议,再打开我们的bp开始爆破

添加payload位置

payload选数值,8000-9000

爆破到8839号时,发现长度不一样,但是里面却没有flag,怎么回事,后来发现需要使用http协议去访问这个网站,嗯?那我一开始使用http协议不好吗?反正就是看那个长度是不是一样的,

它的目的是啥,就是判断这个端口是否开放吗,那我用http协议不也是可以看这个端口是不是开放的,那不就是打得开就是开放的,

诶好像不是这样的,如果是22号端口(ssh)话,用http协议是不能判断是不是开放的,如果22号端口开放的话就可以爆破了,真聪明。好了,用http协议直接查看这个端口吧

http协议查看端口,就是这个网站的内容咯,ok啊,主页就是flag

第四关(post请求)

ok呀,开局先看wp,不然我不会写,不就是浪费我50个金币了,哎,之前金币一下就用光了,这下给省着点了,这道题好像有点麻烦,呜呜呜,以下内容参考ctfhub之ssrf练习

先分析一下,

首先利用file协议进入file:///var/www/html/index.php意思是先看他的网站主页源码吧

然后再就没了,然后我们再看file:///var/www/html/flag.php

代码的意思是让我们用post方法提交一个key值,然后它就给我们返回一个flag

key值怎么获取呢,那就是要用url://127.0.0.1/flag.php,获取key值,要问我怎么知道key值在这个地方的话,我也不晓得,跟着网上一步一步做的Just View From 127.0.0.1,看网上好像是这个提示知道了key值是这里,要是我自己做,我哪知道 啊,我了个豆

然后再由于curl支持gopher协议,所以这里是利用curl进行进行post请求,完成内网攻击。

起码你必须包含以下要素

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=1e91e9e5b8b3cfe84f5442b9739553c6


解释几个可能存在的疑问:
1.为什么这里并没有使用curl,直接从网页上发起请求就可以了?
因为index.php本身就有curl_exec(),在截取url之后的参数后本来就能够完成操作了。

2.burp suite修改参数直接post行不行?
不行,虽然能够更改包参数,但是我们无法做到从服务器发起请求

3.为什么需要两次编码?
这是因为在浏览器的地址栏进行get传参时,浏览器会自动进行一次UrlDecode()的解码。但是这里curl就需要url编码的东西,所以需要编两次

参考CTFHub技能树 Web-SSRF POST请求_ctfhub 知识树 post-CSDN博客

注:在第一次编码后的数据中,将%0A全部替换为%0D%0A。
因为 Gopher协议包含的请求数据包中,可能包含有=、&等特殊字符,
避免与服务器解析传入的参数键值对混淆,所以对数据包进行 URL编码,
这样服务端会把%后的字节当做普通字节。

好了,开靶场了,寄,什么提示也没有,这是让我盲猜吗,是要根据前几关来做出判断吗

好了,根据前几关,我学了http协议、file协议,

先看一下http://127.0.0.1/index.php和http://127.0.0.1/index.php这里面有什么吧,前几关也是这样的,ok呀,找到了一个key值

在从网站下的目录找一下吧file://127.0.0.1/var/www/html/flag.php这里的代码没来的及截图

其实就是让我用post提交一个key值且ip地址为127.0.0.1,如果正确就返回flag

然后编码,替换我自己的key值

_POST%20/flag.php%20HTTP/1.1%0d%0AHost:127.0.0.1%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:36%0d%0A%0d%0Akey=d2c25785320f2cf34b3fcc8eb9e66c92%0d%0a

在编码

gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250d%250AHost:127.0.0.1%250d%250AContent-Type:application/x-www-form-urlencoded%250d%250AContent-Length:36%250d%250A%250d%250Akey=d2c25785320f2cf34b3fcc8eb9e66c92%250d%250a

把编码的值放到框框里,这个框框应该是用post方法提交的,试着试着好像错了,我就在url上提交了,        

靶场时间不够了,我还续费了10分钟,其实我是把别人的payload复制过来了,改成了我自己的key值

再分析一下,需要gopher协议,换行符需要是%0D%0A,别问为啥,我也不晓得

content-length这里需要换两行(换一行行不行我也没有试过)

但是我自己去编码的时候空格会编码成加号,/会编码成%2f,但是别的文章没有,还有就是POST前面为什么会出现下划线,如果去掉会怎么样,不想再开一次靶场了,看看有没有别的靶场要不要金币

参考文章

SSRF漏洞原理解析[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)

Ubuntu 18.04 Apache2默认网站目录和默认网站主页修改_改变apache2的目录默认样式-CSDN博客

http协议与file协议_浏览器file协议-CSDN博客

服务器端请求伪造--SSRF - FreeBuf网络安全行业门户

SSRF - ctfhub - 1【内网访问、伪协议读取、端口扫描、POST详解、上传文件】_ssrf用bp扫描的协议-CSDN博客

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

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

相关文章

Linux自动化构建工具Make/Makefile

make是一个命令 makefile是一个文件 touch 创建并用vim打开makefile 写入依赖对象和依赖方法 mycode是目标文件 第二行数依赖方法 以tab键开头 make makefile原理 makefile中写的是依赖关系和依赖方法 clean英语清理文件 后不用加源文件。.PHONY定义clean是伪目标。 make只…

各省份-产业链现代化水平(2001-2022年)

产业链现代化水平是一个综合性指标,它为我们提供了一个多维度的视角来评估各省份在产业链现代化进程中的发展水平。这个指标涵盖了技术创新、产业升级、生产效率、产业结构优化等多个方面,包含原始数据、测算结果以及参考文献。 2001年-2022年各省份-产…

Debezium日常分享系列之:Debezium 3.0.0.Final发布

Debezium日常分享系列之:Debezium 3.0.0.Final发布 Debezium 核心的变化需要 Java 17基于Kafka 3.8 构建废弃的增量信号字段的删除每个表的详细指标 MariaDB连接器的更改版本 11.4.3 支持 MongoDB连接器的更改MongoDB sink connector MySQL连接器的改变MySQL 9MySQL…

vscode 连接云服务器(ubantu 20.04)

更改服务器系统 如果云服务器上的系统不是ubantu20.04的,可以进行更改: 登录云服务官网(这里以阿里云为例)点击控制台 点击服务器实例 点击更多操作、重置系统 点击重置为其他镜像、系统镜像:选择你要使用的系统镜像…

[Linux]:线程(三)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. POSIX 信号量 1.1 信号量的概念 为了解决多执行流访问临界区&#xff0c…

Java中的break、continue和return语句

break、continue和return break语句引入基本介绍基本语法示意图注意事项练习String字符串的比较 continue跳转控制语句基本介绍基本语法示意图 return跳转控制语句 break语句 引入 随机生成1-100的一个数,直到生成了97这个数,看看你一共用了几次&#…

前端性能优化 面试如何完美回答

前言 性能优化是目前在面试中被问到非常多的问题,主要就是通过各种算和技术来提高页和应用的速度和用户体前端性能优化的问题并不好回答 在回答的时候干万不要掉进一个误区,认为性能优化只是几个技术点而已,事实上性能优化涉及到的是多方面的…

【2024年10月测试通过】conda下使用虚拟环境安装最新版pytorch2.4+cuda12.4

开头先说重点: 1.采用conda的虚拟环境,会在沙盒环境下安装好所有所需包,而且该虚拟环境拷贝给其他人员可以直接用,很方便。 2.pytorch官网访问不了,有一个国内镜像推荐,地址为PyTorch - PyTorch 中文 3.…

unity ps 2d animation 蛇的制作

一、PS的使用 1.打开PS 利用钢笔工具从下往上勾勒填充 2.复制图层,Ctrl T,w调为-100% 3.对齐图层并继续用钢笔工具进行三角勾勒 3.画眼睛,按U快捷键打开椭圆工具,按住Shift可以画圆,填充并复制图层对称。 4.画笔工具,打开小…

Golang | Leetcode Golang题解之第458题可怜的小猪

题目: 题解: func poorPigs(buckets, minutesToDie, minutesToTest int) int {if buckets 1 {return 0}combinations : make([][]int, buckets1)for i : range combinations {combinations[i] make([]int, buckets1)}combinations[0][0] 1iterations…

「漏洞复现」用友U8 CRM config/fillbacksettingedit.php SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

蓝牙定位的MATLAB仿真程序(基于信号强度,平面内的定位,四个蓝牙基站)

这段代码通过RSSI信号强度实现了蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出,用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原理蓝牙定位的原理优缺…

【综合性渗透利器】- TscanPlus

如果你在寻找一款轻量级、实用且开源的漏洞扫描工具,那么 TscanPlus 绝对值得一试。这款工具由 TideSec 团队打造,以其简洁、高效、易用的特点,广受好评,目前在github上拥有1.5k star。 为什么推荐 TscanPlus? 无论你…

基于Zynq SDIO WiFi移植一(支持2.4/5G)

基于SDIO接口的WIFI&#xff0c;在应用上&#xff0c;功耗低于USB接口&#xff0c;且无须USB Device支持&#xff0c;满足某些应用场景 1 硬件连接 2 Vivado工程配置 3 驱动编译 3.1 KERNRL CONFIG (build ENV) 修改 export KERNELPATH<path of kernel header>export T…

【web安全】——SSRF服务器端请求伪造

1.SSRF漏洞基础 1.1SSRF漏洞概述与成因 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xf…

Java--IO高级流

缓冲流 缓冲流,也叫高效流&#xff0c;是对4个基本的FileXxx 流的增强&#xff0c;所以也是4个流&#xff0c;按照数据类型分类&#xff1a; 字节缓冲流&#xff1a;BufferedInputStream&#xff0c;BufferedOutputStream 字符缓冲流&#xff1a;BufferedReader&#xff0c;Buf…

Python | Leetcode Python题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; class Solution:def poorPigs(self, buckets: int, minutesToDie: int, minutesToTest: int) -> int:if buckets 1:return 0combinations [[0] * (buckets 1) for _ in range(buckets 1)]combinations[0][0] 1iterations minutesT…

StreamProvider组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了通道相关的内容,本章回中将介绍StreamProvider组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在Flutter中Stream是经常使用的组件,对该组件的监听可void main() {///让状态栏和程序的appBar融为一体…

yub‘s Algorithm Adventure Day6

链表相交 link&#xff1a;面试题 02.07. 链表相交 - 力扣&#xff08;LeetCode&#xff09; 思路分析 看到描述很直接的想到双指针&#xff0c;但是看到题解之后被K佬的神级理解折服&#xff0c;太妙了&#xff01; 双指针 public class Solution {public ListNode getIn…

计算机毕业设计 乡村生活垃圾管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…