云安全 | 利用易受攻击的 Lambda 函数泄露 AWS 账户信息云安全 | 利用易受攻击的 Lambda 函数泄露 AWS 账户信息

人们普遍认为云托管服务比传统服务更安全。由于它在基础设施级别上这个观点可能部分正确,但它们仍然具有可能导致其漏洞的用户控制元素。

接下来将探讨如何利用易受攻击的 Lambda 函数并泄露其 AWS 账户信息。

在我们开始讨论之前,让我们先回顾一下基本术语。

🔥$_AWS_Lambda_函数

Lambda 函数是一项 AWS 无服务器计算服务,旨在仅在需要或触发时执行代码。一旦执行结束,运行代码的计算实例就会自行销毁。您可以根据应用程序需要创建任意数量的函数来处理不同的任务。

与传统 Web 应用程序中检测到的漏洞类似,在无服务器服务上运行的云应用程序也容易出现相同的安全漏洞。

$_命令注入:

操作系统命令注入是攻击者通过 Web 应用程序传递操作系统命令的一种攻击。如果应用程序存在漏洞,它将执行给定的命令并执行特权操作。

在云和无服务器服务(例如 Lambda)的上下文中,操作系统命令注入属于数据事件注入。注入以带有特殊字符串的请求的形式将意外事件传递给易受攻击的函数,该函数将被解释为操作系统级操作。

😈$_Exploiation_Demo:

对于漏洞利用演示,我选择了Pentester Academy:https://www.pentesteracademy.com/的AttackDefense:https://www.attackdefense.com/团队开发的一个示例,以演示易受攻击的 Lambda 函数可能导致的数据泄露。

将 Lambda 上的命令注入漏洞及其不安全的配置链接起来,我们可以获得与正在运行的函数关联的 AWS 帐户信息。

让我们开始……

存在漏洞的应用程序具有通过拖放上传文件的功能。在开始使用 BurpSuite 或 ZAP 代理拦截请求之前,我通常会尝试手动检查应用程序并记下任何有趣且引人注目的细节。

🔎$_我的Checklist:

•-检查所有可见的 URL

•-查看源页面并查找隐藏的注释、API 端点、存储位置

•-检查启用的 HTTP 方法

•-手动模糊应用程序并使用 Burp Suite 仔细观察响应。我通常通过更改、删除或修改值来测试发送到应用程序的每个参数。

•-有意生成错误消息,以查看应用程序是否会显示可见的错误,从而公开一些有助于我们理解其结构的信息。

•-目录、接口扫描。

我们观察到的第一件事是该 URL 泄露了托管基础设施amazonaws.com。它还显示了托管的区域“东南” ,并且它是一个 API。

初步得出结论:我们有一个 API 端点,我们可以用它来上传文件并将其存储在云中的某个位置。

图片

查看 Firefox 开发人员工具的“调试器”选项卡中的首页代码,我发现该应用程序运行一个 lambda 函数。

此外,还有一个 API 端点“api/file”,其中会发送请求,请求方法为POST 方法。

图片

此时,我用Burp拦截了请求来检查服务器的响应。我发送的请求返回了 500 内部服务器错误状态代码。响应表明服务器无法将对象放入“ temporary-public-image-store”目录。

图片

接下来,我转向手动模糊测试部分。我将 HTTP 方法从预期的 POST 更改为 GET,以查看是否可以向服务器发送不同的请求,并让它显示不同的错误消息。不幸的是,我得到的错误是“无效的 HTTP 方法”。

图片

之后,我开始考虑针对该应用程序的潜在攻击媒介。我在 google 上搜索了针对无服务器架构的一般攻击,特别是针对 AWS lambda 的攻击,并发现了一些有关事件数据注入的资源。

其中之一是 GitHub 上的PureSec:https://github.com/puresec/sas-top-10 — 无服务器应用程序的十大关键风险。他们将操作系统命令注入称为无服务器架构中的常见漏洞之一。

图片

有了这些知识,我开始使用操作系统注入已知的特殊字符对 URL 进行模糊测试,尝试查看是否有任何字符会生成新错误,从而泄露我们目前没有的其他信息。

图片

仅列表中的逗号字符返回不同的错误消息; “/bin/sh: -c: line 0: unexpected EOF while looking for matching”。由此我们可以推测在 Lambda 上存在操作系统注入漏洞。

