SST-Lab5:DirtyCOW Attack
实验环境: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权限