Linux提权(easy)
横向提权(Horizontal privilege escalation)和纵向提权(Vertical privilege escalation)
- 横向提权:横向提权是指攻击者通过利用目标系统上已存在的漏洞或弱点,以及使用被盗的凭证如用户名和密码,获得访问另一个用户或进程权限的方法,从而转移到同一层级中的其他系统或服务。攻击者通过横向移动和访问其他系统,以获取更多的数据或执行其他攻击。
- 纵向提权:纵向提权是指攻击者尝试利用漏洞或弱点来提高其在目标系统中的权限级别,以便访问更敏感的信息或系统功能。攻击者通常会从低权限的帐户开始攻击,然后利用漏洞或弱点跳到高权限的帐户,最终获取完全控制的权限。
一个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
具体流程:
先创建一个密码哈希
openssl passwd -1 -salt [salt] [password]
openssl passwd -1 -salt new 123 $1$new$p7ptkEKU1HnaHpRtzNizS1
将输出的哈希添加到
/etc/passwd
的最后echo "\$1\$new\$p7ptkEKU1HnaHpRtzNizS1" >> /etc/passwd 如果有问题,就检查一下是否转义了(单引号似乎不需要,或者直接使用编辑器)
- 使用创建的用户去登录(账号:new,密码:123)
利用某些版本的sudo的漏洞
Sudo 堆缓冲区溢出致本地提权漏洞(CVE-2021-3156)
影响版本:
Sudo 1.8.2 – 1.8.31p2
Sudo 1.9.0 – 1.9.5p1
sudo -l
如果没有密码,可以直接利用 sudo
sudo vi
进入到vi里后
:!sh 回车,就是提升权限为root了
利用crontab定时任务
也就是把shell写到定时任务中去。
利用PATH变量
PATH 是 Linux 和类 Unix 操作系统中的一个环境变量,它指定保存可执行程序的目录。当用户在终端中运行任何命令时,它会在 PATH 变量的帮助下搜索可执行文件以响应用户执行的命令。
在tryhackme的房间的Task10的提权方法中。
大致的原理和suid提权差不多,应用了运行suid权限的文件的进程不属于运行者,而是属于文件的所有者。
在房间中,大致的操作流程:
- 运行
./script
发现其执行的指令是ls
到
tmp
目录下(因为这个文件夹都有写权限)对ls
进行重写echo "/bin/bash" > ls
修改
$PATH
export PATH=/tmp:$PATH
之后再运行
ls
执行的就是该处的ls了,除非指定路径为/bin/ls
回到家目录下再运行
./script
,即可提权迷惑点记录一下(知识点,划重点)
由前面我们可以知道,suid文件的权限特殊,如果有用户运行suid文件,那么它的进程不属于执行的用户,而是属于该文件的拥有者。在这个task中,
script
中执行的是ls
,默认的ls
被修改成了bash
,而且文件的拥有者是root,也就是以root的身份运行了/bin/bash
,进而达到提权。这真的是泰裤辣。