pikache靶场通关——SSRF攻击

news2024/11/15 10:30:45

文章目录

  • 前言
  • 环境
  • 第一关、SSRF(curl)
    • Step.1、http协议链接本地文件
    • Step.2、file协议读取C盘下的配置文件
    • Step.3、dict协议扫描内网其他主机的端口开放情况
    • Step.4、使用burp扫描内网其他主机的端口开放情况
    • Step.5、后端源码分析
  • 第二关、SSRF(file_get_content)
    • Step.1、连接指定网址
    • Step.2、file协议读取C盘下的配置文件
    • Step.3、php伪协议读取php源码
    • Step.4、http协议读对方根目录的文件
    • Step.5、后端源码分析
      • file_get_contents 与 curl_exec的区别


前言

SSRF(Server-Side Request Forgery:服务器端请求伪造)

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

数据流:攻击者----->服务器---->目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。

在这里插入图片描述
靶场一共有2关,现我们就开始通关吧。


环境

靶场安装机器:Windows10(192.168.1.106)


第一关、SSRF(curl)

在这里插入图片描述
如图,就一个链接,点击它看看吧
在这里插入图片描述

Step.1、http协议链接本地文件

在网站输入框中的url=后面改成:127.0.0.1/2.php
在这里插入图片描述
发现可以链接根目录的文件

Step.2、file协议读取C盘下的配置文件

把url=后面的内容修改为:file:///C:/Windows/win.ini
在这里插入图片描述
也可以顺利读出来。

Step.3、dict协议扫描内网其他主机的端口开放情况

我这里探测的主机是192.168.1.114
在这里插入图片描述
如图,显示无权限链接,就说明该主机开启了数据库。

这里同理,也可以使用burp,来查看该主机开启了什么端口。具体操作步骤如下。

Step.4、使用burp扫描内网其他主机的端口开放情况

为了节省时间就扫描了0~65535端口的主机来进行探测

抓包,并把抓到的包发送到攻击模块
在这里插入图片描述

配置payload,为了节省时间,就扫描了1~8080端口
在这里插入图片描述
在这里插入图片描述
设置为单线程准确性更高

结果如下:
在这里插入图片描述
到这里第一关通关

Step.5、后端源码分析

在这里插入图片描述
前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。


第二关、SSRF(file_get_content)

在这里插入图片描述
点击一下,看看
在这里插入图片描述

Step.1、连接指定网址

这里就直接是选用baidu了
在这里插入图片描述

Step.2、file协议读取C盘下的配置文件

把url=后面的内容修改为:file:///C:/Windows/win.ini
在这里插入图片描述

Step.3、php伪协议读取php源码

这里读取的是一个放在www目录下的2.php文件
php://filter/read=convert.base64- encode/resource= ../../../2.php
在这里插入图片描述

Step.4、http协议读对方根目录的文件

我这里读取一个名为hello.txt的文件内容
在这里插入图片描述
第二关通关

Step.5、后端源码分析

在这里插入图片描述
本关使用了file_get_contents() 函数,该函数将指定 URL 的文件读入成一个字符串并返回。

file_get_contents 与 curl_exec的区别

  1. curl_exec 支持更多协议,有http、https、ftp、gopher、telnet、dict、file、ldap;模拟 Cookie 登录,爬取网页;FTP 上传下载。

  2. file_get_contents 只能使用 GET 方式获取数据。


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

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

相关文章

09-C++学习笔记-文件操作

📚 输入输出流的概念 在C中,输入输出流是用于在程序和外部设备(如键盘、显示器、文件等)之间进行数据传输的机制。输入流用于从外部设备读取数据到程序中,输出流用于将程序中的数据输出到外部设备。 C中的输入输出流…

实现自定义exporter

1、实现自定义exporter 1.1 四种常用Metrics 1.1.1 Counter 连续增加不会减少的计数器,可以用于记录只增不减的类型,例如:网站访问人数,系统运行时间等。 对于 Counter 类型的指标,只包含一个increment()的方法&…

Eclipse中的实用工具之JUnit

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于JUnit的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 是什么 为什么要用 怎么用 是什么 JUnit…

奇舞周刊第497期:解锁 PDF 文件:使用 JavaScript 和 Canvas 渲染 PDF 内容

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 解锁 PDF 文件:使用 JavaScript 和 Canvas 渲染 PDF 内容 最近研究了 Web 的 FileSystemAccess Api,它弥补了 Web 长期以来缺少的能力:操作用户…

《PyTorch深度学习实践》第九讲 多分类问题

b站刘二大人《PyTorch深度学习实践》课程第九讲多分类问题笔记与代码:https://www.bilibili.com/video/BV1Y7411d7Ys?p9&vd_sourceb17f113d28933824d753a0915d5e3a90 二分类问题中计算出 P ( y 1 ) P(y1) P(y1)即可直接得到 P ( y 0 ) P(y0) P(y0)&#xff0…

LeetCode 打卡day46-- 单词拆分和多重背包问题

