当前位置: 首页 > news >正文

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.了解了漏洞原理

相关文章:

Ubuntu16.04.4系统本地提权实验

目录 1.介绍: 2.实验: 3.总结: 1.介绍: 1.1:eBPF简介:eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制,BPF可以理解成用户与内核之间的一条通道,有非常强大的…...

Vue中使用正则表达式进行文本匹配和处理的方法

1. 正则表达式基础 正则表达式是一种用来匹配字符串的模式。它由普通字符(例如字符 a 到 z)和特殊字符(称为"元字符")组成。以下是一些基本的正则表达式示例: 匹配邮箱的正则表达式: /^[\w-](\…...

php许愿墙代码包括前端和后端部分

以下是一个简单的PHP许愿墙代码示例&#xff0c;包括前端和后端部分&#xff1a; 前端HTML代码&#xff08;index.html&#xff09;&#xff1a; <!DOCTYPE html> <html> <head><title>许愿墙</title> </head> <body><h1>许…...

PHP 刷新缓存区的问题!

PHP流式输出&#xff0c;在Nginx下可以正常刷新缓存区 &#xff0c; 但是在Apache下会等待循环全部执行完&#xff0c;才会刷新&#xff01;有怎么解决&#xff1f; header(X-Accel-Buffering: no); // Nginx情况下必须加这一行header(Content-type: text/event-stream);header…...

Android Studio Giraffe-2022.3.1-Patch-3安装注意事项

准备工作&#xff1a; android studio下载地址&#xff1a;https://developer.android.google.cn/studio/releases?hlzh-cn gradle下载地址&#xff1a;https://services.gradle.org/distributions/ 比较稳定的网络环境&#xff08;比较android studio相关的依赖需要从谷歌那边…...

【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法

目录 说明&#xff1a; 1. 参数模型&#xff08;全局字典&#xff09; 2. 实现过程&#xff08;C&#xff09; 创建功能包 参数命令行的使用 YAML参数文件 rosparam命令 使用示例 编程方法&#xff08;C&#xff09; 配置代码编译规则 编译并运行 编译 运行 3. 实…...

Webpack 懒加载

文章目录 前言懒加载示例后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;webpack &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家指出…...

深度遍历DFS(括号生成,二叉树所有路径)

正整数 n 代表生成括号的对数&#xff0c;请设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()","()(())","()()(…...

Rational Arithmetic

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️有理数运算 实现对两个有理数的…...

文心一言4.0(ERNIE-Bot-4)申请方法及简单调用代码示例

10月17日过后&#xff0c;估计很多人会看到类似的新闻&#xff0c;如图&#xff1a; 我看到这则新闻也是觉得非常感兴趣&#xff0c;于是本着“百闻不如一见”的实事求是的态度检索如何申请&#xff0c;没想到还真找到了ERNIE-Bot-4&#xff08;俗称&#xff1a;文心一言4.0&a…...

年终好价节买什么好?这些数码好物闭眼入

大家是不是都没听说过好价节&#xff1f;直截了当地说&#xff0c;这其实就是原先的双十二购物狂欢节&#xff0c;只不过给它起了个新名字。不过&#xff0c;今年毕竟是首次改名&#xff0c;因此淘宝年终好价节的各种优惠&#xff0c;仍然是我们值得期待的&#xff01;作为年前…...

webpack对项目进行优化

对项目进行优化是提高性能和效率的关键&#xff0c;以下是一些实用的Webpack优化技巧&#xff1a; 代码拆分&#xff08;Code Splitting&#xff09;&#xff1a;将代码拆分为多个小块&#xff0c;按需加载。通过配置splitChunks插件&#xff0c;可以将公共代码提取到单独的文件…...

Python edge-tts库全部声音模型一览表

下面是edge-tts的声音模型&#xff0c;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协议的三次握手&#xff1f;2.TCP协议使用什么机制确保数据包的顺序和完整性&#xff1f;3.什么是UDP协议&#xff1f;它与TCP协议有什么不同&#xff1f;4.请解释一下什么是IP地址&#xff1f;为什么需要它&#xff1f;5.请解释一下什么是端口&…...

TCP_NODELAY与TCP通信效率

最近做tcp通信速度测试&#xff1a;主要流程如下所示&#xff1a; //client: while() { send data... recv data... //阻塞 }//server: while() { recv data... send data... } 当每次send数据量较小时&#xff0c;速度极慢&#xff01;而send数据量较大时速度尚可。两者速度…...

ZooKeeper的分布式锁---客户端命令行测试(实操课程)

本系列是zookeeper相关的实操课程&#xff0c;课程测试环环相扣&#xff0c;请按照顺序阅读测试来学习zookeeper。阅读本文之前&#xff0c;请先阅读----​​​​​​zookeeper 单机伪集群搭建简单记录&#xff08;实操课程系列&#xff09;。 阅读本文之前&#xff0c;请先阅读…...

工业4.0时代:图像识别驱动制造业智能生产的未来

在数字化革命的大潮中&#xff0c;工业4.0的到来标志着制造业将迎来全新的智能化时代。其中&#xff0c;图像识别技术作为一项核心技术&#xff0c;正引领着制造业实现了前所未有的智能生产。本文将深入探讨工业4.0时代下&#xff0c;图像识别是如何驱动制造业实现智能生产&…...

ROS vscode使用基本配置

1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译&#xff0c;选择: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安装与配置

你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包&#xff0c;下载好放在/op…...

Keil C251中RTX251配置错误解决方案

1. RTX251配置错误问题解析与修复指南最近在使用Keil C251开发工具时&#xff0c;遇到了一个典型的RTX251实时操作系统配置问题。当尝试编译TRAFFIC2、SAMPLE或INTRPT示例项目时&#xff0c;系统在汇编RTXCONF.A51文件时抛出了大量"UNDEFINED SYMBOL"错误。这个问题困…...

Scalify:基于e-graph的分布式机器学习计算图等价性验证工具

1. 项目概述在分布式机器学习的世界里&#xff0c;我们常常面临一个看似简单实则棘手的问题&#xff1a;我写的这个并行化代码&#xff0c;真的和单机版本在数学上等价吗&#xff1f;这个问题背后&#xff0c;是无数个深夜调试的工程师&#xff0c;是那些在数百个GPU上跑了一周…...

机器学习原子势能建模:深度集成与贝叶斯神经网络的不确定性估计对比

1. 项目概述与核心问题在材料科学和计算化学领域&#xff0c;机器学习原子间势能模型已经从一个前沿概念&#xff0c;变成了加速新材料发现和深入理解物质行为的核心工具。简单来说&#xff0c;它就像一个“超级拟合器”&#xff0c;通过学习大量已知的原子构型及其对应的能量和…...

Atomic Layout嵌套布局最佳实践:构建复杂UI系统的完整指南

Atomic Layout嵌套布局最佳实践&#xff1a;构建复杂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&#xff1a;从环境冲突到完美运行的实战指南当三维重建领域的专业工具COLMAP遇上最新的Ubuntu LTS版本&#xff0c;本该是科研工作的完美开端&#xff0c;但实际编译过程却像一场充满陷阱的冒险。本文将带你穿越Anaconda环境冲突、CUDA版本迷局…...

Qt6.5数控加工CAM框架实战:基于工厂模式与分层架构的CamCore完整实现

文章简介 本文基于Qt Creator 14.0.1、Qt6.5 LTS、CMake、C17&#xff0c;搭建一套轻量化数控加工CAM核心框架CamCore。采用工序、算法、UI界面一一映射的分层架构&#xff0c;结合工厂模式、多态继承、枚举参数管控设计&#xff0c;具备参数管理、工艺模板复用能力&#xff0…...

AI 术语通俗词典:RAG

RAG 是大语言模型、自然语言处理、知识问答、智能客服、企业知识库和 AI 应用开发中非常重要的一个术语&#xff0c;全称是 Retrieval-Augmented Generation&#xff0c;通常翻译为“检索增强生成”。它用来描述一种让大语言模型先从外部资料中检索相关内容&#xff0c;再基于这…...

ChatGPT生成图表总“丑”?3步精准调优Prompt+4类D3.js/Plotly适配模板,即刻提升专业度

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT数据可视化建议 在利用ChatGPT辅助数据分析与可视化时&#xff0c;关键在于将模型生成的结构化洞察高效映射到视觉表达层。ChatGPT本身不直接渲染图表&#xff0c;但可精准生成符合主流库&#…...

今天不用就过期:Gemini深度研究模式2024Q3权限变更预警——3类高价值功能即将对免费用户关闭

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini深度研究模式的核心价值与权限变更全景 Gemini深度研究模式&#xff08;Deep Research Mode&#xff09;是Google面向专业研究者与开发者推出的增强型推理能力范式&#xff0c;其核心价值在于将多…...

CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析

1. 这不是“打靶练习”&#xff0c;而是一次对嵌入式设备安全边界的实地测绘CVE-2017-17215这个编号&#xff0c;在漏洞数据库里只占一行&#xff0c;但在真实世界中&#xff0c;它曾让数百万台华为HG532系列家用路由器暴露在远程接管风险之下。我第一次在实验室复现它时&#…...