红队打靶:FourAndSix2.01打靶思路详解(vulnhub)

目录

写在开头

第一步:主机发现与端口扫描

第二步:NFS渗透

第三步:7z压缩包的密码破解

第四步:ssh私钥登录

第五步:less+vi提权

总结与思考

写在开头

 本篇博客根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。本靶机并非常规的web渗透类型的靶机,难度不高,但涉及了像许多先前暂未触及的知识,考验了密码暴力破解的工具与操作。同时该靶机是一台openBSD操作系统的靶机,该操作系统通常用于防火墙或网络设备,与常规的ubuntu/debian/centOS等Linux有着明显的命令差异。本文涉及到的知识点包括nfs文件挂载、join破解.7z加密文件、私钥哈希、7z2john/ssh2john工具的使用、less+vim组合利用提权等。完整打靶思路详见:

「红队笔记」靶机精讲:FourandSix2.01 - 小巧精悍,干净利落的靶机,暴力破解x2,更有less+vi提权。_哔哩哔哩_bilibili

  本文针对的靶机源于vulnhub,详情见:

FourAndSix: 2.01 ~ VulnHub

  下载链接见:

 https://download.vulnhub.com/fourandsix/FourAndSix2.ova

 本靶机的目标是拿到root权限,并查看/root目录下的flag。下载成功后用vmware打开,将网络链接设置为NAT模式。靶机打开之后如下: 

第一步:主机发现与端口扫描

 依旧常规思路,命令不细讲了,详情可见:

渗透测试:主机发现和端口扫描的思路方法总结(nmap+ping命令+nc.traditional+伪设备连接)

使用的命令如下:

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共享文件端口:

 具体扫描这几个端口的服务、操作系统信息如下:

 可发现操作系统是OpenBSD,这并不是很常见的linux操作系统,主要用于网络和防火墙设备中。其他漏洞扫描没发现有用信息,同时UDP扫描显示2049的UDP端口也开放。

第二步:NFS渗透

 nfs全称为Network File Share网络共享文件模式,开启这个服务的系统可以指定某个目录作为nfs的服务地址,作为共享文件夹。我们可以首先使用showmount工具查看靶机是否有共享文件夹:

showmount -e 10.10.10.143

 -e表示exports,即靶机向外共享的到处列表,可以看到共享目录是/home/user/storage(这样也表明靶机很可能有一个名为user的用户),同时(everyone)表明任何人都可使用此共享目录。因此我们可以创建一个目录tmp,尝试能否将这个共享的目录/home/user/storage映射到我们创建的目录:

mkdir tmp 
mount -t nfs 10.10.10.143:/home/user/storage tmp

 mount用于挂载目录,-t是type的意思,指定为nfs共享文件模式,由上图可见该映射成功了,我们只要进入tmp目录应该就能看到靶机/home/user/storage目录的内容,如下:

 果然,我们看到了/home/user/storage目录下的文件backup.7z,拿到backup.7z后,把这个文件复制到上级目录(避免在挂载目录处理留下痕迹),看起来是个7z的压缩包,我们先用file查看具体的文件类型,并用binwalk看看有啥捆绑:

第三步:7z压缩包的密码破解

 由上图可知,就是个单纯的7z压缩文件,也没有捆绑文件,因此尝试直接用7z工具解压,-x参数表示解压缩:

7z -x backup.7z

 直接运行解压命令提示要输入密码,咱也不知道密码是啥,随便输一个,报错信息如下:

 说明内容有8张图片和两个文件,两个文件看名称像是ssh登录的私钥和公钥。此时说实话有点思路卡住了,理论上我们是需要解压这个7z压缩包的,但密码咱有不知道在哪里找。干脆就用john爆破吧。由于john爆破只能针对hash文件,因此我们先用7z2john生成7z压缩包的哈希,名称为backup7z_hash(随便起名):

7z2john backup.7z > backup7z_hash

 如上图所示,backup7z_hash文件生成成功。


查询一下,如果读者像我一样倒霉,运行7z2john的命令后出现如下报错: 

提示表明在运行7z2john脚本时,缺少了Compress::Raw::Lzma Perl模块。要解决这个问题,需要安装该模块。只要运行以下两个命令安装即可:

sudo apt update
sudo apt install libcompress-raw-lzma-perl

 然后删掉错误生成的backup7z_hash,再次运行7z2john backup.7z > backup7z_hash应该就不会有报错了。查询结束。


生成7z的hash后,使用字典rockyou.txt进行压缩包的密码暴力破解,指定形式为7z格式:

john --format=7z --wordlist=/usr/share/wordlists/rockyou.txt backup7z_hash

 得到压缩包的密码是chocolate,看来作者应该很爱吃巧克力呀。然后我们用这个密码成功解压了所有文件:

