靶机来自vulnhub
内容:
rpc服务探测
rpc-nfs渗透
John解密7z压缩包
John破解ssh私钥
SUID提权—doas+less
nmap扫描服务探测
sudo nmap -sn 10.10.10.0/24
sudo nmap -p- –min-rate 10000 10.10.10.110
sudo nmap -sT -sV -O -p22,111,2049
sudo nmap -sU -p- –min-rate 10000 10.10.10.110
RPC服务探测
rpcinfo 10.10.10.110
根据tcp,udp,rpcinfo的探测知道靶机上部署了一个nfs服务
NFS(Network File System)是一种分布式文件系统协议,允许在网络上的不同计算机之间共享文件和目录。NFS最初由Sun Microsystems开发,是UNIX和类UNIX操作系统中最常用的网络文件系统之一。
以下是NFS的一些关键概念和工作原理:
- 客户端-服务器模型:NFS采用客户端-服务器模型,其中NFS服务器存储文件系统并使其可供客户端访问。客户端可以通过网络访问共享的文件系统。
- 挂载(Mounting):在客户端上,必须将NFS共享的目录挂载到本地文件系统上才能访问它。这样,客户端就可以像访问本地文件一样访问NFS共享的文件。
- 共享资源:NFS服务器上的文件和目录可以被共享给多个客户端。这使得多个计算机可以访问和共享相同的文件系统,促进了数据共享和协作。
- 透明性:NFS致力于提供透明的访问,使得客户端可以像访问本地文件系统一样访问远程文件系统,而不需要了解底层网络细节。
- 权限控制:NFS支持文件和目录级别的权限控制,类似于本地文件系统。管理员可以设置访问权限,以控制哪些用户或系统可以读取、写入或执行特定文件。
- 性能:NFS在设计上优化了性能,尽量减少网络开销和提高数据传输效率。但是在大规模部署中,性能可能会受到网络带宽、服务器负载等因素的影响。
总的来说,NFS是一种方便的文件共享解决方案,适用于需要在多台计算机之间共享文件和资源的环境,如企业内部网络、科研机构等。通过NFS,用户可以轻松地访问和共享数据,提高工作效率和协作能力。
查看共享可挂载文件showmount -e 10.10.10
showmount
命令是用于显示NFS服务器上共享的文件系统信息的命令。通过showmount
命令,您可以查看NFS服务器上当前共享的文件系统列表,以及哪些客户端已经挂载了这些共享。
以下是showmount
命令的一般用法和选项:showmount [options] [NFS_server]
常用选项:
-a
或--all
:显示所有已经挂载的客户端列表。-e
或--exports
:显示NFS服务器上共享的文件系统列表。-d
或--directories
:显示共享目录的详细信息。-h
或--help
:显示帮助信息。
示例用法:
- 显示NFS服务器上共享的文件系统列表:
showmount -e NFS_server
- 显示已经挂载到NFS服务器上的客户端列表:
showmount -a NFS_server
- 显示NFS服务器上共享目录的详细信息:
showmount -d NFS_server
请注意,您需要替换命令中的NFS_server
为实际的NFS服务器的主机名或IP地址。通过showmount
命令,您可以方便地查看NFS服务器的共享信息,以及已经挂载这些共享的客户端列表,帮助您管理和监控NFS共享文件系统的状态。
创建挂载文件夹
mkdir nfs
挂载nfs文件夹
sudo mount -t nfs 10.10.10.110:/home/user/storage ./nfs
查看到共享文件夹中有一个备份压缩包
cp 复制到本机电脑7z -x ./backup.7z -o./backup
//尝试解压缩压缩包,发现需要输入密码
John破解7z压缩包
所以需要破解压缩包密码,这里用john破解,但是载john破解前要用7z2john生成破解中间件
这里是一些破解其他格式文件获取john中间件的工具在/usr/share/john下
用7z2john生成破解中间件7z2john ./backup.7z > backup_hash
用john破解密钥sudo john --format=7z --wordlist=/usr/share/wordlists/rockyou.txt ./backup_hash
用密码解压压缩包即可,进入查看到一些图片和一对rsa公私钥
查看公钥可以知道是user用户的登录密钥对(而且通过挂载时的挂载的目录是一个用户的家目录也可以猜到用ssh登录该用户)
ssh用私钥登录,发现使用私钥要密码
John破解ssh私钥
这里再用john对私钥进行爆破,先生成中间文件
ssh2john id_rsa >../hash_id_rsa
sudo john –format=SSH –wordlist=/usr/share/wordlists/rockyou.txt ./hash_id_rsa
ssh登录拿到立足点
SUID提权
在内网渗透信息枚举过程中suid发现可利用点find / -perm -u=s -type f 2>/dev/null
这个命令是用来在 Linux 系统上查找具有 Setuid 权限位的文件的。下面是对这个命令中各部分的解释:
find
:find
是一个用于在文件系统中搜索文件的命令。/
: 这是指定搜索路径的起始点,表示从根目录开始搜索。-perm -u=s
: 这个部分是find
命令的参数,用于指定要搜索的文件权限。在这里,-perm -u=s
表示查找具有 Setuid 位设置的文件。Setuid 位是一种权限位,允许程序以拥有该程序文件所有者的权限来执行,而不是执行程序的用户的权限。-type f
: 这个参数用于指定要查找的文件类型。在这里,-type f
表示查找普通文件。2>/dev/null
: 这部分是用来重定向标准错误输出的。2
表示标准错误输出,>/dev/null
表示将标准错误输出重定向到/dev/null
,即将错误信息丢弃,以避免显示在终端上。
综合起来,这个命令的作用是在整个文件系统中查找具有 Setuid 权限位设置的普通文件,并将结果输出到标准输出。同时,通过 2>/dev/null
将任何错误信息重定向到 /dev/null
,以确保只输出符合条件的文件列表而不显示错误信息。这个命令对于系统管理员来说是一个有用的安全检查工具,可以帮助他们查找潜在的安全风险。
这里看到了doas
doas
是一个类似于 sudo
的程序,用于在 OpenBSD 系统上以特权身份执行命令。在 OpenBSD 中,doas
用于代替 sudo
,以提供权限提升和执行特权操作的能力。
以下是一些关于 doas
的基本信息:
- 配置文件:
doas
的配置文件通常是/etc/doas.conf
,可以在其中指定哪些用户可以以特权身份执行哪些命令。 - 语法:
doas
命令的语法类似于sudo
,通常是doas command
,其中command
是要以特权身份执行的命令。 - 权限控制:
doas
可以配置为仅允许特定用户或用户组执行特定的命令,从而提供更细粒度的权限控制。 - 日志记录:
doas
通常会记录用户使用特权执行的命令,以便审计和安全监控。
在 OpenBSD 系统上,管理员可以使用 doas
来管理用户对系统资源的访问权限,以确保系统安全性和可追溯性。如果您需要在 OpenBSD 上执行需要特权的操作,可以尝试使用 doas
命令来代替 sudo
。
这里有个网站用来查询各种具有suid的命令的提权指南https://gtfobins.github.io/
cat /etc/doas.conf //查看doas配置文件
可以看到这里可以用doas借用root权限执行/usr/bin/less (可添加参数)查看 /var/log/authlog,而且免密码借用root权限
通过上述网站搜索less提权
提权原理:
doas相当于sudo可以提升/usr/bin/less的权限为root但是只能执行/usr/bin/less命令,less命令又可以启动vi来编辑文本,此时启动的vi也是root权限,vi又可以执行命令,只要用vi执行sh即可获得具有root权限的shell
doas执行less打开/var/log/authlog
less中按v打开vi,在vi中输入 :!+命令
即可执行对应命令
只要输入 :!sh 即可获得shell
获得root权限