图片

为了确认这一点,我尝试传递whoami、ls、pwd 和 date等简单命令,看看是否执行并将响应转发给我们。

图片

图片

通过图片看到的,已经确认有命令注入。💯

现在这一点已经得到证实,让我们看看 Lambda 是否可以读取有关其运行的 AWS 账户的重要信息。

我运行命令“ env”来检索存储的环境变量。Lambda 使用这些变量在本地运行代码并分配给它的权限。

图片

如上所示,我们已经检索了 AWS 会话令牌、访问 ID、密钥、node.js 版本和 S3 存储桶信息。

尽管这些是与运行会话相关的临时变量,但它们仍然可以帮助我们进行 AWS 枚举并获取其他信息。

总结:我们通过测试Lambda 函数,发现它容易受到操作系统命令注入的攻击。利用该漏洞,我们检索了会话令牌、访问 ID 和密钥,用于进一步枚举AWS其他信息。

这就是今天的全部内容。感谢您的阅读!

以上内容由白帽子左一翻译并整理。原文:https://medium.com/r3d-buck3t/vulnerable-lambda-leaks-aws-account-information-c613837377ad

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

无偿获取网络安全优质学习资料与干货教程

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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Kibana中突然看不到日志ElasticSearch突然采集不到日志问题解决分析

问题原因 起因之前我们项目是采用elk(elasticsearchlogstashkibana)的方式下部署日志采集系统,今天突然发现Kibana中所有项目日志都没打印,更奇怪的是线上的项目都正常运行,并无异常,这时让人陷入了深思&a…

【运维监控】influxdb 2.0 + grafana 11 监控jmeter 5.6.3 性能指标(1)

运维监控系列文章入口:【运维监控】系列文章汇总索引 文章目录 一、部署influxdb2.0二、部署grafana三、jmeter配置1、下载jmeter插件2、部署jmeter插件3、添加Backend Listener 本示例是通过jmeter的插件暴露jmeter的监控指标,通过插件将监控指标数据写…

基于MaxScale搭建MariaDB读写分离集群的方法【2024年最新版】

1、什么是MaxScale MaxScale是MariaDB数据库的一个中间件,为MariaDB提供代理服务,主要可以实现读写分离和一定的负载均衡功能,其中读写分离可将读操作和写操作分离到不同的数据库服务器上,以提高系统的整体性能和扩展性&#xff…

Oracle 数据库安装和配置指南

目录 1. 什么是Oracle数据库? 2. 安装前的准备工作 2.1 硬件要求 2.2 软件要求 2.3 下载Oracle安装包 3. Oracle数据库的安装步骤 3.1 Windows系统安装步骤 3.2 Linux系统安装步骤 4. 配置Oracle数据库 4.1 设置环境变量(Linux) 4.…

探索GraphRAG:用yfiles-jupyter-graphs将知识库可视化!

yfiles-jupyter-graphs 可视化 GraphRAG 结构 前言 前面我们通过 GraphRag 命令生成了知识库文件 parquet,这节我们看一下如何使用 yfiles-jupyter-graphs 添加 parquet 文件的交互式图形可视化以及如何可视化 graphrag 查询的结果。 yfiles-jupyter-graphs 是一…

微服务拆分技巧

微服务架构整体思路 常见场景实施建议 只有从0开始构建业务系统才需要一步到位,这样长痛不如短痛,其它的都只能逐步落地,因为有包袱 如何按业务拆分微服务 DDD 概要介绍 DDD 告诉你限界上下文是什么,却没有告诉你如何划分 DDD …

鸿蒙​​​​​​保障应用开发安全的技术措施

应用开发安全是指在开发过程中嵌入安全能力,使应用程序从源头上安全可靠。 开发者是应用程序的创作者,合法的开发者是创作出安全、可靠应用的前提条件;为了保证应用开发者身份真实可信,鸿蒙通过开发者证书对应用进行签名,保证应用…

高刷显示器哪个好?540Hz才有资格称高刷

高刷显示器哪个好?说实话,540Hz这些才能成为高刷显示器,什么200,240的,都不够高,什么是从容,有我不用才叫从容。下面我们一起来看看540Hz的高刷显示器都有哪些吧! 1.高刷显示器哪个好 - 蚂蚁电…

Chainlit集成LlamaIndex实现知识库高级检索(BM25全文检索器)

