NFS (TCP/UDP 2049)

# enumeration
showmount -e 10.10.10.10
 
# mount
mkdir mount_dir
sudo mount -t nfs 10.10.10.10:/ ./mount_dir/ -o nolock
 
# umount
sudo umount ./mount_dir
  • -o nolock: 클라이언트-서버간 파일 잠금 비활성화. 구식 NFS 버전과의 호환성 및 잠금 문제 방지를 위해 자주 사용
  • 만약 타겟 서버 마운트 설정이 no-root-squash인 경우, 권한 상승 벡터로 이어질 수 있음

root-squash / no-root-squash

  • no-root-squash: root 사용자로 nfs에 액세스할 경우 계정이 nfsnobody 사용자로 변경된다. SUID 바이너리 전송을 통한 권한 상승이 불가하다.
  • root-squash: root 사용자로 nfs에 액세스 할 수 있다. nfsnobody로 계정이 변하지 않으므로, SUID 바이너리 전송 및 권한 상승이 가능할 수 있다.

설정 예시

cat /etc/exports
 
# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/var/shared *(rw,no_root_squash)
  • mount 이후 root SUID 바이너리 전송하여 권한 상승