Skip to content

Latest commit

 

History

History
183 lines (89 loc) · 5.02 KB

[漏洞推送]-2021-9-8-红蓝对抗中的suid.md

File metadata and controls

183 lines (89 loc) · 5.02 KB

红蓝对抗中的suid

原创 kkk mr 漏洞推送

漏洞推送

微信号 gh_d45bcadf18d7

功能介绍 专注于安全漏洞、威胁情报发掘。


__

收录于话题 #红蓝对抗 ,5个

1.前言

这几天在写一个mac下的golang的小程序,需要用到root权限,但是sudo的话每次都输入密码,配置免密的话,又比较麻烦。

于是想到了suid,这个第一次接触还是在提权的文章中看到过。

2.suid介绍

我们都知道,在执行某个程序时,默认情况下用户发起一个进程,进程的属主是进程的发起者,也就是说这个进程是以发起者的身份运行。

用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。

一句话讲清楚,就是一个程序,属于root用户,并且具有suid权限位。那么就算普通用户执行的时候,这个程序运行的时候拥有的是root权限的。

suid最常见的应用场景就是ping,我们最用的ping就是一个suid的程序。

3.suid程序实现

给程序设置suid很简单,先chown root file把文件权限给root,通过命令chmod u+s fille加上suid权限即可。

但是网上的文章都有一个坑,文章里面举得实验的例子都是系统自带的命令,比如cat等等。

但是自己如果是开发的程序的想加上suid权限,以C语言为例


//#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>  
int main(int argc, char *argv[]){    return system("whoami");}

并没有继承到root权限,系统对system函数进行了限制。需要在程序中显式设置suid,才能正常继承权限

但是在golang开发的程序中,也显式设置。


package main  
import (    "io/ioutil"    "log"    "os/exec"    "syscall")  
func main() {    syscall.Setuid(0)    syscall.Setgid(0)    println(CmdRun(exec.Command("bash", "-c", "whoami")))}  
func CmdRun(cmd *exec.Cmd) string {    // 获取输出对象,可以从该对象中读取输出结果    stdout, err := cmd.StdoutPipe()    if err != nil {        log.Fatal(err)    }    // 保证关闭输出流    defer stdout.Close()    // 运行命令    if err := cmd.Start(); err != nil {        log.Fatal(err)    }    // 读取输出结果    opBytes, err := ioutil.ReadAll(stdout)    if err != nil {        log.Fatal(err)    }    return string(opBytes)}  

4.suid的适用场景

1.适用自己开发的程序,但是不想每次都配置免密的时候。

2.提权,如果管理员错误配置了一些系统命令,如bash,namp等等的suid权限,就可以通过这些程序直接获取到root权限

已经可用于提权的


nmapvimfindbashmorelessnanocp

查找suid权限文件


#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试find / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000-print2>/dev/nullfind / -user root -perm -4000-exec ls -ldb {} \;

3.在已有root权限的情况下,留一个suid的后门,用作权限维持。

kkk mr

赞赏二维码 微信扫一扫赞赏作者 赞赏

已喜欢,对作者说句悄悄话

取消 __

发送给作者

发送

最多40字,当前共字

人赞赏

上一页 1/3 下一页

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

预览时标签不可点

收录于话题 #

个 __

上一篇 下一篇

阅读

分享 收藏

赞 在看

____已同步到看一看写下你的想法

前往“发现”-“看一看”浏览“朋友在看”

示意图

前往看一看

看一看入口已关闭

在“设置”-“通用”-“发现页管理”打开“看一看”入口

我知道了

__

已发送

取消 __

发送到看一看

发送

红蓝对抗中的suid

最多200字,当前共字

__

发送中

微信扫一扫
关注该公众号

知道了

微信扫一扫
使用小程序


取消 允许


取消 允许

: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看