包括八张hello kitty的图片: 

以及两个疑似ssh公钥和私钥的文件:

 看到hello kitty的文件,首先先用file查看是否是真的单纯的图片文件:

 好像就是单纯的图片文件,我们再试试用binwalk看看有没有捆绑,发现也没有

 那有没有可能是图片隐写啥的,说不定图片里面有备注,我们尝试用exiftool查看图片:

 查看了8张图片,也没发现有啥备注信息。那么就查看id_rsa的公钥和私钥吧。

第四步:ssh私钥登录

 查看不带.pub的文件id_rsa,这可能是私钥:

 看起来确实是openssh的私钥,再看看公钥:

 那我们就直接尝试用私钥登录user用户吧:

ssh -i id_rsa [email protected] 

 

  -i表示用私钥登录,结果显示私钥id_rsa本身还有passphrase,也就是说私钥被加密了,还要用密码对私钥进行解密,输错或者直接回车的话,会转变为密码登录ssh,咱也不知道密码。看来此处应该又要破解id_rsa私钥的密码了。与破解压缩包的思路类似,先将私钥生成john对应的hash文件,这里命名为id_rsa_hash:

ssh2john id_rsa > id_rsa_hash 

成功生成了id_rsa_hash,然后用john破解,密码字典指定为rockyou.txt,这里不太了解ssh私钥hash的格式是啥,就干脆不用--format指定,让john自己识别:

john id_rsa_hash --wordlist=/usr/share/wordlists/rockyou.txt 

 拿到了私钥的passphrase是12345678,然后我们重新用私钥登录,输入passphrase即可成功登录user的shell:

 可以看到操作系统是OpenBSD6.4,同时当前用户属于两个组:user和wheel。

第五步:less+vi提权

 在常规的linux系统中,我们拿到初始shell后往往会运行sudo -l查看有什么特殊的信息,但OpenBSD的语法与之不同,无法直接sudo -l。我们先尝试寻找有什么s位的文件,尝试能否采用suid的方法提权,具有s位的文件表明该文件在运行时能够以其属主权限运行,我们可以借此进行提取,首先在根目录/按照权限-perm搜索具有s权限的文件f:

find / -perm -u=s -type f 2>/dev/null

 这里要重点关注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了

按v之后进入vi编辑模式:

 再输入:!/sh即可提权,感叹号!用于表示执行系统命令:

 可看到提示符已经变为了井号#,提权成功!

 进入/root目录读取flag:

 至此打靶完成!

总结与思考

 这个靶机不同于常规的web渗透类型靶机,且操作系统类型也不太常规,是一个值得练习的靶机。靶机考察了NFS网络共享文件相关的内容,同时也考察了暴力破解密码的知识,使用john进行密码暴力破解之前先要用对应的工具生成hash。最后的提权操作也很有代表性,提权的思路和原理相当于常规linux靶机的sudo提权。最后总结以下渗透打靶过程:

1.主机发现和端口扫描:常规思路,发现ssh,rpc,nfs,考虑从nfs入手。

2.NFS渗透,发现文件backup.7z,看起来像备份文件,解压发现需要密码。

3.压缩包的密码破解:先用7z2john生成哈希,再用字典rockyou.txt爆破,成功得到密码。解压后发现八张hello kitty的图片和疑似ssh登录的公钥和私钥。

4.ssh私钥登录:尝试使用私钥登录,发现私钥被加密,需要passphrase,用ssh2john生成hash,再用字典rockyou.txt爆破,成功得到passphrase,ssh登录了user账户。

5.less+vi提权:进入user账户后一番搜索无果,尝试寻找s位的文件,发现doas,相当于sudo指令,查找doas指令的配置,发现可以用less免密操作authlog文件,在less中启动vi输入系统命令即可提权。

 读者一定要理解提权的原理与逻辑。核心就是借用了less可以免密以root运行的权限,在less中启动了编辑器vi,使得vi也具有root权限,而vi可以执行系统命令,启动shell,实现提权。


这里再来个插叙(来自红队笔记大佬的描述),难道压缩包中的8张HelloKitty图片就完全没用吗?

回到最开始直接解压backup.7z的报错:

 如果你单纯看这个报错,猜测一个密码,你会猜什么呢?8张图片,每张图片都是依次是hello(n),那么这是不是提示存在一个密码,就是12345678呢?如果早一点想到这里,或许就免了对passphrase的破解过程。不过这个脑洞还是略大了一些,我感觉哪怕存在应该也是仅限靶机~。

 插叙结束!


 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言! 

猜你喜欢

转载自blog.csdn.net/Bossfrank/article/details/132030747