eLection: 1靶场渗透测试

eLection: 1

来自 <eLection: 1 ~ VulnHub>

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.196

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.196

4,访问一下80端口存在的服务

是默认的Apache页面

dirsearch -u http://192.168.23.196 -x 404,403,500

查看/robots.txt

还存在/phpnyadmin

还有/election

再扫描这个页面的子目录

dirsearch -u http://192.168.23.196/election -x 404,403,500

日志文件里面找到用户名和密码love/P@$$w0rd@123

5,使用ssh直接登录

ssh love@192.168.23.196 

然后进行信息收集

寻找具有suid权限的特殊二进制文件

find / -perm -4000 -type f 2>/dev/null

  1. /:从根目录开始递归搜索整个文件系统。
  2. -perm -4000:匹配权限模式。4000 是 SUID 位的八进制值,- 表示“所有指定权限位必须被设置”。即仅筛选出 SUID 权限被启用的文件。
  3. -type f:仅搜索普通文件(排除目录、设备文件等)。
  4. 2>/dev/null:将标准错误输出(如权限不足的警告)重定向到空设备,使结果更清晰。

搜索这个有无可利用漏洞

将文件转储下来

然后kali开启http服务

在靶场上下载这个47009.c文件

编译文件,然后给权限执行,提权变成root用户

得到/root下的flag

深度解析:为什么 SUID 权限的二进制文件可被提权利用?

一、SUID 权限的本质

在 Linux/Unix 系统中,SUID(Set User ID) 是一种特殊的文件权限标志。当用户执行一个设置了 SUID 位的程序时,该程序会以 文件所有者(Owner)的权限 运行,而非执行者的权限。例如:

  • 若一个程序属主是 root,且设置了 SUID,普通用户执行时,该程序会暂时获得 root 权限。

关键机制

  • 进程的 有效用户ID(EUID) 会被设置为文件属主的 UID。
  • 例如:/usr/bin/passwd 的属主是 root,普通用户执行 passwd 修改密码时,EUID 会变为 0(root),从而允许写入 /etc/shadow。

二、提权的核心逻辑

SUID 程序本身并不直接导致提权,但若程序存在以下漏洞,攻击者可通过它 继承高权限,进而执行恶意操作:

1. 程序逻辑漏洞

如果 SUID 程序的代码存在安全缺陷,攻击者可利用漏洞 以高权限执行任意代码。常见漏洞类型包括:

  • 命令注入:程序拼接用户输入到系统命令中(如 system()、popen())。
    • 示例:程序调用 system("backup_script " + user_input),用户输入 ; /bin/sh,实际执行 backup_script ; /bin/sh,启动 root shell。
  • 缓冲区溢出:程序未对输入长度做检查,覆盖栈/堆数据,劫持程序执行流程。
    • 示例:通过溢出覆盖返回地址,跳转到恶意代码(shellcode),以 root 权限执行。
  • 环境变量劫持:程序依赖环境变量(如 PATH、LD_PRELOAD)加载外部资源。
    • 示例:若程序调用 system("ls"),攻击者可修改 PATH,使 ls 指向恶意脚本,以 root 权限执行。
  • 文件操作漏洞:程序以高权限读写敏感文件(如 /etc/passwd)。
    • 示例:程序未检查用户输入的文件路径,导致攻击者覆盖 /etc/shadow。

2. 滥用程序功能

某些 SUID 程序的功能本身可被“合法滥用”来提权:

  • 启动子进程:若 SUID 程序能启动其他进程(如 bash、sh),子进程会继承 EUID。
    • 示例:/usr/bin/find 的 -exec 参数可执行命令:
      find / -name test -exec /bin/sh \;  # 以 root 权限启动 shell
  • 写入敏感文件:程序有权限修改系统文件(如 crontab、sudoers)。
    • 示例:通过 SUID 程序写入 /etc/crontab,添加恶意任务,由 cron 以 root 权限执行。

3. 配置错误

管理员可能错误地为危险程序设置 SUID 权限:

  • 自定义脚本:Shell/Python 脚本设置 SUID 通常是无效的(因解释器会忽略 SUID),但若错误配置,可能引发风险。
  • 不必要的 SUID:例如为文本编辑器 vim 设置 SUID,允许用户通过 :!sh 启动 root shell。

三、提权的具体步骤(以命令注入为例)

假设发现一个 SUID 程序 /usr/bin/vulnerable,属主为 root,代码如下:

#include <stdlib.h>
int main(int argc, char *argv[]) {
    system(argv[1]);  // 直接执行用户输入的命令
    return 0;
}

