Page cover

提权

Linux提权

linux提权信息收集

监控没有root权限的linux进程

Not found

操作系统及内核的发行版本、详细信息

  • linux内核提权 uname -a 查看内核版本,针对内核版本去找已知漏洞。

  • 发现SUID权限上的配置错误 find / -perm /4000 其中 4000代表SUID权限文件

  • sudo -i 配置上的漏洞

  • sudo -l 查看权限配分

  • 如果都无效需要寻找新的出路,在目标系统上进行大量的信息搜集

  • 如果可以免密或者其他方式使用sudo权限的系统指令,则尝试使用GTFOBins提权

  • lsb_release -a 显示发行版本信息

  • sudo --version 查看sudo版本

  • crontab -i 查看计划任务

  • 如果普通账户有mysql的(root)NOPASSWD权限,进入mysql,输入\! bash 即可提权

系统信息

  • 主机名

  • 网络信息:网卡信息、IP信息、DNS信息

  • 默认路由信息

用户信息

  • 当前用户详细信息

  • 登录到该主机的用户信息

  • 所有用户的信息(包括UID/GID信息)

特殊权限信息

  • /etc/sudoers文件是否可读

  • 当前用户是否拥有sudo权限

  • 是否存在使用sudo可以调用的二进制程序

  • 所有用户的home目录是否可以访问

环境信息

  • 当前的$PATH信息

  • 环境变量env信息

进程/任务信息

  • 进程列表信息

  • 计划任务信息 /etc/crontab 任务日志cronlog

  • 系统计时器信息

服务信息

  • 当前网络连接信息(TCP & UDP)

  • 当前开启的服务器信息(init.d)

常用第三方程序信息(包括但不限于)

  • sudo

  • Mysql

  • Postgres

  • Apache

  • Docker

文件/程序信息

  • 所有的SUID/GUID程序信息

  • 所有的具有POSIX capabilities程序信息

  • 所有的可写文件信息

  • 在可读文件中搜索关键字password信息

LinPEAS自动化提权信息挖掘

