Linux Privilege Escalation Kernel Exploits | Linux本地内核提权漏洞复现 CVE-2015-1328

文章目录

  • Linux Privilege Escalation Kernel Exploits | Linux本地内核提权漏洞复现 CVE-2015-1328
  • 1. 概述
    • 1.1 Overlayfs
    • 1.2 漏洞简述
    • 1.3 风险等级
    • 1.4 影响范围
    • 1.5 漏洞详情
  • 2. 环境配置
    • 2.1 方案一 VMware本地安装配置虚拟机
    • 2.2 方案二 线上靶场
  • 3. 漏洞复现
      • 整体思路
    • 3.1 Namp
    • 3.2 SSH暴力破解
    • 3.3 信息收集-识别操作系统和内核信息
      • 方法一:手工枚举
      • 方法二:脚本自动枚举
    • 3.4 查找可用的内核漏洞
      • 方法一:Searchspliot
      • 方法二: Linux Exploit Suggester
    • 3.5 上传并编译漏洞
    • 3.6 执行内核漏洞利用,获取root权限
  • 4. 修复建议
  • 5. 总结
  • 6. References

1. 概述

新技术、高性能技术的不断发展,越来越提升了操作系统的能力,而近几年出现的虚拟化技术,包括overlayfs虚拟层叠文件系统技术,则为docker这样的虚拟化方案提供了越来越强大的技术支撑,但是也同时带来了很多的安全问题,抛开传统的overflow溢出型漏洞不说,还有另一类漏洞属于"特性型"的漏洞,黑客利用系统原生提供的"功能",加上一些特殊设计的"使用组合方式",以此实现了非预期的操作结果,甚至root。

这也再次告诉我们,在系统层和黑客进行攻防,就需要比黑客更加深刻理解系统本身的特性,以及在极端条件下它们的组合方式,因为这些组合方式很有可能能够转化为攻击向量

1.1 Overlayfs

Overlayfs是一种类似aufs的一种堆叠文件系统,于2014年正式合入Linux-3.18主线内核,目前其功能已经基本稳定(虽然还存在一些特性尚未实现)且被逐渐推广,特别在容器技术中更是势头难挡。它依赖并建立在其它的文件系统之上(例如ext4fs和xfs等等),并不直接参与磁盘空间结构的划分,仅仅将原来底层文件系统中不同的目录进行“合并”,然后向用户呈现。因此对于用户来说,它所见到的overlay文件系统根目录下的内容就来自挂载时所指定的不同目录的“合集”。

1.2 漏洞简述

此漏洞源于overlayfs文件系统在上层文件系统目录中创建新文件时没有正确检查文件权限。它只检查了被修改文件的属主是否有权限在上层文件系统目录写入,导致当从底层文件系统目录中拷贝一个文件到上层文件系统目录时,文件属性也随同拷贝过去。如果Linux内核设置了CONFIG_USER_NS=y和FS_USERNS_MOUNT标志,将允许一个普通用户在低权限用户命名空间中mout一个overlayfs文件系统。本地普通用户可以利用该漏洞在敏感系统目录中创建新文件或读取敏感文件内容,从而提升到管理员权限。

1.3 风险等级

评定方式 等级
CVSS Score 7.2
CVSS Score 9.3
Confidentiality Impact Complete
Integrity Impact Complete
Availability Impact Complete
实现难度
基础权限 不需要
漏洞类型 缓存区溢出

1.4 影响范围

Ubuntu 12.04, 14.04, 14.10, 15.04 (Kernels before 2015-06-15)

1.5 漏洞详情

参见CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

当在上层文件系统目录中创建新文件时,overlayfs文件系统未能正确检查此文件的权限。而这一缺陷则可以被内核中没有权限的进程所利用,只要满足该进程CONFIG_USER_NS=y及overlayfs所拥有得FS_USERNS_MOUNT标志,即允许挂载非特权挂载空间的overlayfs。而这一条件是Ubuntu 12.04、14.04、14.10和15.04版本中的默认配置,所以这些版本的Ubuntu系统都受此漏洞影响。
ovl_copy_up_ 函数未能正确检查用户是否有权限向upperdir目录写入文件。而该函数唯一检查的是被修改文件的拥有者是否拥有向upperdir目录写入文件的权限。此外,当从lowerdir目录复制一个文件时,同时也就复制了文件元数据,而并非文件属性,例如文件拥有者被修改为了触发copy_up_程序的用户。

2. 环境配置

本次漏洞复现采用方案二:线上靶场

2.1 方案一 VMware本地安装配置虚拟机

在这里下载处于影响范围内的Ubuntu版本,并再VMware中安装配置。

注:

  • Ping一下,确保主机与靶机之间可以连通
  • 创建一个低权限用户

2.2 方案二 线上靶场