攻击过程

  1. 确认 SUID 权限
    ls -l /usr/bin/vulnerable
    -rwsr-xr-x 1 root root 16384 Jan 1 00:00 /usr/bin/vulnerable  # 设置了 SUID
  2. 利用命令注入
    /usr/bin/vulnerable "/bin/sh"  # 执行命令 `/bin/sh`,继承 root 权限
  3. 获得 root shell
    whoami  # 输出 root

四、经典提权案例

  1. CVE-2021-3156(sudo 堆溢出漏洞)
    • 漏洞类型:缓冲区溢出。
    • 影响:攻击者可通过 sudoedit 以 root 权限执行任意代码。
    • 利用命令:
      sudoedit -s '\' $(perl -e 'print "A" x 65536')  # 触发溢出,获取 root shell
  2. /usr/bin/find 的 -exec 参数
    find / -name test -exec /bin/sh \;  # 启动 root shell
  3. /usr/bin/vim(配置错误)
    vim -c ':!/bin/sh'  # 若 vim 有 SUID,可启动 root shell

五、防御措施

  1. 最小化 SUID 程序
    • 定期审计:find / -perm -4000 -type f。
    • 移除非必要 SUID 权限:chmod u-s /path/to/file。
  2. 代码安全实践
    • 避免在 SUID 程序中使用 system()、popen() 等危险函数。
    • 严格过滤用户输入(如使用白名单机制)。
  3. 权限隔离
    • 为服务分配低权限用户,而非直接使用 root。
  4. 系统加固
    • 使用 grsecurity、AppArmor 等限制进程行为。
    • 启用 SELinux 的强制访问控制(MAC)。

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

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

相关文章

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火

RuleOS&#xff1a;区块链开发的“新引擎”&#xff0c;点燃Web3创新之火 在区块链技术的浪潮中&#xff0c;RuleOS宛如一台强劲的“新引擎”&#xff0c;为个人和企业开发去中心化应用&#xff08;DApp&#xff09;注入了前所未有的动力。它以独特的设计理念和强大的功能特性&…

【MySQL篇】MySQL基本查询详解

目录 前言&#xff1a; 1&#xff0c;Create 1.1&#xff0c;单行数据全列插入 1.2&#xff0c;单行数据指定列插入 1.3&#xff0c;多行数据全列插入 1.4&#xff0c;多行数据指定列插入 1.5&#xff0c;插入否则更新 1.6&#xff0c;替换 2&#xff0c;Retrieve …

第十七:go 反射

