Pikachu靶场——SSRF 服务端请求伪造

文章目录

  • 1 SSRF 服务端请求伪造
    • 1.1 SSRF(curl)
      • 1.1.1 漏洞防御
    • 1.2 SSRF(file_get_content)
      • 1.2.1 漏洞防御
      • 1.2.3 SSRF 防御

1 SSRF 服务端请求伪造

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

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

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

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

PHP中下面函数的使用不当会导致SSRF:

file_get_contents()
fsockopen()
curl_exec()

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

1.1 SSRF(curl)

cURL用法:PHP: cURL - Manual。

点击链接,查看页面变化

http://192.168.188.183/pikachu/vul/ssrf/ssrf_curl.php

image-20230909165553429

发现页面的URL中多了一个url参数。

http://192.168.188.183/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

image-20230909165618949

因为curl支持很多协议,就可以做以下尝试:

通过网址访问

比如说修改url为:url=http://www.baidu.com,访问百度页面:

image-20230909170414143

利用file协议查看本地文件

file协议:file://是一种在本地文件系统中读取或写入文件的协议。通过file://协议,可以使用Curl直接读取本地文件或将数据写入到本地文件。

修改url为:url=file:///c:/test/wuhu.txt,查看文件的内容:

image-20230909170606811

dict协议扫描内网主机开放端口

dict协议:dict://是一种用于在Curl命令中传递字典参数的协议。该协议通常用于向服务器发送包含键值对的数据。

使用dict协议可以获取内网主机开放端口相应服务的指纹信息,修改url为:url=dict://192.168.188.183:80

image-20230909170837808

1.1.1 漏洞防御

修改代码前,可以看到代码中没有做任何的过滤操作

image-20230916110534547

对代码做一些改动

echo $URL."<br \>";
$octet = explode(".",$URL);
echo $octet[1]."<br \>";
if($octet[1]!="php"){die("黑客!!!");
}

代码解析:

  • die:等同于 exit(),终止程序的执行。

  • explode: 使用一个字符串分割另一个字符串。

    explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
    
    • 此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。

image-20230916142508506

这样我们就可以让页面访问的时候只能去访问info1.php和info2.php文件,这里以点作为分割,所以如果后缀名不为php的话那么就不允许通过。

页面访问

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://localhost/pikachu/vul/ssrf/ssrf_info/info1.php

image-20230916142905667

如果访问其他的路径,例如访问本地文件

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/test/wuhu.txt

image-20230916143015027

访问其他网站

127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com

image-20230916143101802

1.2 SSRF(file_get_content)

点击链接,查看页面变化

image-20230909171408872

发现路径中的参数从url变成了file

image-20230909171453431

file_get_content使用方法。

file读取本地文件

修改file为:file=file:///../../../../../../../../windows/system32/drivers/etc/hosts

查看页面效果:

image-20230909171839757

http协议请求内网资源

为了演示效果,开启一台kali主机,并且开启一个http服务

python3 -m http.server 8888

image-20230909174834552

修改file为:file=http://192.168.188.185:8888

查看页面效果:

image-20230909174627165

1.2.1 漏洞防御

修改之前的代码

image-20230916143654508

修改后的代码

echo $filename."<br \>";
$octet = explode(".",$filename);
echo $octet[1]."<br \>";
if($octet[1]!="php"){die("黑客!!!");
}

image-20230916143715962

页面访问,读取本地文件

http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=file://../../../../../../../../windows/system32/drivers/etc/hosts

image-20230916143819125

1.2.3 SSRF 防御

参看我写的另一篇博客:服务端请求伪造(SSRF)及漏洞复现

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

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

相关文章

【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Qwen-VL:多功能视觉语言模型,能理解、能定位、能阅读等

Overview 总览摘要1 引言2 方法2.1 模型结构2.2 输入输出 3 训练3.1 预训练3.2 多任务预训练3.3 监督finetune 4 评测4.1 图像文本描述和视觉问答4.2 面向文本的视觉问答4.3 指代表达理解4.4 视觉语言任务中的小样本学习4.4 现实用户行为下的指令遵循 5 相关工作6 总结与展望附…

【boost网络库从青铜到王者】第七篇:asio网络编程中的异步echo服务器,以应答为主

文章目录 1、简介2、echo模式应答异步服务器2.1、Session会话类2.2、Server类为服务器接收连接的管理类 3、客户端4、隐患5、总结 1、简介 前文已经介绍了异步操作的api&#xff0c;今天写一个简单的异步echo服务器&#xff0c;以应答为主。 2、echo模式应答异步服务器 2.1、…

小样本学习

一、基础知识 小样本学习&#xff08;few shot learning&#xff09;旨在使用先验知识&#xff08;prior knowledge&#xff09;基于有限数量的样本推广&#xff08;generaling&#xff09;到新任务&#xff08;new task&#xff09;。这些先验&#xff08;prior knowledge&am…

