Ubuntu16.04.4系统本地提权实验

目录

1.介绍:

2.实验:

3.总结:


1.介绍:

1.1:eBPF简介:eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制,BPF可以理解成用户与内核之间的一条通道,有非常强大的功能。一个典型的BPF程序流程为:用户程序调用syscall(__NR_bpf,BPF_MAP_CREATE,&attr,sizeof(attr))申请创建一个map,在attr结构体中指定map的类型、大小、最大容量等属性。用户程序调用syscall(__NR_bpf,BPF_PROG_LOAD,&attr,sizeof(attr))来将我们写的BPF代码加载进内核,attr结构体中包含了指令数量、指令首地址指针、日志级别等属性。在加载之前会利用虚拟执行的方式来做安全性校验,这个校验包括对指定语法的检查、指令数量的检查、指令中的指针和立即数的范围及读写权限检查,禁止将内核中的地址暴露给用户空间,禁止对BPF程序stack之外的内核地址读写。安全校验通过后,程序被成功加载至内核,后续真正执行时,不再重复做检查。用户程序通过调用setsockopt(sockets[1],SOL_SOCKET,SO_ATTACH_BPF,&progfd,sizeof(progfd)将我们写的BPF程序绑定到指定的socket上。Progfd为上一步骤的返回值。用户程序通过操作上一步骤中的socket来触发BPF真正执行。eBPF虚拟指令系统属于RISC,拥有10个虚拟寄存器,r0-r10,在实际运行时,虚拟机会把这10个寄存器一一对应于硬件CPU的10个物理寄存器。用户可以用eBPF指令字节码的形式向内核输送代码,并通过事件来触发内核执行用户提供的代码;同时以map(key,value)的形式来和内核共享数据,用户层向map中写数据,内核层从map中取数据,反之亦然。eBPF可用于内核的跟踪和调试,网络事件的过滤和安全性。一般机制是:用户空间将一个特殊的汇编字节码加载到内核中,并附带说明附加程序的位置,内核运行一个“验证器”来确保程序是安全的,内核将字节码转换为本地代码,并将其附加到请求的位置。


1.2:当然,使普通用户能向内核提交可控的指令代码去执行,会带来一些严重的安全问题

1.3:CVE-2017-16995:这个漏洞存在于Linux内核的eBPF模块,是由于eBPF验证模块的计算错误产生的一个内存任意读写漏洞。用户和攻击者可以使用这个漏洞以达到提权的目的。提权原理:攻击者首先在进程用户空间植入提权代码,并且正常情况下内核函数指针指向内核空间的内核代码。利用写任意内存模式内核漏洞,修改函数指针,使得修改后的指针指向用户空间的提权代码,当攻击程序陷入到内核中执行到修改后的函数时,就将内核执行控制流引导至用户空间提权代码,将权限提权。影响范围:LinuxKernelVersion4.14-4.4(影响Ubuntu和Debian发行版)漏洞的触发,还需要2个条件。lKernel编译选项CONFIG_BPF_SYSCALL打开,启用了bpfsyscall;l/proc/sys/kernel/unprivileged_bpf_disabled设置为0,允许非特权用户调用bpfsyscall。修复方案:l设置/proc/sys/kernel/unprivileged_bpf_disabled为1,也是最简单有效的方式,虽然漏洞仍然存在,但会让exp失效;l使用Ubuntu的预发布源,更新Ubuntu4.4的内核版本,因为是非正式版,其稳定性无法确认

2.实验:

  1. 查看linux的版本--通过uname-a因为本次实验的提权漏洞只限于部分Linux内核版本(LinuxKernelVersion4.14-4.4
  2. cat/proc/sys/kernel/unprivileged_bpf_disabled通过这个查看是否存在文件:如果存在则返回0
  3. 切换到用户m同时切换到目录并且查看文件信息

1.sudo gcc -o m upstream44.c

sudo chmod a+x m

编写代码发现用户变为了root

3.总结:

1.Kernel编译选项CONFIG_BPF_SYSCALL打开,启用了bpfsyscall;2.l/proc/sys/kernel/unprivileged_bpf_disabled设置为0,允许非特权用户调用bpfsyscall。

3.修复方案:l设置/proc/sys/kernel/unprivileged_bpf_disabled为1,也是最简单有效的方式,虽然漏洞仍然存在,但会让exp失效;l使用Ubuntu的预发布源,更新Ubuntu4.4的内核版本,因为是非正式版,其稳定性无法确认.

4.了解了漏洞原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python的控制流语句使用

Python的控制流语句使用 判断语句 if分支示意图语法介绍注意事项示例 for循环示意图语法介绍列表推导式示例 while循环与for的区别语法介绍示例 判断语句 if分支 示意图 单、双、多分支: 语法介绍 # 单分支 if condition:expression # 双分支 if condition:exp…

Spark-java版

SparkContext初始化 相关知识 SparkConf 是SparkContext的构造参数,储存着Spark相关的配置信息,且必须指定Master(比如Local)和AppName(应用名称),否则会抛出异常;SparkContext 是程序执行的入口&#xf…

设计好的测试用例,6大注意事项

设计好的测试用例对于发现缺陷、验证功能、提高可靠性、降低风险和提高效率都具有重要的作用,是保证产品质量和稳定性的重要环节。如果测试用例有问题,可能会导致遗漏缺陷、功能验证不充分、测试效率低下以及误报漏报等问题,从而影响项目的质…

Ubuntu安装nfs服务步骤

Ubuntu安装nfs服务步骤 一、NFS? NFS:网络文件系统(Network File system File)缩写,可通过网络让不同的机器,不同操作系统之间可以彼此共享文件和目录。 二、安装 1.安装nfs服务器命令:sudo…

BUUCTF-pwn-ciscn_2019_ne_51

简单查看保护: 32为程序没有canary没有PIE,应该是简单的栈溢出。我们照着这个思路去找溢出点在哪,运行下程序看看什么情况: 程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事: 主…

F. Magic Will Save the World

首先积攒了能量打了怪再积攒是没有意义的,可以直接积攒好,然后一次性进行攻击 那么怎么进行攻击了?可以尽量的多选怪物使用水魔法攻击剩余的再用火魔法进行攻击, 也就是只要存在合法的体积(即装入背包的怪物的体积之…

qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题

qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题 code review! 文章目录 qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题1.Qt的app.exec()详解2.ros::spin()详解3.ros::AsyncSpinner详解4.主线程中结合使用的示…

笔记63:注意力评分函数

本地笔记地址:D:\work_file\(4)DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章:动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a a a a

Python语言学习笔记之五(Python代码注解)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 注解与注释是不一样的,注解有更广泛的应用; 通过注解与注释都能提高代码的可读性和规…

带大家做一个,易上手的家常蒜薹炒瘦肉

首先 从冰箱那一块瘦肉 用水化一下冰 然后 那一把蒜薹 将所有蒜薹头和尾部去掉一小节 这个地方是不能吃的 然后 剩下的部分 切成如下图这样 一小条一小条的样子 然后 将蒜薹倒入盆中清水洗一下 瘦肉清洗一下 然后切片 然后 直接起锅烧油 油烧热后马上下肉翻炒 一定要大点翻…

kafka C++实现生产者

文章目录 1 Kafka 生产者的逻辑2 Kafka 的C API2.1 RdKafka::Conf2.2 RdKafka::Message2.3 RdKafka::DeliveryReportCb2.4 RdKafka::Event2.5 RdKafka::EventCb2.6 RdKafka::PartitionerCb2.7 RdKafka::Topic2.8 RdKafka::Producer(核心) 3 Kafka 生产者…

【代码】考虑灵活性供需平衡的电力系统优化调度模型

程序名称:考虑灵活性供需平衡的电力系统优化调度模型 实现平台:matlab-yalmip-cplex/gurobi 代码简介:最可再生能源发电设备和并网技术快速发展,以新能源为主导的新型电力系统逐步形成。高比例新能源的随机波动性导致电力系统的…

redis的数据类型的操作增删改查

redis的数据类型的操作增删改查 redis的高可用: 在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9% redis的高可用的含义要更加宽泛,正常服务是指标之一数据容量扩展,数据的安全性…

Oracle 11g安装过程

文章目录 前言1.下载安装包2.安装2.1本地安装文件2.2 安装过程 3.查看是否安装成功3.1 查看oracle是否安装成功3.2 查看oracle服务 前言 本文仅用于记录亲自安装oracle的过程 1.下载安装包 官网地址: Oracle Database 11g Release 2 (11.2.0.1.0) 注意&#xff…

数据治理框架和成熟度模型

数据治理成熟度模型 一个企业的数据治理能力越高,所享受到数据治理带来的价值也会越多,如增加收入、减少成本、降低风险等。于是,很多企业想要准确地评估本公司的数据治理能力,可以利用数据治理成熟度模型方法,包括 D…

Javaweb之Vue组件库Element案例的详细解析

4.4 案例 4.4.1 案例需求 参考 资料/页面原型/tlias智能学习辅助系统/首页.html 文件,浏览器打开,点击页面中的左侧栏的员工管理,如下所示: 需求说明: 制作类似格式的页面 即上面是标题,左侧栏是导航&…

泛微OA对接金蝶云星空方案分享(对接场景解析)

分享金蝶云星空跟泛微OA系统集成对接的方案分享,主讲审批流程对接,表单对接的两类场景。分别是金蝶云星空发起申请和泛微发起流程审批,最终实现统一管理。 数据集成主要有以下好处: (1)数据一致性&#xf…

吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合

产品:4块55寸OLED透明拼接屏 项目地点:南宁 项目时间:2023年11月 应用场景:吉利展厅 在2023年11月的南宁,吉利展厅以其独特的展示设计吸引了众多参观者的目光。其中最引人注目的亮点是展厅中央一个由四块55寸OLED透…

函数的极值与最值

函数的最值 1.闭区间上连续函数的最值 1.求驻点或不可导点(可能的极值点) 2.求函数在驻点,不可导点,端点的函数值 3.比较大小 例题: 例题思想:分段函数分段点必须验证导数的存在性 几种常见的最值类型 1.…

WordPress自动采集伪原创发布工具

在当今数字化时代,随着信息爆炸式增长,网站内容的更新速度飞快。对于拥有WordPress网站的用户而言,如何轻松而又快速地批量采集伪原创内容成为一项具有挑战性的任务。本文将专心分享一些方法和技巧,帮助WordPress用户实现批量采集…