检索原理 BM25Retriever类是一个基于BM25算法设计的检索器,它主要用于从一组文档或节点中检索出与查询最相关的文档或节点。这个类的设计目的是为了提高文本检索的效率和准确性,尤其是在处理大量文本数据时。 BM25(Best Matching 25&#x…

如何使用ssm实现新媒体视域下的中国古诗词展演+vue

TOC ssm678新媒体视域下的中国古诗词展演vue 绪论 课题背景 身处网络时代,随着网络系统体系发展的不断成熟和完善,人们的生活也随之发生了很大的变化。目前,人们在追求较高物质生活的同时,也在想着如何使自身的精神内涵得到提…

物联网助力智慧交通:优势与前景

智慧交通是当今城市发展的必然趋势,而物联网技术在交通运输领域的应用正是为实现智慧交通建设提供了前所未有的机遇和优势。物联网作为连接和控制物理世界的重要技术手段,在交通领域的应用极大地改善了交通系统的效率、安全性和环保性。 首先&#xff0c…

智能算法躲避拥堵,高德企业用车上线“动态选路服务”为出行提效

近日,高德企业用车正式上线了一项全新服务——“动态选路服务”,旨在基于智能算法,动态规避突发拥堵路线,为企业用车用户提供更便捷、智能的出行方案。 以技术着眼细节,高德企业用车在帮助企业用车用户节约出行时间和…

大部分基础排序复习C++(归并、快排、堆)

归并排序(稳定) 时间复杂度: O(N * logN ) 。空间复杂度 O(N) 归并排序主要是分治的思想: 将一段数组以中间点mid划分成两半,让它们各自去下一层递归,继续对半划分,直到这个数组只有一个元素…

MySQL(学习笔记)(02)(进阶篇)

P1 存储引擎 MySQL的体系结构 存储引擎简介 存储引擎的选择 P2 索引(重要) 索引概述 索引结构 二叉树 B树(多路平衡查找) B树 hash 总结 索引分类 思考题 索引语法 SOL性能分析 索引使用 索引设计原则 P3 SQL优化 P4 视图/存储过…

redis常用五种数据类型的常用指令

本文为初识redis记录的基本知识,如有不正确之处还请指出 一、redis五种类型简介 string:存储结构为简单动态字符串(SDS) hash:存储结构可以是哈希表(O(1))、压缩列表&am…

动手学深度学习(李沐)PyTorch 第 3 章 线性神经网络

3.1 线性回归 线性回归是对n维输入的加权,外加偏差 线性回归可以看作是单层神经网络 回归问题中最常用的损失函数是平方误差函数。 平方误差可以定义为以下公式: 常数1/2不会带来本质的差别,但这样在形式上稍微简单一些 (因为当…

一篇讲完CSS的核心内容

目录 一 、引言 1.1CSS概念 二、 CSS简介 2.1 什么是CSS 2.2 CSS能干什么 2.3 CSS书写规范 2.4 基础语法 三、 CSS导入方式 3.1 内嵌方式(内联方式) 3.2 内部方式 3.3 外部方式 四、 CSS选择器 4.1 基本选择器 [重点] 4.2 属性选择器 五、 CSS属性 5.1 文字属性…

Excel的基本应用__1

1. 模拟运算 1.1 单变量求解 1.1.1 步骤 1.1.1 效果 1.2 模拟运算表 1.2.1 步骤 1.2.2 效果 2.选择性粘贴--转至 3. Excel中如何使用和定义名称 使用 相当于全局变量,可以在不同表中调用 3.1名称中使用常量 3.2名称中使用函数 调用 可以在不同的表中调用 3.…

C语言 | Leetcode C语言题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; int minMutation(char * start, char * end, char ** bank, int bankSize) {int m strlen(start);int **adj (int **)malloc(sizeof(int *) * bankSize);int endIndex -1;for (int i 0; i < bankSize; i) {adj[i] (int *)malloc(si…

Dynamic Connected Networks for Chinese Spelling Check(ACL2021)

Dynamic Connected Networks for Chinese Spelling Check(ACL2021) 一&#xff0e;概述 文中认为基于bert的非自回归语言模型依赖于输出独立性假设。不适当的独立性假设阻碍了基于bert的模型学习目标token之间的依赖关系&#xff0c;从而导致了不连贯的问题。为些&#xff0c…