LinPEAS 是一个脚本,用于搜索在 Linux/Unix*/MacOS 主机上提升权限的可能路径。这些检查在[book.hacktricks.xyz上进行了解释](https://book.hacktricks.xyz/linux-hardening/privilege-escalation)

linpeas.sh

基本信息

此脚本的目标是搜索可能的权限提升路径(在 Debian、CentOS、FreeBSD、OpenBSD 和 MacOS 中测试)。

这个脚本没有任何依赖。

它使用**/bin/sh**语法,因此可以在任何支持sh(以及使用的二进制文件和参数)中运行。

默认情况下,linpeas 不会向磁盘写入任何内容,也不会尝试以任何其他用户身份使用su.

默认情况下 linpeas 大约需要4 分钟才能完成,但使用**-a参数执行所有检查可能需要5 到 10 分钟***(CTF 的推荐选项)*:

  • 从不到 1 分钟到 2 分钟完成几乎所有检查

  • 在系统的所有可访问文件中搜索可能的密码几乎需要 1 分钟

  • 20s/user bruteforce with top2000 密码*(需要*-*a)-* 请注意,此检查非常嘈杂

  • 1 分钟监控进程以查找非常频繁的 cron 作业*(需要-a)* - 请注意,此检查需要在将被删除的文件中写入一些信息

有趣的参数:

-a(除正则表达式外的所有检查)- 这还将在 1 分钟内执行进程检查,将在文件中搜索更多可能的哈希值,并暴力破解每个用户使用sutop2000 密码。

-e (额外的枚举) - 这将执行默认避免的枚举检查

-r(正则表达式检查)——这将在 silesystem 中搜索数百个不同平台的 API 密钥

-s(超快和隐身) - 这将绕过一些耗时的检查 -隐身模式(不会将任何内容写入磁盘)

-P(密码) - 传递一个密码,该密码将与其他用户一起使用sudo -l并暴力破解其他用户

-D(调试)- 打印有关未发现任何内容的检查以及每次检查所用时间的信息

-d/-p/-i/-t(本地网络枚举)-Linpeas 还可以发现和端口扫描本地网络

该脚本中包含多个列表,以便能够为结果着色以突出显示 PE 矢量。

快速开始

在发布页面中找到所有脚本和二进制文件的最新版本

固件分析

如果你有一个固件并且你想用 linpeas 分析它搜索密码或错误的配置权限,你有 2 个主要选项。

  • 如果您可以模拟固件,只需在其中运行 linpeas:

  • 如果您无法模拟固件,请使用f </path/to/folder参数:

AV Bypass(旁路)

主机发现和端口扫描

使用LinPEAS,您还可以使用 and/or 自动发现主机fping,并使用.pingncnc

LinPEAS 将自动在其中搜索此二进制文件$PATH并让您知道它们是否可用。在这种情况下,您可以使用 LinPEAS 来托管 dicovery and/or 端口扫描。

输出结果颜色使用

LinPEAS 使用颜色来指示每个部分的开始位置。但它也使用它们来识别潜在的错误配置

红色**/黄色**用于识别导致 PE 的配置(99% 肯定)

红色用于识别可能导致 PE 的可疑配置:

  • 可能的可利用内核版本

  • 易受攻击的 sudo 版本

  • 识别以 root 身份运行的进程

  • 未安装的设备

  • 危险的 fstab 权限

  • 有趣目录中的可写文件

  • 具有某些易受攻击版本的 SUID/SGID 二进制文件(它还指定易受攻击的版本)

  • 可用于在 sudo -l(无密码)中提升权限的 SUDO 二进制文件(https://gtfobins.github.io/

  • 检查 /etc/doas.conf

  • 网络统计中的 127.0.0.1

  • 可能包含密码的已知文件

  • 有趣的二进制文件中的功能

  • 二进制文件的有趣功能

  • 有关 cron 作业的信息中的可写文件夹和通配符

  • PATH 中的可写文件夹

  • 可能导致root的组

  • 可能包含密码的文件

  • 可疑的 cronjobs

绿色用于

  • 由 root 运行的常用进程

  • 安装常见的不感兴趣的设备

  • 不危险的 fstab 权限

  • SUID/SGID 通用二进制文件(该 bin 已在其他机器中找到,并且 searchsploit 未识别任何易受攻击的版本)

  • 路径中的常见 .sh 文件

  • 执行进程的用户的通用名称

  • 常见的 cronjobs

蓝色用于:

  • 没有外壳的用户

  • 安装设备

浅青色用于:

  • 有壳的用户

浅洋红色用于:

  • 当前用户名

脚本解析器

这些脚本允许您将 linpeas/macpeas/winpeas 的输出转换为 JSON,然后转换为 PDF 和 HTML。

JSON 格式

基本上,每个部分都有

  • 信息(有关该部分的 URL 或信息)

  • 文本行(该部分中的真实文本信息,包括颜色)

  • 更多部分

最多有3 个级别的部分

Capabilities提权

Capabilities是linux内核的一个功能 Linux2.2引入进来,功能为权限管理

capabilities(7) - Linux manual page

利用Capability实现权限提升

查找设置了capabilities可执行文件

5.10 openssl

service命令提权

https://gtfobins.github.io/gtfobins/service/

service | GTFOBins

ShellShock提权

ShellShock || BashDoor || 破壳漏洞 漏洞范围 Bash < 4.3 要目标服务器开放着与Bash相交互的应用与服务,就有可能成功触发漏洞,获取目标系统当前Bash运行用户相同权限的shell接口

漏洞信息

漏洞利用

方法一 - 提权

前提条件:必须同时存在任意文件访问漏洞

回到目标靶机查看sudo权限

方法二 - 拿shell

在kali中开启监听本地端口接收反弹回来的shell

打开另一个终端制造访问请求,利用shellshock漏洞,同时建立读写交互文件

以上两步运行过后,在第一个终端将会显示目标机的交互shell:

脏牛提权

💡 CVE-2016-5195脏牛利用代码

漏洞范围:Linux内核 >= 2.6.38(or 22?)(2007年发行,到2016年10月18日才修复)

由于从2.6.38内核后才开始支持THP,所以漏洞影响所有内核在2.6.38以上并且开启THP的Linux系统。

该漏洞利用dirtycow(脏牛)漏洞的pokemon(口袋妖怪)漏洞利用作为基础,自动生成新的passwd行。运行二进制文件时,将提示用户输入新密码。然后将原始 /etc/passwd 文件备份到 /tmp/passwd.bak 并用生成的行覆盖 root 帐户。运行漏洞利用后,您应该能够使用新创建的用户登录。

要使用此漏洞利用,请根据您的需要修改用户值。

创建的默认用户是firefart

利用代码:

💡 [使用方法](https://github.com/FireFart/dirtycow)

编译:(在目标服务器上运行此exp)

然后通过执行以下任一操作运行新创建的二进制文件:

或者

使用

之后,您可以su firefartssh firefart@...

运行漏洞利用后不要忘记恢复您的 /etc/passwd

恢复/etc/passwd之后,root账户重新恢复,命令行输入passwd重设root密码,则下一次可以不用触发脏牛漏洞,直接使用root账户登录即可

堆溢出提权

Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27), and Fedora 33 (Sudo 1.9.2)可利用此提权漏洞

启动MSF,搜索CVE-2021-3156

也可以使用手动的方式下载payload脚本,上传至目标端在目标端执行exp

CVE-2021-3156/exploit_nss.py at main · worawit/CVE-2021-3156

MOTD提权

motd(message of the day )用户登录系统时弹出的欢迎信息,默认是放在/etc/update-motd.d/的shell脚本。这些脚本文件就是当用户登录时就能以root用户身份执行一段代码。故尝试修改其中某个脚本,当每次登录系统就把root用户密码修改为一个已知的密码

例:/etc/update-motd.d 中的文件脚本普通用户都可执行和修改

重新连接普通账号,当跳出登录欢迎代码时代表payload已经运行,此时切换root账户

Ubuntu-CVE提权

CVE-2021-3493提权

CVE-2021-3493漏洞介绍

CVE-2015-1328提权

💡 CVE-2015-1328漏洞介绍

💡 EXP利用代码

SUID提权

💡 在目标机器上搜索过滤出文件属主为`root` 并且其他用户有`写`权限的文件

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662801550787-535b36eb-bb79-4f03-9dd7-5202eb8c142d.png

💡 通过过滤搜索查找到存在该文件后,可以对文件进行分析研究,如查看文件类型

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662801580185-a2834bc4-e839-409a-a785-87a070a30fea.png

💡 通过分析研究查看文件内容,得知脚本内容就是获取系统时间,可能是某些系统服务在使用该脚本

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662801648724-0ebb539d-b53d-4257-8f25-b66c327228d7.png

etc目录查找引用了check-system.service文件的文件

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662801984533-fea16cc6-fd2f-4e8f-ad2c-06e13ffb8f35.png

根据查找出文件的结果分析,check-system.service是在操作系统启动时会用/bin/bash运行/usr/bin/check-system脚本。如果我们在/usr/bin/check-system脚本中加入反弹shell的代码,并执行重启,那么在系统启动后就能获得root用户反弹的shell。

修改/usr/bin/check-system

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662802413093-cafcc476-5df7-4546-a867-2f38a901cd95.png

查询重启权限,具备shutdown权限

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662802524288-8d8e1678-3be3-4243-a5d2-e116e3d03b45.png

Kali本地监听4444端口

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662802592064-fdeee3e2-877f-4213-b93e-11455f8a3235.png

执行重启操作

稍等片刻root用户shell已收到

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662802702750-3ab59573-5638-49d9-8a4c-aad79112e32b.png

获取flag

https://cdn.nlark.com/yuque/0/2022/png/12680551/1662802745362-f222b71f-868e-485c-a1a2-114d67ed2194.png

💡 这是通过过滤搜索查找到对应SUID文件的权限分配进行垂直提权的某一个例子。供参考

Docker 提权

我们必须是系统的 Docker Group 的一部分。 作为该组的一员,我们可以创建新的 Docker 容器并进行部署。

第 1 步:检查组

groups 或者 id 命令检查我们是否是 docker 组的一部分。

第 2 步:运行一个新的 docker 容器

创建并运行一个 docker 容器。id 命令检查是否是root用户

Windows提权

当通过msf拿到windows shell的session会话时,可使用此模块对windows进行漏洞探测

最后更新于

这有帮助吗?