网络安全-ssrf

目录

一、环境

二、漏洞讲解

三、靶场讲解

四、可利用协议 

4.1 dict协议

4.2 file协议

4.3 gopher协议

五、看一道ctf题吧(长亭的比赛)

5.1环境

5.2开始测试

​编辑


一、环境

pikachu,这里我直接docker拉取的,我只写原理,靶场都是随便找的

docker run --name piakchu -d -p 8000:80 area39/pikachu 

二、漏洞讲解

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

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

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

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

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
            
如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤

三、靶场讲解

首先点进来是一首诗,点击后url后面会有参数,请求本地的一个资源,?url=http://127.0.0.1/vul/ssrf/ssrf_info/info1.php

去看看源码吧,用vscode直接远程连接docker里面

请求的东西在这里

 代码不等于空就执行,最后curl_exec执行

 比如访问百度,就会把百度加载出来,那这有什么用呢????有什么危害

可以通过各种协议读取文件等等,我们一个一个研究

四、可利用协议 

4.1 dict协议

dict 协议是一个在线网络字典协议,这个协议是用来架设一个字典服务的。不过貌似用的比较少,所以网上基本没啥资料(包括谷歌上)。可以看到用这个协议架设的服务可以用 telnet 来登陆,说明这个协议应该是基于 tcp 协议开发的。

所以像 mysql 的服务,因为也是基于 tcp 协议开发,所以用 dict 协议的方式打开也能强行读取一些 mysql 服务的返回内容,比如我本地开的mysql我们尝试读取

利用点在于,可以探测内网端口(比如我们渗透的时候遇到的不出网协议),fastcgi,redis

pass:readis【6379】未授权访问(写入webshell,物理路径,写入任务计划(反弹webshell),写入公钥(直接登录服务器))很盛行,因为低版本90%的人基本上不会设置密码,但到2024年有些企业很注意这个点了,大部分人也开始设置了 

4.2 file协议

读取文件

包括php连接文件,可以读出来mysql的账号和密码

4.3 gopher协议

可以发送发送gopher get请求

我们gethub上面开源了一款工具叫做gopherus这个工具

可以攻击点就这么多,可以想象这个漏洞的危害,已经可以直接写一句话木马了

我刚刚克隆了一下这个工具给大家展示一下作用

 问反弹shell还是写入phpshell

而这个协议最重要的还是物理路径,如果网站的debug没关的话,也许我们日常挖洞的时候可以爆出来,我docker里面做测试我已经知道本地物理路径这里只展示

 我们来看一下它写入解码后的一个值是 ,很明显可以看到它在将我写入的内容存入到shell.php这个目录下,相当于是内存数据落盘

来看看反弹shell是怎么回事

任务计划root权限

 还有一个写公钥的功能它并没有,但这个也合理正常来说公钥是我们自己生成的,用-t就可以了,这样就可以实现免密登录了

五、看一道ctf题吧(长亭的比赛)

5.1环境

自己网上找,名字web-ssrfme.md

5.2开始测试

访问如下,限制了协议file、dict、localhost,不能探测内网端口和文件

访问是可以但是没什么用

当我们去探测内网端口的时候直接nonono

 但是它给了提示可以用info打印出phpinfo,可以看出使用的是apache7.0

看出它的docker里面的ip

 那我们去访问一下看看,又打印了一次,那我可以用它来探测端口,3306和6379都没有反应,好像什么服务都没装

 bp爆破探测一下看看

但是不好的消息是好像只开放了80,那没必要在这个服务器浪费时间了

手工探测一下0.1,0.3等等,先看看,很明显0.2和0.1是有服务器的,但0.1是默认html文件对我们用处不大去看看0.2吧

 爆破0.2很明显有6379和80端口

那我们就需要考虑传webshell但是我们不知道物理路径,先猜吧/var/www/html ,用刚才的Gopherus工具生成个payload

 很明显并没有写进去

用上帝视角去看一下updload给的权限这么高,很明显就是上面我们所讲的

但正常做题我们并没有上帝视角,一般都是用gethub上面开源的目录等等,我们做题只模拟,假设我们字典只有这五个

用bp抓包,然后爆破,假设我们扫出来了,那我们gopherus的目录就要变了,我们接着写入才有可能会成功

 还是没有成功,很快就结束了,并没有下一步动作

考虑一下二次编码

 再次测试,很明显已经成功实现了

但是我们发现id并没有进行一个执行

 排一下错,我们上帝视角改一下看看

这样是执行成功了

 那说明我们写的解析有问题,重新写下看看

