Linux提权(easy)

横向提权(Horizontal privilege escalation)和纵向提权(Vertical privilege escalation

  • 横向提权:横向提权是指攻击者通过利用目标系统上已存在的漏洞或弱点,以及使用被盗的凭证如用户名和密码,获得访问另一个用户或进程权限的方法,从而转移到同一层级中的其他系统或服务。攻击者通过横向移动和访问其他系统,以获取更多的数据或执行其他攻击。
  • 纵向提权:纵向提权是指攻击者尝试利用漏洞或弱点来提高其在目标系统中的权限级别,以便访问更敏感的信息或系统功能。攻击者通常会从低权限的帐户开始攻击,然后利用漏洞或弱点跳到高权限的帐户,最终获取完全控制的权限。
    2023-05-08T16:32:20.png

一个bash脚本:https://github.com/rebootuser/LinEnum/blob/master/LinEnum.sh

LinEnum 是一个简单的 bash 脚本,它执行与权限提升相关的常见命令

对于LinEnum的扫描结果,需要重点关注以下地方

*Kernel* :内核信息;

*Can we read/write sensitive files*:全局可写文件。任何经过身份验证的用户都可以读取和写入这些文件。通过查看这些敏感文件的权限,我们可以确定是否存在配置错误,允许那些通常不被允许的用户写入敏感文件。”

*SUID Files:*显示SUID文件的路径。(可能可以用这个提权)

*Crontab Contents:列出定时任务。

可能存在危险的SUID/GUID文件

查找可以利用的SUID文件

学习过Linux基础知识可以了解到Linux系统中,一切皆是文件,且都有权限,可以通过ls -l来查看。通常我们比较熟悉的有读(4)/写(2)/执行(1),即rwx,最大的权限为rwx-rwx-rwx,依次为用户-组-其他

如果对文件进行特殊的赋权,比如chmod u+s file(SUID)或chmod g+s file(SGID),就会生成一种具有特殊权限的文件。

SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主

查找suid文件,可以通过LinEnum.sh自动扫描,也可以手动查找

file / -perm -u=s -type f 2>/dev/null
-perm  搜索具有特定权限的文件
-u=s  为文件设置任何权限位模式
-type f 只搜索文件

这类文件可能存在提权的可能,直接运行即可。

可写入的 /etc/passwd

使用LinEnum.sh自动化扫描。

如果发现/etc/passwd可写入,则可利用这个漏洞来常见具有root权限的新用户

先了解一下 /etc/passwd 的格式

name:x:0:0:root:/root:/bin/bash
依次是:username:password:UID:GID:user-id-info:家目录:shell

具体流程:

  1. 先创建一个密码哈希 openssl passwd -1 -salt [salt] [password]

    openssl passwd -1 -salt new 123
    $1$new$p7ptkEKU1HnaHpRtzNizS1
  2. 将输出的哈希添加到/etc/passwd的最后

    echo "\$1\$new\$p7ptkEKU1HnaHpRtzNizS1" >> /etc/passwd
    如果有问题,就检查一下是否转义了(单引号似乎不需要,或者直接使用编辑器)
  3. 使用创建的用户去登录(账号:new,密码:123)

利用某些版本的sudo的漏洞

Sudo 堆缓冲区溢出致本地提权漏洞(CVE-2021-3156)

影响版本:

Sudo 1.8.2 – 1.8.31p2

Sudo 1.9.0 – 1.9.5p1

sudo -l

2023-05-08T16:32:40.png

如果没有密码,可以直接利用 sudo

sudo vi
进入到vi里后
:!sh 回车,就是提升权限为root了

利用crontab定时任务

也就是把shell写到定时任务中去。

利用PATH变量

PATH 是 Linux 和类 Unix 操作系统中的一个环境变量,它指定保存可执行程序的目录。当用户在终端中运行任何命令时,它会在 PATH 变量的帮助下搜索可执行文件以响应用户执行的命令。

在tryhackme的房间的Task10的提权方法中。

大致的原理和suid提权差不多,应用了运行suid权限的文件的进程不属于运行者,而是属于文件的所有者

在房间中,大致的操作流程:

  1. 运行./script发现其执行的指令是ls
  2. tmp目录下(因为这个文件夹都有写权限)对ls进行重写

    echo "/bin/bash" > ls
  3. 修改$PATH

    export PATH=/tmp:$PATH

    之后再运行ls执行的就是该处的ls了,除非指定路径为/bin/ls

  4. 回到家目录下再运行./script,即可提权

    迷惑点记录一下(知识点,划重点)

    由前面我们可以知道,suid文件的权限特殊,如果有用户运行suid文件,那么它的进程不属于执行的用户,而是属于该文件的拥有者。在这个task中,script中执行的是ls,默认的ls被修改成了bash,而且文件的拥有者是root,也就是以root的身份运行了/bin/bash,进而达到提权。这真的是泰裤辣

Last modification:May 9, 2023
请我喝瓶冰阔落吧