靶机详情
靶机地址:10.10.11.106
kali地址:10.10.16.4
初始侦察与渗透
-
确认kali与靶机之间可以ping通
-
使用nmap进行侦查扫描
nmap -sT --min-rate 1000 -p- 10.10.11.106 #以TCP协议,基于当前网络情况,以最低1000的速率进行该IP的全部端口
nmap -sT -sC -sV -p 80,135,445,5985 10.10.11.106 #详细信息扫描:指定以TCP协议、以默认脚本进行扫描、探测各服务的版本
nmap -sU --top-ports 20 10.10.11.106 #指定UDP协议扫描常用的20个UDP端口
nmap --script=vuln -p 80,135,445,5985 10.10.11.106 #漏洞脚本扫描
-
先看一下80端口,在浏览器中进行访问
存在登录框,根据之前在对端口进行扫描的时候,有一个提示
猜测此处登录的用户名为admin,可以进行弱口令猜测,也可以直接进行简单的爆破
nmap --script=http-brute -p 80 10.10.11.106
这里存在弱口令admin/admin
在页面的最下面看到了一个域名:driver.htb,先将这个域名添加到host文件中,然后查看该网站是否存在利用点
、
提示文件共享以及文件上传,根据端口扫描结果,查看以下135端口以及445端口的共享能不能访问
使用nxc列出所有共享文件,提示有交互,但是没有权限访问,135端口也是没有权限,这里也是有必要使用enum4linux-ng进行枚举
enum4linux-ng没有枚举出任何有用的信息,回到浏览器中文件上传的功能点
修改反弹shell中的IP地址为10.10.16.4
修改完成后进行上传,然后抓取数据包将认证或者鉴权的内容复制下来,用于目录爆破
Authorization: Basic YWRtaW46YWRtaW4=
使用feroxbuster进行目录爆破,只爆破php目录,目的为了找到刚刚上传的shell文件,并且要加上Head内容
feroxbuster -u http://driver.htb/ -x php -H "Authorization: Basic YWRtaW46YWRtaW4=" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
未发现有用的目录,可以尝试使用其他的字典进行爆破,这里就不继续了
攻击面分析
内网认证机制(关注SMB):非域环境下,一般是NTLM加密,这套加密体系早期叫Lm Line Manager,安全性非常低,由于它使用简单的哈希,不包含盐值,并将密码分割成七个字符的块,接着分别哈希,这样使得它非常容易被暴力破解。在之后是NTLM V1版本,它比LM有更好的安全性,但仍可被容易的破解,特别是当攻击者能够捕获到网络中的认证流量时。当前广泛使用的版本时V2版本,进一步增强安全性,引入客户端和服务器的挑战响应,以及在哈希过程中使用MD5,这使得它比前两者更难破解,但在某些条件下,特别是使用弱密码时,还是有可能破解。
内网协议:内网中可以用DNS解析主机域名到IP,但内网不一定一直有DNS,即使企业内网也一样。一般内网中没有DNS的时候,解析协议就会降级为netbios或者时LLMN2本地链路多播名称协议,这两种是广播协议,SMB就是使用这种降级协议的。
SMB本身服务消息块:它是一种在网络上用于文件共享、打印服务、还有其他网络通信的应用层协议。SMB协议是计算机能够在局域网内访问文件就是共享。
因为当前的机器探测到不是一个域环境,推测使用的是NTLM。
此时根据内网协议可以知道当内网中没有DNS的时候协议会降级,会广播,有广播那么就可以利用嗅探攻击
工具:Responder
responder可以对接收到的NTLM认证尝试进行中间人攻击,通过像请求者发送伪造的NTLM挑战来获得NTLM响应,这个响应就包含了加密后的用户凭据的散列值,Responder不直接解密这些值,而是采集这些数据然后通过离线破解。
SMB共享scf文件攻击
当前需要产生NTLM的认证,并且要让协议降级到Netbios或者本地链路多播名称解析这种偏低级的协议。相对于DNS协议来说,它就是低级的协议,满足产生认证同时协议降级。
基于当前靶机的web应用场景,上传的文件是保存到文件共享中的,并且445SMB是有服务的,只是没有访问权限。利用scf构造一个可以上传的payload,这个payload里面触发某种访问,而这种访问如果不存在,则协议降级,这里就会有认证。如果这个认证能够让我们捕捉到NTLM的哈希,那么就可以进行破解
-
使用responder进行监听
-
构造scf文件,然后上传
-
上传之后会发现responder监听有捕获到认证哈希,可以看到用户名是tony,但是哈希都是变化的,这是因为有随机值,有响应,有时间戳这几个变量存在,将所有捕获到的内容保存到digest文件中,保存之后进行提取
-
因为时间戳和随机值的存在,所以这个哈希不能用来进行哈希传递,否则的话会有很多种哈希对应一个密码。使用nth进行识别一下
-
使用hashcat进行破解,获得凭据liltony
系统立足点
已经知道了用户名和密码:tony/liltony,再次使用nxc进行尝试
直接使用evil-winrm登录进去看
evil-winrm -i driver.htb -u tony -p liltony
Winpeas枚举
下载winpeas上传到靶机中,在靶机本地执行
执行命令之后将结果输出到log.txt文件中,并将该文件下载到本地进行查看,主要关注标红的地方
cat out.txt | less -R
经过winpeas枚举,以及前端页面的提示,发现存在大量与打印机有关的内容,使用nxc模块查看器看一下目标的spooler是否开启
nxc smb driver.htb -u tony -p liltony -M spooler
服务是开启的,经过查询资料可以知道spooler有一个著名的漏洞:打印噩梦——PrintNightmare,nxc中也有用于检查此漏洞的模块
漏洞存在,并提供了利用工具,使用此工具检测
因为驱动是通过动态链接库实现的利用,所以需要准备一下反弹shell的动态链接库
将此文件上传到目标靶机中
然后回到利用文件的位置,使用工具进行利用,并在攻击机中进行监听