这下是ok的,那就证明正常解法就是如此,那我正常入侵的时候写webshell和反弹shell也ok

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于vue框架的传统文化传播网站设计与实现f7r43(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,文化类型,传统文化 开题报告内容 基于Vue框架的传统文化传播网站设计与实现开题报告 一、研究背景 在全球化加速的今天,各国文化相互交融,但也面临着传统文化被边缘化的风险。中国拥有五千年文明史&#…

【通俗易懂介绍OAuth2.0协议以及4种授权模式】

文章目录 一.OAuth2.0协议介绍二.设计来源于生活三.关于令牌与密码的区别四.应用场景五.接下来分别简单介绍下四种授权模式吧1.客户端模式1.1 介绍1.2 适用场景1.3 时序图 2.密码模式2.1 介绍2.2 适用场景2.3时序图 3.授权码模式3.1 介绍3.2 适用场景3.3 时序图 4.简化模式4.1 …

数据的表示和存储 第3讲 C语言中的整数

深耕AI ​互联网行业 算法研发工程师 概括 本讲主要介绍了C语言中的整数表示。 无符号整数能够表示的最大值比带符号整数要大。带符号整数使用补码来表示,补码的运算系统是一种模运算系统,能够实现加减运算的统一。在C语言中,如果一个表达式…

利用F.interpolate()函数进行插值操作

函数简介 功能: 利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺寸大小,尽量保持数据完整。 torch.nn.functional.interpolate(input, sizeNone, scale_factorNone, modenearest, align_c…

【赵渝强老师】K8s的DaemonSets控制器

DaemonSet控制器相当于在节点上启动了一个守护进程。通过使用DaemonSet可以确保一个Pod的副本运行在 Node节点上。如果有新的Node节点加入集群,DaemonSet也会自动给新加入的节点增加一个Pod的副本;反之,当有Node节点从集群中移除时&#xff0…

EdgeRoute_镜像烧录

1. EdgeRouter 概述 EdgeRouter Lite 是由 Ubiquiti Networks 公司生产的一款高性能网络路由器,适用于家庭和小型办公环境。它的尺寸为200 x 90 x 30 mm,重量为345克,配备了双核500 MHz的MIPS64处理器,并带有硬件加速功能&#x…

MySQL_数据类型简介

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

Vue使用Vue Router路由:开发单页应用

1、路由基础 在单页 Web 应用中,整个项目只有一个 HTML 文件,不同视图(组件的模块)的内容都是在同一个页面中渲染的。当用户切换页面时,页面之前的跳转都是在浏览器端完成的,这时就需要使用前端路由。 路…

APP自动化中 ADB Monkey用法

一、monkey是干什么的? 我们可以使用monkey做手机端性能的压力测试,稳定性测试 二、monkey在使用的时候,他的运行特性 monkey默认配置下执行,会在手机中随机的点击或者轻触我们的手机中应用,不过这个时候&#xff0…

Cortex-M7核心寄存器

参考内容:Cortex-M7编程手册 文章目录 软件执行的处理器模式和权限级别处理器模式软件执行的权限级别 栈Stacks核心寄存器Core registers通用寄存器General-purpose registers链接寄存器Link register程序计数器 Program counter程序状态寄存器Program status regis…

PMP--二模--解题--91-100

文章目录 14.敏捷91、 [单选] 在敏捷团队完成三次迭代之后,项目经理确定团队在这三次迭代中的平均速度是30个故事点。还有292个故事点来完成项目的剩余部分。团队需要多少次额外的迭代才能完成项目? 9.资源管理92、 [单选] 项目经理前往另一个国家执行最…

python yield用法

1 yield关键字 yield在函数中的功能类似于return,不同的是yield每次返回结果之后函数并没有退出,而是 每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用。如果 一个函数需要多次循环执行一个动作&am…

【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

『功能项目』QFrameWorkBug关联Slot(插槽)【67】

我们打开上一篇66QFrameWorkBug拖拽功能的项目, 本章要做的事情是关联插槽Slot 修改脚本:UISlot.cs 修改脚本:UGUICanvas.cs 此时关联Slot已经完成 接下来的文章内容: 1.QFrameWork扔到地上UGUI 2.位置存储功能 3.点击名称寻…

Python可迭代对象(2)

目录 3。字典 字典的构造 字典的添加和修改 字典推导式的使用 以上全部代码编译结果展示 字典复习 4。集合(set) 集合的创建 集合的运算 集合的添加和删除元素 以上全部代码的编译结果 序列解包(Sequence unpacking) 3。字典 字典的构造 #字…

【Linux】nginx连接前端项目

文章目录 一、项目编译1.编译文件2.dist文件 二、Linux nginx配置三、启动nginx 一、项目编译 1.编译文件 2.dist文件 二、Linux nginx配置 在Xshell软件中,点击CtrlAltF进入文件传输找到地址:/usr/local/nginx/html将dist文件传入 找到nginx.conf&…

R包:VennDiagram韦恩图

加载R包 library(VennDiagram)数据 # Prepare character vectors v1 <- c("DKK1", "NPC1", "NAPG", "ERG", "VHL", "BTD", "MALL", "HAUS1") v2 <- c("SMAD4", "DKK1…

【计算机网络 - 基础问题】每日 3 题(十九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

【Python】curl命令、Api POST导入cURL、python直接使用cURL

文章目录 一、浏览器复制cURL二、API POST直接使用cURL创建接口三、python直接使用cURL构建网络请求四、curl命令详解语法选项实例 cURL是一种命令行工具&#xff0c;常用于通过各种协议&#xff08;如HTTP、HTTPS、FTP等&#xff09;传输数据。它的名字来源于"Client URL…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…