linux常见提权方式总结
前言
提权是渗透测试中重要的一步,我们通常使用各种内核漏洞的cve来进行提权,但是在本文中博主想介绍一些,由于人为配置不当造成的提权方法,开阔提权时的思路。
1. crontab定时任务提权
crontab是cron table的简写,它是cron的配置文件,而cron是linux内置管理定时任务的进程。
我们可以通过如下指令来编辑和查看当前工作表命令
1 |
|
更多的crontab操作可以参考教程 https://www.runoob.com/w3cnote/linux-crontab-tasks.html
1.1 root权限定时任务脚本普通用户可写
以root权限执行的定时任务或其所在文件夹,低权限用户拥有写权限,则可进行提权。
示例:
切换到root用户,输入crontab -e,添加一个一分钟执行一次的shell脚本,然后赋予此脚本执行权限和其他用户可写权限。
1 |
|
开启其他shell,切换到普通用户,修改脚本内容为重置root密码,或者添加此普通用户权限等操作。
1 |
|
然后su root使用更改后密码切换至root
如果文件不可写而文件夹可写的情况,如下图情况,可以删除到整个路径,然后重新由普通用户创建路径和其中脚本,就变成可写的情况了。
1.2 root权限定时任务调用的脚本普通用户可写
很多时候,定时任务并不是孤立存在的,它会去调用很多别的shell脚本来完成一些操作,而root权限的定时任务调用的脚本也会以root权限执行,所以我们仍需要关注其调用的其他脚本是否普通用户可写,如果可写,仍然可以提权。
查询此类脚本的方法是首先找到root的定时任务 xxx.sh,然后在文件种查找其他shell脚本即可
1 |
|
2. sudo脚本提权
sudo脚本提权,主要和/etc/sudoers配置文件有关,主要由以下三种配置引起:
1.在sudoers文件中配置的脚本在运行时默认以root权限执行
2.在sudoers文件中配置的文件夹,内部所有脚本默认以root权限执行
3.在sudoers文件中配置的系统命令,默认以root权限执行
而这三种配置就引出了三种提权方式,在这里作者分别配置了,/home/test/sudotest.sh文件,/home/test/sudo文件夹,以及zip,tar,more三个命令,分别对应了上述三种情况
2.1 sudoers文件中配置的脚本文件
/etc/sudoers中配置的sudo脚本文件低权限用户是否具有写权限,具有写权限,则可进行sudo提权。
使用如下命令即可复现
1 |
|
2.2 sudoers文件中配置的文件夹
/etc/sudoers中配置的sudo文件夹低权限用户是否具有写权限,具有写权限,则可进行sudo提权。
在之前的配置中我们可以看到,在/home/test/sudo这个test用户可控目录以test随意创建脚本使用sudo执行均是免root密码的。
使用如下命令即可复现
1 |
|
2.3 使用系统命令sudo提权
如vi,more,less,tar,zip,awk,git,find等命令,如在/etc/sudoers中配置,即存在sudo提权
vi,more,less的命令sudo提权方式都是使用对应命令sudo打开一个文件
1 |
|
然后在打开界面输入!/bin/bash,即可获得root权限的shell
zip命令
1 |
|
awk命令
1 |
|
git命令
1 |
|
find命令
1 |
|
3. 环境变量提权
3.1 具有S权限位的脚本
Linux中通过设置suid,可以让程序的执行者临时拥有属主的权限,可以使用下面的命令查找具有suid的脚本
1 |
|
然后具有s权限位的这些脚本中如果存在可控环境变量。如脚本中存在调用ps程序,我们可以在低权限用户可写目录中写一个ps文件,内容为/bin/bash,然后将此目录添加到环境变量最优先寻找的目录,再执行脚本,脚本就会以root权限触发/bin/bash,就产生了一个root权限的shell,完成提权。
1 |
|
3.2 root的环境变量设置了用户可控目录
root的$PATH若设置了用户可控的目录,用户可以在此可控目录写入一些命令并诱导root用户输入,在这些文件中填充修改root密码的命令或给其他用户添加权限等命令,然后当root用户被诱导输入一些环境变量中配置的指令时就会执行这些命令。通常会配置一些容易输错的单词,并在后面加入返回命令不存在的提示。
如文件名设置为whomai,与正常的命令whoami颠倒了一点顺序,有时手快会输入错误。
然后在whoami中配置
1 |
|
当然我们可以配置非常多的文件名来增加触发概率。
3.3 su切换而不是su -切换导致携带用户环境变量
linux系统在使用su切换时,会携带当前用户的环境变量,使用su -则不会,如果在当前用户环境变量设置如下
1 |
|
编辑一个ps文件
1 |
|
那么在从此用户切换到root的管理员,在使用ps时就会修改掉root用户密码。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!