这里使用的是Tryhackme(一个优秀的渗透学习网站,有部分免费的教程)提供的关于Linux Privilege Escalation练习的虚拟机

3. 漏洞复现

如果是单纯想要了解内核漏洞提权可无视1-2步,从3.3看起即可

整体思路

  1. nmap扫描发现ssh服务
  2. 暴力破解ssh,得到一个低权限用户
  3. 登录靶机,信息收集,识别内核版本
  4. 搜索相关版本漏洞exp并下载
  5. 利用webshell工具/pythonde的http.sever等多种方法可以将下载的exp上传到靶机
  6. 编辑exp权限并运行
  7. Bingo!你现在是root了

3.1 Namp

使用nmap -sV -sC -T4 ip扫描

发现目标开放22端口,运行ssh服务

3.2 SSH暴力破解

这里知道存在一个低权限用户:karen

注:如果是自己配置的虚拟机可以通过`useradd`自行添加一个低权限用户

使用Kali中的Hydra进行暴力破解

hydra -l karen -P wordlists.txt ssh://ip

得到用户karen的密码为Password1,然后通过ssh登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhMwXuMT-1662294692671)(./img/ssh_login.png)]

登陆后查看用户有无sudo权限,发现确实是一个低权限用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DcPjs9eJ-1662294692672)(./img/sudo.png)]

3.3 信息收集-识别操作系统和内核信息

关于更全面的Linux基础信息搜集参考here和here

方法一:手工枚举

这里采用此方法