fmt.printf("%T"&#xff0c;obj) // 打印 reflect 的类型 fmt.Printf("%T", obj) // *reflect.rtype //打印的是一个指针类型 reflect包 在Go语言中反射的相关功能由内置的reflect包提供&#xff0c;任意接口值在反射中都可以理解为由reflect.Type和…

热门的壁纸创作风格呈现多元化发展趋势

下热门的壁纸创作风格呈现多元化发展趋势&#xff0c;以下是几种主流风格及其特点&#xff1a; 简约现代风格 流行元素&#xff1a;以简洁的线条、纯净的色彩块面和少量的抽象图形为主。摒弃过多繁杂的装饰&#xff0c;强调形式追随功能的设计理念。热度分析&#xff1a;在各大…

【SpringMVC】深入解析使用 Postman 在请求中传递对象类型、数组类型、参数类型的参数方法和后端参数重命名、及非必传参数设置的方法

SpringMVC—请求传参 1. 传递对象 如果参数比较多时&#xff0c;方法声明就需要有很多形参&#xff1b;并且后续每次新增一个参数&#xff0c;也需要修改方法声明. 我们不妨把这些参数封装为一个对象&#xff1b; Spring MVC 也可以自动实现对象参数的赋值&#xff0c;比如 Us…

AI智能眼镜的视觉革命:算法如何重塑人机交互新纪元

引言&#xff1a;视觉算法的核心地位与AI智能眼镜的崛起 AI智能眼镜作为下一代交互终端&#xff0c;其核心价值在于将视觉感知与人工智能深度融合&#xff0c;通过实时环境解析与动态反馈&#xff0c;重新定义人机交互的边界。据预测&#xff0c;2025年全球AI智能眼镜销量将突…

掌握 ArcGIS Pro:古地图制作技巧与方法

在探索历史的长河中&#xff0c;古地图以其独特的魅力承载着丰富的地理信息和历史文化价值。 随着技术的进步&#xff0c;现代地理信息系统&#xff08;GIS&#xff09;如ArcGIS Pro为我们提供了强大的工具&#xff0c;使制作古地图成为可能。 本文将详细介绍如何使用ArcGIS …

MySQL的安装及配置

一.以安装包方式下载 1.进入MySQL官网&#xff0c;下载安装包 官网链接&#xff1a;https://downloads.mysql.com/archives/installer/ 2.安装MySQL 二.压缩包方式下载 下载位置&#xff1a;mysql下载位置 解压缩后位置&#xff1a;D:\mysql-8.0.15-winx64 在主目录下复制…

Python实例:PyMuPDF实现PDF翻译,英文翻译为中文,并按段落创建中文PDF

基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践 一 、功能预览:将英文翻译为中文后创建的PDF 二、完整代码 from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

『VUE』vue 引入Font Awesome图标库(详细图文注释)

目录 Font Awesome介绍安装引入npm 安装导入src/main.js 使用总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 Font Awesome介绍 我一般是中文网搜索找到图标的英文名然后去官方网站搜索 官方网站(英文名搜索) https://font…

0基础 | 看懂原理图Datasheet 系列1

原理图功能分类 控制部分&#xff1a;整个电路板的核心控制和计算部分&#xff08;CPU&#xff09; CPU最小系统是什么?电源时钟复位 接口部分&#xff1a;实现特定功能的部分 如Wife模块、通讯接口 电源部分&#xff1a;整个电路板的供电部分 任何电路板都是必要的&…

python-leetcode-删掉一个元素以后全为 1 的最长子数组

1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣(LeetCode) 可以使用滑动窗口的方式来解决这个问题。我们要找到最长的全 1 子数组,但必须删除一个元素,因此可以将问题转化为寻找最多包含一个 0 的最长子数组。 解题思路 使用双指针(滑动窗口),维护窗口内最多包含一…

ubuntu挂载新硬盘

在准备数据的时候出现空间不够的问题&#xff1a; 添加200G的空间&#xff0c;挂在到/home/vipuser/BEV_Depth/BEVDepth/data/nuScenes 使用lsblk查看挂载的盘 有两块硬盘 vda 和 vdb&#xff0c;其中 vda 已经用于系统安装&#xff0c;vdb 尚未分区和挂载。 1. **分区新磁盘…

Java 生成图形验证码

一、图形验证码的意义 图形验证码是一种广泛应用于互联网领域的安全验证机制&#xff0c;它通过向用户展示包含字符、数字、图形等信息的图片&#xff0c;要求用户正确识别并输入其中的内容&#xff0c;以此来区分用户是人类还是机器程序。图形验证码具有多方面重要意义&#…

Qwen/QwQ-32B 基础模型上构建agent实现ppt自动生成

关心Qwen/QwQ-32B 性能测试结果可以参考下 https://zhuanlan.zhihu.com/p/28600079208https://zhuanlan.zhihu.com/p/28600079208 官方宣传上是该模型性能比肩满血版 DeepSeek-R1&#xff08;671B&#xff09;&#xff01; 我们实现一个 使用Qwen/QwQ-32B 自动生成 PowerPoi…

ios 小组件和数据共享

创建主工程就不必讲了 1 创建小组件 创建子工程 [new Target ] 选择 [ Widger Extension] 小组件入口是WidgetBundle文件&#xff0c;可以进行多个小组件的调试 TestWidget2文件是主要操作&#xff0c;小组件使用swiftUI布局&#xff0c;使用 AppIntent进行事件处理&#xff…

C++【类和对象】(超详细!!!)

C【类和对象】 1.运算符重载2.赋值运算符重载3.日期类的实现 1.运算符重载 (1).C规定类类型运算符使用时&#xff0c;必须转换成调用运算符重载。 (2).运算符重载是具有特殊名字的函数&#xff0c;名字等于operator加需要使用的运算符&#xff0c;具有返回类型和参数列表及函数…

ExBody2: Advanced Expressive Humanoid Whole-Body Control

ExBody2: Advanced Expressive Humanoid Whole-Body Control 研究动机解决方案技术路线实验结果 ExBody2: Advanced Expressive Humanoid Whole-Body Control 研究动机 高维状态空间和复杂控制限制了人形机器人在现实世界中的应用。人形机器人和人类在身体结构上有很大不同&a…

115.不同的子序列(困难)

115.不同的子序列 力扣题目链接(opens new window) 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指&#xff0c;通过删除一些&#xff08;也可以不删除&#xff09;字符且不干扰剩余字符相对位置所组成的新字符…

【学习笔记】【AI医生】2-4 项目详细分析及DeepSeek适用场景

【DeepSeek AI 医生】2-4 项目详细分析及DeepSeek适用场景 1.1 项目流程图1.2 主流AI模型对比1.3 DeepSeek使用途径1.4 DeepSeek 适用场景 1.1 项目流程图 1.2 主流AI模型对比 1.3 DeepSeek使用途径 官网 https://chat.deepseek.com/线上Api &#xff08;目前不可以状态&#…