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.mzph.cn/news/89091.shtml

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

相关文章

孤网双机并联逆变器下垂控制策略MATLAB仿真模型

微❤关注“电气仔推送”获得资料 主体模块&#xff1a; 建议使用MATLAB2021b及以上版本打开&#xff01; 功率计算模块、下垂控制模块、电压电流双环控制模块 系统输出有功功率: 系统输出无功功率&#xff1a; 系统频率变化曲线: 参考文献&#xff1a; 微电网并网运行模式下…

四川众佰诚:现在的抖音小店怎么注册

抖音小店是一种新的电子商务形式&#xff0c;它允许用户在抖音平台上直接销售商品。下面是一篇关于如何注册抖音小店的步骤说明&#xff1a; 下载并安装抖音App: 首先&#xff0c;你需要在手机上下载并安装最新版本的抖音App。你可以在苹果App Store或者安卓应用商店找到它。 创…

助力交叉学科应用型数据科学人才培养,和鲸科技携手华为发布联合解决方案

时代高速发展&#xff0c;智能化的浪潮奔腾而来&#xff0c;以“加速行业智能化”为主题&#xff0c;第八届华为全联接大会&#xff08;HUAWEI CONNECT 2023&#xff09;于 9 月 20 日正式开幕。本次大会中&#xff0c;华为携手生态伙伴引领智慧教育新风尚&#xff0c;和鲸科技…

【GIT】Git clone https://xxx.git 报错仓库找不到,ssh却可以。

环境 MacBook Pro&#xff1a;13.0 (22A380)&#xff0c;Intel。 Python&#xff1a;3.10.9 序言 最近在Mac电脑中按照stable diffusion webUI 时&#xff0c;总是报&#xff1a; MacBook-Pro:openai yutao$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-…

​LeetCode解法汇总2582. 递枕头

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; n 个人站成…

Java中this关键字

在Java中&#xff0c;this 是一个关键字&#xff0c;代表当前对象的引用。它可以用于以下几个方面&#xff1a; 引用当前对象&#xff1a; 在实例方法中&#xff0c;this 代表当前对象的引用&#xff0c;可以使用它来访问当前对象的成员变量和方法。 public class MyClass {…

飞书与企业微信的异同

云文档 飞书的云文档会自动用游览器打开&#xff0c;不会直接在PC应用中打开&#xff08;移动端能在应用中打开&#xff09;。 飞书云文档能够插入视频、流程图、问卷等等 聊天消息交互 钉钉也有类似的功能&#xff0c;可以针对消息进行点赞等回复 钉钉的消息回复还有【收到…

第2讲:Vue开发环境的搭建及运行

Vue开发环境搭建步骤 1、安装node http://www.nodejs.com.cn/ 一般安装在根目录下&#xff0c;直接下一步下一步安装即可。如何检测安装完毕 node -v 2、第二步&#xff1a;安装vue-cli脚手架 npm install -g vue/cli &#xff0c;查看安装版本 vue --version 3、第…

C# 委托和事件

C# 委托和事件 委托匿名方法事件 委托 当要把方法传送给其他方法时&#xff0c;需要使用委托。首先定义要使用的委托&#xff0c;对于委托&#xff0c;定义它就是告诉编译器这种类型的委托代表了哪种类型的方法&#xff0c;然后创建该委托的一个或多个实例。编译器在后台将创建…

代码随想录 动态规划 Ⅹ

123. 买卖股票的最佳时机 III 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&…

C++常见设计模式

设计模式 设计模式的六大原则&#xff1a;https://zhuanlan.zhihu.com/p/110130347 适配器模式 假设Client想要一个正方形&#xff08;client Interface&#xff09;&#xff0c;但是提供的服务&#xff08;service&#xff09;是个圆形&#xff0c;那么我就把这个圆通过适配…

java-decompiler

Java Decompiler GitHub F:\Document_JD-GUI\jd-gui-windows-1.4.0 jd-gui-windows-1.4.0 JDK 1.7 jd-gui-windows-1.6.6 JDK 1.8 Releases java-decompiler/jd-gui GitHub

flutter web 优化和flutter_admin_template

文章目录 Flutter Admin TemplateLive demo: https://githubityu.github.io/live_flutter_adminWeb 优化 Setup登录注册英文 亮色主题 中文 暗黑主题管理员登录权限 根据权限动态添加路由 第三方依赖License最后参考学习 Flutter Admin Template Responsive web with light/da…

【操作系统笔记十四】科普:POSIX 是什么

注&#xff1a;本文转载自该文章posix是什么都不知道&#xff0c;还好意思说你懂Linux&#xff1f; Linux开发者越来越多&#xff0c;但是仍然有很多人整不明白POSIX是什么。本文就带着大家来了解一下到底什么是POSIX&#xff0c;了解他的历史和重要性。 一、什么是 POSIX&…

虹科分享 | 网络保险:有效承保网络风险解决方案

文章来源&#xff1a;虹科网络安全 点击阅读原文&#xff1a;https://mp.weixin.qq.com/s/myCFPYtVVz5TPSFQaKqvLg 网络风险似乎往往很难量化&#xff0c;这使得保险公司很难适当地承保其网络风险政策。威胁载体的数量和不断发展的威胁&#xff0c;如新型恶意软件/勒索软件&…

220 - Othello (UVA)

题目链接如下&#xff1a; Online Judge 我最终的代码如下&#xff08;有个细节&#xff0c;88行输出时&#xff0c;需要%2d&#xff1b;locate函数第三个参数是0的话&#xff0c;代表只是判断是否可以放置&#xff1b;1代表下一步棋&#xff0c;包括替换被夹住的棋子&#x…

【面试题精讲】Java 和 C++ 的区别?

“ 有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 文章更新计划[2] 系列文章地址[3] 1. Java 和 C 是什么&#xff1f; Java 和 C都是流行的编程语言&#xff0c;用于开发各种类…

Android file

写文件——FileOutputStream openFileOutput 读文件——FileInputStream openFileInput openFileOutput写文件时当文件不存在&#xff0c;Android自动创建。 通过BufferedWriter直接写入字符串 public void writeFile(String inputText) {FileOutputStream outputStream nul…

RFID技术:钢条加工现场的智能化管理利器

RFID技术&#xff1a;钢条加工现场的智能化管理利器 RFID&#xff08;Radio Frequency Identification&#xff09;技术作为一种非接触式自动识别技术&#xff0c;近年来在工业领域得到广泛应用。本文将探讨RFID在钢条加工现场的应用&#xff0c;包括材料追踪与管理、生产过程…

本次CTF·泰山杯网络安全的基础知识部分

简记23年九月参加的泰山杯网络安全的部分基础知识的题目&#xff0c;随时补充 1. 国密算法哪个属于公钥&#xff1f; SM2 a. 国产密码算法&#xff08;国密算法&#xff09;是指国家密码局认定的国产商用密码算法&#xff0c;目前主要使用公开的SM2、SM3、SM4三类算法&#x…