這兩天遇到了一個滲透到了提權階段,結果折騰了半天也沒提權上去。。。就正好復現了幾個提權方法
- 影響范圍
Linux kernel >= 2.6.22(2007年發行)開始就受影響了,直到2016年10月18日才修復。
- 漏洞原理
在 Linux 內核的內存子系統處理私有只讀內存映射的寫時復制 (Copy-on-Write) 破壞的方式中發現了競爭條件漏洞,從而導致破壞私有只讀內存映射。
一個沒有特權的本地用戶可以利用這個缺陷來獲得對其他只讀內存映射的寫權限,從而獲取到更高的權限。
相關說明:https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
- 復現過程
這里附上兩個poc:
poc1:https://github.com/gbonacini/CVE-2016-5195
poc2:https://github.com/FireFart/dirtycow
這里先用第一個來測試
查看id
通過uname -a 來查看linux的內核版本
github上也有自動檢測工具
https://github.com/mzet-/linux-exploit-suggester
這里也檢測出了臟牛提權漏洞
在poc文件夾中直接make,生成一個dcow
直接運行,可以看到返回了一個新的密碼
通過su切換到root,然后輸入剛才返回的密碼就可以直接登錄了
git第二個poc下來使用gcc編譯dirty.c文件
gcc -pthread dirty.c -o drty -lcrypt
運行dirty,成功后回提示輸入新密碼,且生成了一個名為firefart的新root權限用戶
成功后回生成一個passwd的備份文件在/tmp下的passwd.bak文件
這時候我們查看/etc/passwd會發現多了兩條數據
登錄,查看id