实验环境:Ubuntu12.04,因为后面的版本补上了脏牛漏洞

原理:看教材8.5

MAP_PRIVATE写时拷贝

MADV_DONTNEED丢弃

对COW用write3个步骤中2~3存在竞态条件

创建两个进程:一个写write,一个放弃madvise。执行顺序:madvise要放在write的2~3之间。While1不停循环,两个进程不停竞争,用CTRL+C结束程序

目标:放弃私有拷贝,直接在映射文件上写入

Task1:改变一个只读的dummy文件

创建一个dummy文件

在root文件夹下,对其他用户只读,若尝试写入会发现权限不够

尝试将/zzz文件的aaaaa处修改为******,5个a要修改为6个*,那么写时会覆盖掉后面一个字符b

Task2:改变密码文件试图获取root权限

创建新用户charlie,设置密码为CHARLIE123

修改脏牛攻击代码,用只读打开密码文件,找到存放charlie用户的记录并找到第三个用户id处,试图将其修改为0000,因为root的id是0,从而获取root权限

切换到charlie用户后,可以看到获取到root权限

Comments

⬆︎TOP