一个人的朝圣 — LeetCode打卡第46天 知识总结 Leetcode 139. 单词拆分题目说明代码说明 知识总结 今天写了一道题目, 但是还挺难的, 而且是面试高频题目 还过了一遍多重背包问题. 多重背包与01背包的区别在于多重背包限制了物品的个数, 某些物品的个数可能不为1, 可以使用两…

Opencascade源码学习之模型算法_建模算法介绍

Opencascade源码学习之模型算法_建模算法介绍 介绍几何工具相交两曲线相交曲线曲面相交两曲面相交 插值Geom2dAPI_InterpolateGeomAPI_Interpolate 约束的直线和圆约束类型可用的线和圆的类型外部/内部直线的方向两个圆相切给定半径的圆与两个圆相切算法的类型 约束的曲线和曲面…

初识React/JSX

JSX ​​​​​​​推荐使用小括号包裹jsx

【Linux】硬链接 和 软链接

为了方便用户访问文件,Linux提供了一种称为连接(link)的机制,可以将一个文件或目录与另一个文件或目录建立关联,从而实现多个路径指向同一个文件或目录的效果。 一、概述二、硬链接和软链接详解2.1 硬链接2.11 硬链接的…

ASIC 数字设计:概述和开发流程

概述 集成电路是由硅晶圆(wafer)切割出来的芯片(die)组成的。每个晶圆可以切割出数百个芯片。 ASIC是指针对特定应用而设计的集成电路(Application Specific Integrated Circuit),与通用的存储器…

ctfhub靶场练习——SSRF攻击

文章目录 前言关卡、内网访问关卡、伪协议读取文件关卡、端口扫描关卡、POST1、使用http协议查看本地的flag.php文件2、使用burp抓包,并发送到Repeater模块进行操作3、构造一个简单的POST请求:4、对构造的post请求进行url编码第一次编码:对第…

【裸机开发】GPT 定时器(一) —— GPT的功能、寄存器解析

后续需要使用 GPT 计数器实现中断以及延时,这里我们需要先了解一下GPT的功能以及相关寄存器。 目录 一、GPT 定时器的功能 1、计数器 2、输入捕获 3、输出比较(GPT的两种工作模式) 二、寄存器解析 1、GPTx_CR 2、GPTx_PR 3、GPTx_SR …

Jetson Nano烧写系统镜像

Jetson Nano是一款形状和接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,60Hz视频解码。 1.烧录前准备 电源线(必备&#xf…

游戏陪玩语音聊天系统3.0商业升级独立版本源码

首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码 1、增加人气店员轮播 2、优化ui界面丨优化游戏图标展示丨优化分类展示 3、增加动态礼物打赏功能 4、增加礼物墙功能 增加店员满足业绩,才能升级功能 5、增加店员等级不同,可接…

操作系统第4章习题

B 一个目录文件包含多个目录项 B. 在打开文件的时候还不用 只有在读文件的时候 才需要把数据读到内存中 C 不完整 D 在外存中 FCB不是文件控制块吗 为什么是文件目录项 文件属性:有的文件是只读的 访问控制的灵活性较高

【前端2】jquary,bootstrap,vue

文章目录 1.jquary:选择器1.1 jquery框架引入:$("mydiv") 当成id选择器1.2 jquery版本/对象:$(js对象) -> jquery对象1.3 jquery的页面加载事件:$ 想象成 window.onload 1.4 jquery的基本选择器:$()里内容…

7 拓展中断_事件控制器(EXTI)(STM32HAL库 )

目录 EXTI-扩展中断和事件控制器 事件的概念 EXTI-扩展中断和事件控制器 EXTI外设框图 F1/F4/F7(看懂与或门) H7 STM32CubeMX中的EXTI配置 EXTI-扩展中断和事件控制器 事件的概念 STM32上许许多多的外设,是通过内部信号来协同工作的。…

Android Compose Button defaultButtonColors

Android Compose Button defaultButtonColors 本文最新更新地址 https://gitee.com/chenjim/chenjimblog 发现问题 最近看 Android Compose 相关资料发现如下代码 colors defaultButtonColors( backgroundColor if (count > 5) Color.Green else Color.White )原文地…

从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题

目录 1. 多态(polymorphism) 1.1 构成多态的两个条件 1.2 虚函数重写(覆盖) 1.3 协变构成多态 1.4 父虚子非虚构成多态 1.5 析构函数的重写 1.6 final 和 override 关键字(C11) 1.7 重载、覆盖、隐藏的对比 2. 抽象类&am…

通信接口和通信方式总结

通信接口和通信方式总结 一、通信接口主要的5种类型二、通信方式2.1 并行和串行2.2 单工、半双工及全双工通信2.3 串行通信分类 - 同步\异步2.4 波特率 Baud Rate 三、串联设备的接口类型 - 网口和串口3.1 串口 - COM口3.1.1 基本介绍及应用3.1.2 接线方式 - 232、422、485接线…