在2019年1月,由于snapd API中的错误,多个版本的Ubuntu被发现本地权限提升漏洞。
默认情况下,Ubuntu附带了snapd,但是如果安装了这个软件包,任何发行版都应该可利用。运行以下命令,如果你snapd
是2.37.1或更高,你是安全的。
$ snap version
snap 2.34.2
snapd 2.34.2
series 16
ubuntu 16.04
kernel 4.15.0-29-generic
poc链接:https://github.com/initstring/dirty_sock
先在Ubuntu SSO创建账号,然后本地生成密钥:
ssh-keygen -t rsa -C "<you email>"
然后把当前用户下/.ssh/
目录下的id_rsa.pub
(公钥)拷到你账户的ssh-keys中。
执行第一个poc
出现错误,因为没有开启ssh服务。
sudo apt install openssh-server
重新执行下
如果成功,sudo -i
即可获取root权限。
直接执行poc
python3 ./dirty_sockv2.py
如果成功,会创建一个账号密码都为dirty_sock
的用户,su命令切换过去,然后通过sudo就可以切换为root了。
如果遇到了No passwd entry for user 'dirty_sock'
的问题,则查看下图中的任务进度,等到doing任务执行完之后再进行尝试,如果仍不行,请使用方法一。
https://usn.ubuntu.com/3887-1/
https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SnapSocketParsing