감자 텃밭

[모의해킹] basic pentestion 2 (smb 취약점 악용) 본문

Pentest/Pentest

[모의해킹] basic pentestion 2 (smb 취약점 악용)

g2h 2023. 10. 4. 11:11

vulnhub에서 제공하는 취약한 시스템인 basic pentestion 2의 smb 서비스 취약점을 사용하여, 침투테스트를 실습해 보았다.


수집정보
1. OpenPort : 22, 80, 139, 445, 8080, 8089
2. OpenSSH 7.2p2, Apache httpd 2.4.18, samba 4.3.11, apache tomcat 9.0.7, linux kernel 4.4.0-119
3. smb를 사용하며, 익명계정 접속가능, kay,jan 사용자 계정명 획득, jan의 패스워드 정책이 미흡, 각종 내부 파일에 대한 권한설정 미흡

1. 정보수집 단계

netdiscover을 통해 동일 네트워크 대역대 연결되어 있는 호스트를 확

41번 호스트가 공격대상 ip 인것으로 확인

해당 공격대상 호스트에 대해 nmap을 통해 추가적인 정보를 수집

22, 80, 139,445, 8080, 8089 포트가 열려있으며, 웹 서비스와 ssh, 그리고 smb 서비스가 실행 중인 것을 확인

추가적인 정보로는 smb의 접근 가능 계정이르 guest를 제공하며, 즉 인증 없이 익명 계정으로 접근이 가능하다.

또한 이름을 basic2라는 점과 웹 서버는 아파치 톰캣 9.0.7버전 사용 그 외에도 여러 정보를 추가적으로 획득했다.

해당 정보를 통해 취약한 부분이 있는지 확인해보자.

searchsploit에서 검색결과 특별하게 공격 코드는 확인되지 않아 http가 실행 중이므로 웹 접속을 시도했다.

 

유지보수 중이라는 문구 출력과 함께 특이점은 없었으며, admin과 같은 특정 페이지는 존재하지 않는 거 같았다.

해당 웨이 대한 추가 정보 획득을 위해 nikto를 사용하여 점검했다.

추가적으로 발견한 정보로는

development와 icons/readme 경로를 확인했으며

development 경로로 들어가 추가적인 정보를 수집했다.

디렉터리 인덱싱 취약점이 존재하여 2개의 txt 파일을 확인할 수 있었다. 두 파일의 내용을 확인해 보았다.

 

dev.txt의 내용은 아래와 같다.

2018-04-23: 나는 그 스트럿츠를 가지고 장난을 쳤는데, 꽤 멋지다! 깔끔할 수도 있을 것 같아요
이 서버에서도 호스팅할 수 있습니다. 아직 실제 웹 앱을 만들어본 적은 없지만 해당 예제를 시도해 보았습니다.
작동 방식을 보여주게 됩니다(이것은 예제의 REST 버전입니다!). 아, 그리고 지금 나는
다른 버전에서 문제가 발생했기 때문에 버전 2.5.12를 사용했습니다. -케이

2018-04-22: SMB가 구성되었습니다. -케이

2018-04-21: Apache를 설정했습니다. 나중에 콘텐츠를 추가할 예정입니다. -제이

struts를 다른 서버에서 호스팅 중인 것으로 추정되며, rest 버전인 거 같다 또한 버전은 2.5.12 버전이며 smb가 구성되었다고 한다.

 

j.txt의 내용은 아래와 같다.

J의 경우:

나는 약한 자격 증명이 없는지 확인하기 위해 /etc/shadow의 내용을 감사해 왔습니다.
그리고 나는 당신의 해시를 정말 쉽게 해독할 수 있었습니다. 귀하는 당사의 비밀번호 정책을 알고 있으므로 이를 따르십시오.
그것? 최대한 빨리 비밀번호를 변경하세요.

-케이

j의 패스워드가 해독하기 쉽게 설정되어 있는 거 같다. 그 외에 특이점은 발견되지 않았다.

우선 smb 취약점을 추가적으로 확인해 보자.

nmap nse를 통해 스크립트를 돌려 추가적인 정보를 확인했으며,

anonymous와 IPC$가 공유디렉터리로 존재한다는 걸 확인할 수 있으며, 둘 다 Anonymous가 READ/WRITE 권한이 설정되어 있다. 즉 익명의 계정이 read와 write권한을 얻을 수 있다는 것이다.

이러한 정보로 공격코드가 존재하는지도 확인해 보자. 추가적인 공격 정보는 DoS 말고는 나타난 것이 없다.

해당 samba 버전을 가지고 확인해 보면 아래와 같은 익스플로잇을 볼 수 있다.

공유디렉터리를 통한 익스 코드인 거 같다. 또한 cve 2017-7494를 부여받았다.

한번 해당 모듈을 통해 공격을 시도해 보자.

시도해보았으나 해당 모듈은 사용이 되지 않아 smb 수집 정보가 확실한지 추가적으로 알아봤다.

smbmap으로 확인 결과 해당 위 모듈에서 필요헀던 write 권한이 주어진 공유디렉터리가 존재하지 않고 

anonymous는 읽기만 가능하며, IPC는 접근이 거부되었다.

이로써 해당 모듈은 사용이 불가했고 좀 더 알아봤다.


2. 취약점 스캐닝 단계 및 타깃 시스템 침투 후 권한 획득


enum4 linux를 사용한 결과 아래와 같은 추가 정보를 획득할 수 있었다.

kay와 jan 유저가 존재한다. smb로는 두 계정 패스워드를 알 수 없어 접근할 수 없었으며,

Hydra를 통해 ssh에 접근을 시도했다.

kay는 실패했고 jan으로 접속에 성공했다.

jan 계정으로 접속 후 여러 정보들을 확인하다

kay 디렉터리를 발견 후 해당 디렉터리에 폴더들을 확인했다.

여기서 중요정보는 pass.bak 디렉터리와. ssh의 권한 설정이 잘못되어 있다는 것이다. 이 취약점으로 ssh 취약점으로 이어질 수 있다. 좀 더 살펴보았다.


4. 권한 상승 단계


jan 사용자는 sudo 명령어의 권한이 주어져 있지 않다.

해당 시스템 내에 취약한 내부설정등이 존재하는지 확인해 보자.

unix-privesc-check는 해당 ssh접속한 서버에 strings 모듈이 설치되어 있지 않아 사용이 불가했다.

위와 비슷한 스크립트지만 python으로 동작하는 스크립트가 존재하므로 해당 서버에 파이썬 유무를 확인하였고,

파이썬은 정상적으로 설치가 되어 있었다.

result.log 파일을 확인해 보면

suid 및 sgid 설정이 되어있는 파일 중 권한 설정이 잘못되어있는 파일이 존재한다.

vim의 경우 suid 권한이 있을 경우 vim을 통해 파일을 열람할 경우 일시적으로 root권한을 부여받게 된다.

즉 일반 계정으로 접근이 불가했던 파일들에 대해 root권한으로 열람할 수 있다는 거다.

그럼 kay 디렉터리에 존재하던 파일들을 읽을 수 있지만 이는 따로 ssh 취약점을 통한 침투방안에서 이어서 하겠다.

 

그럼 다시 본론으로 돌아와

우린 sudo 설정파일을 vim으로 열어 이를 조작하여 jan에게 sudo 권한을 부여할 수 있다.

아래와 같이 sudoers 파일을 수정한다.

위와 같이 정상적으로 sudo 명령어의 권한을 얻었으며, sudo -i를 통해 root쉘 획득이 가능하다.

성공적으로 root권한 획득에 성공했다.

 

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.