hhkb.dev

BLOG

2025-11-26 / 호스트기반모의해킹 · 16

NFS 취약점 진단

1. 개요

NFS(Network File System)는 리눅스와 유닉스 환경에서 파일과 디렉토리를 네트워크로 공유할 때 많이 쓰는 프로토콜이다.

  • 포트: TCP/UDP 2049(NFS 데몬), TCP/UDP 111(Portmapper/RPCBind)을 주로 본다.
  • 특징: IP 주소 기반 접근 제어(ACL)에 기대는 경우가 많고, 별도 사용자 인증이 약한 환경도 종종 보인다.

2. 주요 진단 항목

2.1 접근 제어 및 공유 목록 확인(Export List)

먼저 NFS 서버가 어떤 디렉토리를 누구에게 열어 두었는지부터 본다.

  • 목적: 외부에 노출된 디렉토리와 허용된 IP 대역을 확인한다.
  • 도구: showmount
    showmount -e [Target_IP]
    
    결과가 /home/user *처럼 넓게 열려 있으면 위험 신호로 본다.

2.2 디렉토리 마운트 및 파일 접근

실제로 접근 가능한지 확인할 때는 로컬에 마운트해 보는 흐름을 많이 쓴다.

mkdir /tmp/nfs_test
mount -t nfs [Target_IP]:/home/user /tmp/nfs_test

2.3 no_root_squash 취약점

no_root_squash는 NFS에서 빠지면 안 되는 대표 점검 항목이다.

  • 개념: 서버 설정에서 no_root_squash가 켜져 있으면, 클라이언트 측 root 권한이 서버 파일 소유권에 그대로 반영될 수 있다.
  • 위험: 이 설정이 잘못 열려 있으면 권한 상승(Privilege Escalation)으로 이어질 여지가 커진다.

3. 실무에서는?

실무에서는 NFS 단독보다 주변 설정까지 같이 본다.

  1. RPCBind 포트(111)는 NFS 외 다른 RPC 서비스 정보도 준다. 그래서 rpcinfo -p [Target_IP]로 연관 서비스까지 같이 파악하는 편이 좋다.
  2. /etc/exports에서 *나 넓은 대역을 허용하는 실수가 자주 보인다. 사설망 내부라도 IP 범위는 최대한 좁혀야 한다.
  3. /home 전체를 열어 둔 환경은 특히 위험하다. 사용자 키나 설정 파일이 같이 노출될 수 있기 때문이다.