初识C语言——详细入门(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍&#xff1a; 特点&#xff1a; 基本构成&#xff1a; 二、认识C语言程序 标准格式&#xff1a; 简单C程序&#xff1a; 三、基本构成分类详细介绍 &#xff08;1&#xff09;关键字 &#xff08;2&#xf…

Blender导出FBX给UE5

最近在学习UE5的资源导入&#xff0c;总结如下&#xff1a; 建模使用Blender&#xff0c;UE5版本是5.3 1.纯静态模型导入UE5 Blender FBX导出设置保持默认即可&#xff0c; UE5把导入设置里Miscellaneous下Force Front XAxis和Convert Scene Unit勾选即可 2.带骨骼动画的模型…

字符函数和字符串函数模拟实现与详解————长度不受限制的字符串函数

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2strlen函数 3.strcpy函数…

csdn未经允许将我的文章设置成vip收费

以前在csdn写了一些笔记&#xff0c;后来不用csdn了&#xff0c;想着留下这些笔记或多或少能帮助其他初学者&#xff0c;就没管它。结果csdn把文章设置成收费了&#xff0c;这个收费不是我本人弄的&#xff0c;是csdn弄的&#xff01;我现在只能把这些文章删除掉了。

Docker初识

什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0c;环境不一定一致&#xff0c;会遇到…

Tungsten Fabric数据量过大问题处理初探

开源SDN系统Tungsten Fabric面临数据产生过多问题。 经排查&#xff0c;产生数据多出自analytics组件的Cassandra数据库()。很多分析数据会存储至Cassandra库&#xff0c;并持久化处理。 没有特殊调整的话&#xff0c;目录在 /var/lib/docker/volumes/analytics_database_an…

【大数据开发技术】实验04-HDFS文件创建与写入

文章目录 一、实验目标二、实验要求三、实验内容四、实验步骤 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理熟练掌握HDFS的API使用方法掌握单个本地文件写入到HDFS文件的方法掌握多个本地文件批量写入到HDFS文件的方法 二、实验要求 给出主要实验步骤成…

【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e;例题1例题2例题3例题4 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e; 这里SOA与微服务的例题只对应找寻了几个&#x…

一款强大的ntfs磁盘读写工具Paragon NTFS 15破解版百度网盘下载

今天再给大家分享一款NTFS工具Paragon NTFS 15&#xff0c;Paragon NTFS 15破解版是目前的最新版&#xff0c;需要的赶快收藏&#xff0c;地址失效可以留言。 Paragon Ntfs For Mac 15下载&#xff1a;https://souurl.cn/s84CCB Crcak链接: https://pan.baidu.com/s/1c2Hx7QBE…

计算机网络工程师多选题系列——计算机网络

2 计算机网络 2.1 网络技术基础 题型1 TCP/IP与ISO模型的问题 TCP/IP由IETF制定&#xff0c;ISO由OSI制定&#xff1b; TCP/IP分为四层&#xff0c;分别是主机-网络层、互联网络层、传输层和应用层&#xff1b;OSI分为七层&#xff0c;分别是物理层、数据链路层、网络层(实…

解决react报错“JSX 表达式必须具有一个父元素“

现象如下&#xff1a; 原因&#xff1a; 新插入的dom元素跟已有的dom元素平级了&#xff0c;必须创建一个共有的根元素 解决办法&#xff1a; 使用<> </>标签作为根元素&#xff0c;把所有子元素包裹起来 <> ....原代码 </> 问题解决&#xff01;…

手把手教你用 Milvus 和 Towhee 搭建一个 AI 聊天机器人!

作为向量数据库的佼佼者&#xff0c;Milvus 适用于各种需要借助高效和可扩展向量搜索功能的 AI 应用。 举个例子&#xff0c;如果想要搭建一个负责聊天机器人数据管理流程&#xff0c;Milvus 必然是首选向量数据库。那么如何让这个应用程序开发变得易于管理及更好理解&#xff…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter Python函数绘…

计算结构体大小:内存对齐详解

前言&#xff1a;不管在面试还是在升学的路上&#xff0c;内存对齐永远是结构体和联合体的热门考点&#xff0c;对于同样的结构体成员&#xff0c;他们相互之间的顺序位置不同就会导致整个结构体大小的不同&#xff0c;因此计算结构体联合体的字节大小就成为了一个有效的考点 目…

linux 清除卸载jenkins

1、停服务进程 查看jenkins服务是否在运行&#xff0c;如果在运行&#xff0c;停掉 查看服务 ps -ef|grep jenkins 停掉进程 kill -9 XXX2、查找安装目录 find / -name "jenkins*"3、删掉相关目录 删掉相关安装目录 rm -rf /root/.jenkins/# 删掉war包 rm -rf /…

关于MATLAB R2022b中MATLAB function没有edit data选项的解决办法

问题描述 在MATLAB 2022b的simulink中双击MATLAB function&#xff0c;出来的是这个界面&#xff0c;而不是跳转到MATLAB的编辑窗口。因此就找不到edit data选项&#xff0c;没法完成新建data store memory 全局变量。 解决办法&#xff1a; 点击 编辑数据 按钮 在弹出的窗…