Linux提权系列19: [训练营]利用linux能力漏洞2

admin 2023年4月14日14:07:55评论48 views字数 1980阅读6分36秒阅读模式

在本文中,介绍另一组在传统上需要在系统中进行 DAC 权限验证的能力。例如,绕过目录的读取和执行权限和文件的只读权限。

CAP_DAC_READ_SEARCH

在本实验中,当在根目录中递归检查能力时,发现 tar 程序具有 dac_read_search

Linux提权系列19: [训练营]利用linux能力漏洞2

当任何程序在有效集中具有 cap_dac_read_search 时,这意味着它可以读取目录下任何文件和进行执行权限的操作。该程序无法在目录中创建任何文件或修改现有文件,因为它需要写权限,但这个能力不包括写权限。

Linux提权系列19: [训练营]利用linux能力漏洞2

因为在这种情况下, tar 具有此权限。虽然不能直接升级权限,但如果幸运的话,在检索/etc/shadow文件后破解哈希密码。可以通过创建简单tar来包含 /etc/shadow ,然后再将其解压缩。

Linux提权系列19: [训练营]利用linux能力漏洞2

由于在本实验中,root 用户的哈希值是flag,所以, 搞掂。

CAP_DAC_READ_SEARCH 2

这次在根目录中递归检查,发现python3.6python3.6m。区别在https://stackoverflow.com/questions/16675865/difference-between-python3-and-python3m-executables/16677339#16677339

Linux提权系列19: [训练营]利用linux能力漏洞2

在生成 ls 命令以检查 /root 目录中的文件时,执行失败,因为系统试图启动一个新进程并且它没有 cap_dac_read_search 。所以, 不能列出这些文件。

Linux提权系列19: [训练营]利用linux能力漏洞2

我生成了另一个 I/O 阻塞命令 (cat) 并从 proc 文件系统检查了它的,发现该进程由 python使用os.system 函数创建,不继承这些

Linux提权系列19: [训练营]利用linux能力漏洞2

因此,使用pythonos.listdir函数对/root目录进行枚举动作。在获得文件名,使用python内置函数open来打开,再读出第一行。

Linux提权系列19: [训练营]利用linux能力漏洞2

CAP_DAC_OVERRIDE

在这个实验,在根目录递归获取程序文件的能力时, 发现在这种情况下,vim.basic 程序在有效集合中具有 dac_override 能力

Linux提权系列19: [训练营]利用linux能力漏洞2

当程序具有 cap_dac_override 能力时,它可以绕过系统中任何文件的所有读写和执行检查。可以说是对任何文件的cap_dac_read_search + 写权限

Linux提权系列19: [训练营]利用linux能力漏洞2

由于本实验安装了 sudo 程序,这意味着可以将以下配置写入 /etc/sudoers 文件并使用 sudo su 升级到 root 用户

student ALL=(ALL:ALL) NOPASSWD: ALL

通过 vim.basic 程序打开 /etc/sudoers 文件,在文件中任意一行添加上面一行,并用 :x!命令。现在,如果使用 sudo -l 检查当前用户的 sudo 权限,会发现当前用户无需输入密码即可以 root 以用户身份执行任何命令。

Linux提权系列19: [训练营]利用linux能力漏洞2

现在需要做的就是通过 root 用户登录并读取标志文件。在 Linux 中,可以通过 sudo su - 命令执行此操作

Linux提权系列19: [训练营]利用linux能力漏洞2

CAP_DAC_OVERRIDE 2

在这个实验,在根目录递归获取程序文件的能力时, 发现在这种情况下,python 程序在有效集合中具有 dac_override 能力

Linux提权系列19: [训练营]利用linux能力漏洞2

正如在之前的讨论中所演示的,可以在导入 os 模块后使用 os.listdir() 函数列出/root 下的文件,然后以读取模式打开标志文件以获取其内容。

Linux提权系列19: [训练营]利用linux能力漏洞2

或者,可以更新 /etc/passwd 文件中的密码并通过 su 命令执行登录。由于不能从 python 生成新的文本编辑器进程,因为 python 的能力不会被新进程继承。可以以读取模式打开文件,更新root用户的内容以并再次保存文件

可以使用下面编写的代码

#!/usr/bin/python2.7

import sys

password = sys.argv[1]

contents = []
with open("/etc/passwd"as file:
    for line in file:
        if line.startswith("root"):
            contents.append(line.replace(":x:"":%s:" % password))
        else:
            contents.append(line)
    pass

with open("/etc/passwd""w"as file:
    file.writelines(contents)

print("done")

现在使用 openssl 工具创建一个密码,并将其作为第一个参数传递给漏洞利用脚本。这将更新 /etc/passwd 中的密码

Linux提权系列19: [训练营]利用linux能力漏洞2

由于现在修改了密码,可以通过su命令进行简单登录,输入openssl命令创建的密码,读取flag文件

Linux提权系列19: [训练营]利用linux能力漏洞2

请点一下右下角的“在看”,谢谢!!

暗号:070257

原文始发于微信公众号(奶牛安全):Linux提权系列19: [训练营]利用linux能力漏洞2

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月14日14:07:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux提权系列19: [训练营]利用linux能力漏洞2https://cn-sec.com/archives/1670663.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息