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.实验:
- 查看linux的版本--通过uname-a因为本次实验的提权漏洞只限于部分Linux内核版本(LinuxKernelVersion4.14-4.4
- cat/proc/sys/kernel/unprivileged_bpf_disabled通过这个查看是否存在文件:如果存在则返回0
- 切换到用户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.了解了漏洞原理
相关文章:
Ubuntu16.04.4系统本地提权实验
目录 1.介绍: 2.实验: 3.总结: 1.介绍: 1.1:eBPF简介:eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制,BPF可以理解成用户与内核之间的一条通道,有非常强大的…...
Vue中使用正则表达式进行文本匹配和处理的方法
1. 正则表达式基础 正则表达式是一种用来匹配字符串的模式。它由普通字符(例如字符 a 到 z)和特殊字符(称为"元字符")组成。以下是一些基本的正则表达式示例: 匹配邮箱的正则表达式: /^[\w-](\…...
php许愿墙代码包括前端和后端部分
以下是一个简单的PHP许愿墙代码示例,包括前端和后端部分: 前端HTML代码(index.html): <!DOCTYPE html> <html> <head><title>许愿墙</title> </head> <body><h1>许…...
PHP 刷新缓存区的问题!
PHP流式输出,在Nginx下可以正常刷新缓存区 , 但是在Apache下会等待循环全部执行完,才会刷新!有怎么解决? header(X-Accel-Buffering: no); // Nginx情况下必须加这一行header(Content-type: text/event-stream);header…...
Android Studio Giraffe-2022.3.1-Patch-3安装注意事项
准备工作: android studio下载地址:https://developer.android.google.cn/studio/releases?hlzh-cn gradle下载地址:https://services.gradle.org/distributions/ 比较稳定的网络环境(比较android studio相关的依赖需要从谷歌那边…...
【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法
目录 说明: 1. 参数模型(全局字典) 2. 实现过程(C) 创建功能包 参数命令行的使用 YAML参数文件 rosparam命令 使用示例 编程方法(C) 配置代码编译规则 编译并运行 编译 运行 3. 实…...
Webpack 懒加载
文章目录 前言懒加载示例后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:webpack 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出…...
深度遍历DFS(括号生成,二叉树所有路径)
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()","()(())","()()(…...
Rational Arithmetic
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️有理数运算 实现对两个有理数的…...
文心一言4.0(ERNIE-Bot-4)申请方法及简单调用代码示例
10月17日过后,估计很多人会看到类似的新闻,如图: 我看到这则新闻也是觉得非常感兴趣,于是本着“百闻不如一见”的实事求是的态度检索如何申请,没想到还真找到了ERNIE-Bot-4(俗称:文心一言4.0&a…...
年终好价节买什么好?这些数码好物闭眼入
大家是不是都没听说过好价节?直截了当地说,这其实就是原先的双十二购物狂欢节,只不过给它起了个新名字。不过,今年毕竟是首次改名,因此淘宝年终好价节的各种优惠,仍然是我们值得期待的!作为年前…...
webpack对项目进行优化
对项目进行优化是提高性能和效率的关键,以下是一些实用的Webpack优化技巧: 代码拆分(Code Splitting):将代码拆分为多个小块,按需加载。通过配置splitChunks插件,可以将公共代码提取到单独的文件…...
Python edge-tts库全部声音模型一览表
下面是edge-tts的声音模型,zh-CN为中文语音模型 Name: af-ZA-AdriNeural Gender: Female Name: af-ZA-WillemNeural Gender: Male Name: am-ET-AmehaNeural Gender: Male Name: am-ET-MekdesNeural Gender: Female Name: ar-AE-FatimaNeural Gender: Female N…...
网络编程相关面试题
目录 1.请解释一下什么是TCP协议的三次握手?2.TCP协议使用什么机制确保数据包的顺序和完整性?3.什么是UDP协议?它与TCP协议有什么不同?4.请解释一下什么是IP地址?为什么需要它?5.请解释一下什么是端口&…...
TCP_NODELAY与TCP通信效率
最近做tcp通信速度测试:主要流程如下所示: //client: while() { send data... recv data... //阻塞 }//server: while() { recv data... send data... } 当每次send数据量较小时,速度极慢!而send数据量较大时速度尚可。两者速度…...
ZooKeeper的分布式锁---客户端命令行测试(实操课程)
本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读测试来学习zookeeper。阅读本文之前,请先阅读----zookeeper 单机伪集群搭建简单记录(实操课程系列)。 阅读本文之前,请先阅读…...
工业4.0时代:图像识别驱动制造业智能生产的未来
在数字化革命的大潮中,工业4.0的到来标志着制造业将迎来全新的智能化时代。其中,图像识别技术作为一项核心技术,正引领着制造业实现了前所未有的智能生产。本文将深入探讨工业4.0时代下,图像识别是如何驱动制造业实现智能生产&…...
ROS vscode使用基本配置
1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译,选择:catkin_make:build 修改.vscode/tasks.json 文件 4、 创建 ROS 功能包 选定 src ---> create catkin package 依次设置包名、添加依赖 5、C 实现 在功能包的 src 下…...
Android、ESP32、ESP8266的mqtt通信
Android activity_main <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http:/…...
Hive安装与配置
你需要掌握: 1.Hive的基本安装; 2.Mysql的安装与设置; 3.Hive 的配置。 注意:Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包,下载好放在/op…...
Keil C251中RTX251配置错误解决方案
1. RTX251配置错误问题解析与修复指南最近在使用Keil C251开发工具时,遇到了一个典型的RTX251实时操作系统配置问题。当尝试编译TRAFFIC2、SAMPLE或INTRPT示例项目时,系统在汇编RTXCONF.A51文件时抛出了大量"UNDEFINED SYMBOL"错误。这个问题困…...
Scalify:基于e-graph的分布式机器学习计算图等价性验证工具
1. 项目概述在分布式机器学习的世界里,我们常常面临一个看似简单实则棘手的问题:我写的这个并行化代码,真的和单机版本在数学上等价吗?这个问题背后,是无数个深夜调试的工程师,是那些在数百个GPU上跑了一周…...
机器学习原子势能建模:深度集成与贝叶斯神经网络的不确定性估计对比
1. 项目概述与核心问题在材料科学和计算化学领域,机器学习原子间势能模型已经从一个前沿概念,变成了加速新材料发现和深入理解物质行为的核心工具。简单来说,它就像一个“超级拟合器”,通过学习大量已知的原子构型及其对应的能量和…...
Atomic Layout嵌套布局最佳实践:构建复杂UI系统的完整指南
Atomic Layout嵌套布局最佳实践:构建复杂UI系统的完整指南 【免费下载链接】atomic-layout Build declarative, responsive layouts in React using CSS Grid. 项目地址: https://gitcode.com/gh_mirrors/at/atomic-layout Atomic Layout是一个基于React的声…...
在Ubuntu 22.04上编译COLMAP 3.8,我踩过的那些坑(含Anaconda环境冲突、CUDA版本、GUI缺失等完整解决方案)
在Ubuntu 22.04上编译COLMAP 3.8:从环境冲突到完美运行的实战指南当三维重建领域的专业工具COLMAP遇上最新的Ubuntu LTS版本,本该是科研工作的完美开端,但实际编译过程却像一场充满陷阱的冒险。本文将带你穿越Anaconda环境冲突、CUDA版本迷局…...
Qt6.5数控加工CAM框架实战:基于工厂模式与分层架构的CamCore完整实现
文章简介 本文基于Qt Creator 14.0.1、Qt6.5 LTS、CMake、C17,搭建一套轻量化数控加工CAM核心框架CamCore。采用工序、算法、UI界面一一映射的分层架构,结合工厂模式、多态继承、枚举参数管控设计,具备参数管理、工艺模板复用能力࿰…...
AI 术语通俗词典:RAG
RAG 是大语言模型、自然语言处理、知识问答、智能客服、企业知识库和 AI 应用开发中非常重要的一个术语,全称是 Retrieval-Augmented Generation,通常翻译为“检索增强生成”。它用来描述一种让大语言模型先从外部资料中检索相关内容,再基于这…...
ChatGPT生成图表总“丑”?3步精准调优Prompt+4类D3.js/Plotly适配模板,即刻提升专业度
更多请点击: https://intelliparadigm.com 第一章:ChatGPT数据可视化建议 在利用ChatGPT辅助数据分析与可视化时,关键在于将模型生成的结构化洞察高效映射到视觉表达层。ChatGPT本身不直接渲染图表,但可精准生成符合主流库&#…...
今天不用就过期:Gemini深度研究模式2024Q3权限变更预警——3类高价值功能即将对免费用户关闭
更多请点击: https://intelliparadigm.com 第一章:Gemini深度研究模式的核心价值与权限变更全景 Gemini深度研究模式(Deep Research Mode)是Google面向专业研究者与开发者推出的增强型推理能力范式,其核心价值在于将多…...
CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析
1. 这不是“打靶练习”,而是一次对嵌入式设备安全边界的实地测绘CVE-2017-17215这个编号,在漏洞数据库里只占一行,但在真实世界中,它曾让数百万台华为HG532系列家用路由器暴露在远程接管风险之下。我第一次在实验室复现它时&#…...