uname -a ; lsb_release -a; cat /proc/version /etc/issue /etc/*-release; hostnamectl | grep Kernel

发现内核版本: 3.13.0

方法二:脚本自动枚举

这里列举几个GitHub上的工具可以节省枚举时间。

These tools should only be used to save time knowing they may miss some privilege escalation vectors.

因为靶机的系统环境会影响不同工具的使用。如果目标系统上未安装用 Python 编写的工具,将无法运行它。所以最好熟悉一些其他工具

LinPeas

LinEnum
LES (Linux Exploit Suggester)

Linux Smart Enumeration

Linux Priv Checker

3.4 查找可用的内核漏洞

这里也有多种方法如:

方法一:Searchspliot

  1. 在Kali中使用Searchspliot命令查找相关漏洞

searchsploit linux kernel x.x.x.x; searchsploit [OS name & version]

  1. 使用searchsploit -m path/to/exploit/xxxx.c将搜索到的exp镜像到本地

方法二: Linux Exploit Suggester

使用 Linux Exploit Suggester自动化脚本可以在目标机器上自动识别可用的内核漏洞

3.5 上传并编译漏洞

  1. 如上图所示这里在攻击机开启python自带的http.server服务后,就可以使用靶机访问攻击机了,然后cdtmp目录使用wget命令从攻击机下载准备好的exp,并查看

  2. 通过chmod +x exp.c设置好可执行权限,然后使用gcc exp.c -o exploit对exp进行编译,

3.6 执行内核漏洞利用,获取root权限

4. 修复建议

  1. 根据Ubuntu已经发布的安全公告下载安装相应厂商补丁

  2. 升级系统

  3. 临时解决方法:

    如果您无法及时升级内核,也不需要使用overlayfs,可以将overelayfs加入黑名单或者直接删除overlayfs.ko或overlay.ko模块文件:

    modprobe -r overlayfs
    echo "blacklist overlayfs" > /etc/modprobe.d/blacklist-overlayfs.conf
    

    注:在一些更老的版本中,该内核模块的名字也可能是overlay。
    可以先用modinfo overlay或modinfo overlayfs来确认准确的内核模块名字。

  4. diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c(待验证)

    static struct file_system_type ovl_fs_type = {.name        = "overlay",.mount        = ovl_mount,.kill_sb    = kill_anon_super,.fs_flags    = FS_USERNS_MOUNT,};MODULE_ALIAS_FS("overlay");
    

5. 总结

虽然 Kernel Exploit 通常是一种简单的 提权方法,但它们应该是进行渗透测试时的最后手段,因为它们有会对设备造成破坏,而且很多时候它们只会运行一次。

6. References

CVE Details (2020) CVE-2015-1328. Available at: https://www.cvedetails.com/cve/CVE-2015-1328/…(Accessed: 29 Sept 2022).

Han Zhang. (2015) ‘CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root’ cnblogs. 25 June. Available at: https://www.cnblogs.com/LittleHann/p/4598120.html (Accessed: 01 Sept 2022).

Miklos Szeredi (2017). Overlayfs And Containers [PowerPoint Presentation] 23 March. Rat Hat.

Linux Privilege Escalation Kernel Exploits | Linux本地内核提权漏洞复现 CVE-2015-1328相关推荐

  1. linux漏洞知乎_Linux本地内核提权漏洞(CVE-2019-13272)

    0x00 简介 2019年07月20日,Linux正式修复了一个本地内核提权漏洞.通过此漏洞,攻击者可将普通权限用户提升为Root权限. 0x01 漏洞概述 当调用PTRACE_TRACEME时,pt ...

  2. str045漏洞提权linux,Linux运维知识之CVE-2016-5195 Dirtycow: Linux内核提权漏洞

    本文主要向大家介Linux运维知识之CVE-2016-5195 Dirtycow: Linux内核提权漏洞绍了,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. CVE-2016- ...

  3. CVE-2022-0847 Linux内核提权漏洞分析

    文章目录 前言 漏洞复现 1.1 文件覆写poc/exp 1.2 覆写/etc/passwd 漏洞分析 2.1 Linux管道机制 2.2 splice系统调用 2.3 漏洞利用流程 总结 前言 20 ...

  4. 脏牛Linux本地提权漏洞复现(CVE2016-5195)

    漏洞介绍: 脏牛漏洞(CVE2016-5195)是公开后影响范围最广和最深的漏洞之一,到2016被修复只十年来的每一个linux版本包括Android,桌面版和服务器版都受其影响.恶意攻击者可以轻易绕 ...

  5. 【CVE-2021-4043】Linux本地提权漏洞复现

    实验步骤 文章目录 实验步骤 CVE-2021-4043 Linux本地提权漏洞 实验背景 实验环境 漏洞复现 构造payload 用gcc编译后上传到阿里云 执行payload 漏洞修复 CVE-2 ...

  6. CVE-2022-21882 Win32k内核提权漏洞深入分析

    CVE-2022-21882漏洞是Windows系统的一个本地提权漏洞,微软在2022年1月份安全更新中修补此漏洞.本文章对漏洞成因及利用程序进行了详细的分析. 漏洞介绍 CVE-2022-21882 ...

  7. PWN2OWN 2017 Linux 内核提权漏洞分析

    0.前言 在2017年PWN2OWN大赛中,长亭安全研究实验室(Chaitin Security Research Lab)成功演示了Ubuntu 16.10 Desktop的本地提权.本次攻击主要利 ...

  8. 脏牛Linux本地提权漏洞复现(CVE-2016-5195、Linux、Android、提权)

    漏洞范围: Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复) 危害: 低权限用户利用该漏洞可以在众多Linux系统上实现本地提权 简要分析: 该漏洞 ...

  9. 【墨菲安全实验室】“Dirty Pipe”的故事-Linux 内核提权漏洞 (CVE-2022-0847)

    漏洞简述 3月7日,开发者 Max Kellermann 在他的博客(https://dirtypipe.cm4all.com/)中披露了一个能导致 Linux 权限提升的漏洞,编号为 CVE-202 ...

最新文章

  1. 打王者、调小酒、搭乐高,大厂女程序员的别样人生
  2. 写程序过程中写程序的注意事项
  3. 处理字符串_2_遍历字符串里的每个值
  4. 冷却水的循环方式有哪几种_关于钣金件常用的连接方式,你知道下列的哪几种...
  5. TYAN联合AMD举办线上研讨会,分享最新第三代AMD EPYC服务器产品
  6. 能代表个人水平的c语言程序,求全国高等学校计算机水平考试级C程序设计的免费..._报关水平_帮考网...
  7. 明年3月开卖!小米11超大杯有望搭载屏下摄像头技术
  8. 使用JQuery的Blazor日期选择器组件
  9. Android开发之广播
  10. python中三元_Python三元运算和Python函数介绍
  11. 并发编程的挑战——sychronized锁
  12. 阿里云OS和Android之争100问
  13. java强势来袭 百战程序员Java基础入门教程,学编程就像玩游戏一样简单 ~
  14. IPX/SPX 协议
  15. android开发:NDK开发配置
  16. 抓取日志的小工具(命令)Adb logcat
  17. 软件项目管理实践经验谈
  18. 计算机无法连接蓝牙键盘,电脑如何连接无线键盘_电脑上怎么连接蓝牙键盘-win7之家...
  19. 关于敏捷开发的一篇访谈录
  20. javaweb JAVA JSP汽车配件销售系统jsp配件销售网站 (jsp电子商务系统,购物商城)在线购物案例

热门文章

  1. 关于跨平台桌面应用程序开发的趋势
  2. nfs-ganesha将rgw导出为nfs文件接口
  3. 推荐系统[八]算法实践总结V0:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
  4. 北京之旅--国家图书馆
  5. 媒体文件 服务器,媒体文件服务器系统
  6. 阿里云ECS lnmp linux7 安装mongodb连接不上 child process failed, exited with error number
  7. 【保研记录贴】北交大计算机面试
  8. JavaWeb《后端内容:5. 项目实战:书城系统(下篇)》
  9. Struts的FormFile与Commons-FileUp…
  10. Python知识笔记(+3):在定义字符串前面加b、u、r、f的含义