查看本系列的第一部分《Linux权限提升(基础到高级)0x1》和第二部分《Linux权限提升(基础到高级)0x2》。
在本系列的这一部分中,我将介绍另外 3 种技术,格式与上一部分相同。首先是一些理论,然后是 Linux 系统上的实践。
07 NFS
理论
NFS 允许系统通过网络与其他系统共享目录和文件。通过使用 NFS,用户和程序可以访问远程系统上的文件,就像访问本地文件一样。
利用NFS方法提权很简单;
1. 检查 NFS 的配置文件(如果目标安装了 NFS,则位于 /etc/nfs)。
2. 查看具有“no_root_squash”属性的目录。
3. 在本地系统中挂载该易受攻击的(no_root_squash)NFS 目录。
4. 创建您的有效负载并设置该有效负载的写入和执行权限(使用本地系统上的 root 权限执行此操作)。
5. 所有这些操作都将在您的目标系统 NFS 目录中同步,因此只需从那里触发有效负载即可。
root_squash 是使用身份认证时远程超级用户(root)身份的特殊映射(本地用户与远程用户相同)。在 root_squash 下,客户端的 uid 0(root)被映射到 65534(nobody)。
root_squash 是一种避免通过 suid 可执行文件 Setuid 在客户端计算机上进行权限提升的技术。如果没有 root_squash,攻击者就可以在服务器上生成 suid 二进制文件,并在其他客户端上以 root 身份执行,即使客户端用户没有超级用户权限也是如此。因此,它可以保护客户端计算机免受其他恶意客户端的侵害。
实践
在您的机器上(攻击者端)执行如下命令,挂载目标 nfs 共享。
08 环境变量
理论
环境变量允许您自定义系统的工作方式以及系统上应用程序的行为。例如,环境变量可以存储有关默认文本编辑器或浏览器、可执行文件的路径或系统区域设置和键盘布局设置的信息。
利用环境变量方法提权很简单;
1. 检查 LD_PRELOAD(使用 env_keep 选项)
2. 编写一个编译为共享对象 (.so) 的有效负载
3. 用指向我们 so 文件的LD_PRELOAD运行程序
LD_PRELOAD 是一个允许任何程序使用共享库的函数。如果启用“env_keep”选项,我们可以生成一个共享库,该库将在程序运行之前加载并执行。请注意,如果真实用户 ID 与有效用户 ID 不同,LD_PRELOAD 选项将被忽略。
实践
检查系统是否设置了 LD_PRELOAD 环境变量。(大多数 Linux 发行版默认启用此功能)
09 通配符
理论
对于 GNU/Linux 系统和各种其他用途,通配符在很多方面都很有用。命令可以使用通配符一次对多个文件执行操作,或在文本文件中查找短语的一部分。通配符有很多用途,通配符的使用有两种不同的主要方式,它们是 shell 经常使用的通配符模式/标准通配符。另一种选择是正则表达式,它在许多其他命令中都很流行,并且常用于文本搜索和操作。
了解更多通配符及其行为的基础知识,可访问如下链接。
https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm
利用通配符方法提权很简单;
1. 检查任何脚本中是否使用了通配符。
2. 在此处搜索与通配符一起使用命令的通配符操作技巧。
https://gtfobins.github.io/
3. 利用并获得该脚本的所有者访问权限。
实践
在上面的计划任务脚本 (compress.sh) 中,tar 程序使用了 * 通配符,并且它以 root 权限每 1 分钟运行一次。
脚本内容:脚本将其工作目录更改为“用户”主目录,然后创建“用户”主目录中可用的所有文件/目录(*)的 tar 存档并将其保存到 /tmp/backup 目录中。)
我们知道 tar 有内置选项,可以让我们执行操作。详情查看如下页面。
https://www.manpagez.com/info/tar/tar-1.24/tar_47.php
让我们创建一个简单的反向 shell 脚本。
接下来创建一个文件(其名称将是 tar 内置选项 - checkpoint-action:它允许我们执行脚本或某些操作。)
tar 再次运行后,它将触发 shell.elf ,同事我们得到目标 shell。
参考及来源:
https://infosecwriteups.com/privileges-escalation-techniques-basic-to-advanced-in-linux-3220bc8b6914
免责&版权声明
原文始发于微信公众号(安全小白团):Linux权限提升(基础到高级)0x3
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论