欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CVE-2019-7304 Ubuntu本地提权漏洞复现

程序员文章站 2022-03-24 08:37:28
...

本文首发于我的个人博客

Snapd提供附加到本地UNIX_AF套接字的REST API。通过查询与该套接字的任何连接相关联的UID来完成对受限API函数的访问控制。在for循环中进行字符串解析期间,可能会影响用户控制的套接字对等数据以覆盖UID变量。这允许任何用户访问任何API函数。

影响版本

snap version < 2.37.1

  • Ubuntu 18.10
  • Ubuntu 18.04 LTS
  • Ubuntu 16.04 LTS
  • Ubuntu 14.04 LTS

实验环境

Ubuntu 16.04.07 LTS

实验过程

1. 确定snap版本

snap version
# snap版本应该小于2.37.1

Ubuntu自带的snap一般都不存在该漏洞,我在这里卡了很久,慕然回首,之间在POC的README.md文档中给出了可用的下载链接…

CVE-2019-7304 Ubuntu本地提权漏洞复现

2. 下载POC

git clone https://github.com/initstring/dirty_sock.git

3. 生成**

登录Ubuntu,创建账号,然后本地生成一个**。

ssh-****** -t rsa -C "Ubuntu注册邮箱"

CVE-2019-7304 Ubuntu本地提权漏洞复现

进入.ssh目录下,使用cat命令显示id_rsa.pub(公钥)内容,然后把这些内容拷到账户的ssh_key中。

CVE-2019-7304 Ubuntu本地提权漏洞复现

4. 漏洞利用

首先开启ssh:sudo /etc/init.d/ssh start。如果提示找不到命令,则是ssh还没有安装,输入sudo apt install openssh-server -y以进行安装。安装完成后,再次启动。

进入poc文件夹,使用python3利用dirty_sockv1.py进行攻击,中间需要输入密码进行登录。

sudo python3 dirty_sockv1.py -u "Ubuntu注册邮箱" -k "/home/zxy/.ssh/id_rsa.pub"

CVE-2019-7304 Ubuntu本地提权漏洞复现

运行完后,查看/home路径下,多了一个和刚才创建ubuntu账户用户名相同的文件夹。但是我没找到该用户的密码是什么。

然后继续使用dirty_sockv2.py进行攻击:sudo python3 dirty_sockv2.py

CVE-2019-7304 Ubuntu本地提权漏洞复现

攻击成功,创建了一个用户名和密码均为dirty_sock的用户,我们可以验证该用户具有sudo权限。

CVE-2019-7304 Ubuntu本地提权漏洞复现

利用完该脚本后,snap会自动升级,但是拥有sudo权限的dirty_sock用户却会一直存在并可用。

CVE-2019-7304 Ubuntu本地提权漏洞复现