专栏首页ffffffff0x[ffffffff0x] Linux提权分析
原创

[ffffffff0x] Linux提权分析

前言

之前 红队视角下Linux信息收集 中提到过提权的信息收集命令,但没有细讲。本篇文章将着重于各种linux提权手段,总结提权的条件和原理。


简单总结一下,红队的常规提权手段有:

系统信息

按照上面提权的手段,梳理一下需收集的系统信息:

  • 内核和发行版信息
  • 系统信息
    • Hostname
    • 网卡信息
    • 路由信息
    • DNS信息
  • 用户信息
    • 当前用户信息
    • 最后登录用户
    • 登录到主机的用户
    • 所有用户信息
    • 密码策略
    • umask值
    • 历史记录
    • SSH配置检查
    • 环境变量
  • 启动项/任务
    • 列出所有cron任务
    • 所有可写的cron任务
    • 其他用户的cron任务
    • 活动或不活动的systemd timers
  • 进程服务
    • 列出所有建立的网络连接
    • 正在运行的程序
    • 查找并列出进程二进制文件和关联的权限
    • 列出inetd.conf / xined.conf内容和关联的二进制文件权限
    • 列出init.d二进制权限

信息的命令都可以在之前的 红队视角下Linux信息收集 一文中找到,这里不再重复,简单介绍下sudo和suid、sgid。

sudo

sudo 命令以其他身份来执行命令,预设的身份为 root。在 /etc/sudoers 中设置可执行 sudo 指令的用户。若未经授权的用户企图使用 sudo,管理员随即收到警告邮件。用户使用 sudo 时,必须先输入密码,仅有5分钟的有效期限,超过期限则必须重新输入密码。

执行原理很简单:普通用户执行命令 -> 检查 /var/db/sudo/ 目录下是否有用户时间戳 -> 检查 /etc/sudoers 配置文件,用户是否有 sudo 权限 -> 执行 sudo 命令并反回结果 -> 退出 sudo 返回普通用户 shell 环境。

配置 sudo 必须通过编辑 /etc/sudoers 文件,而且只有超级用户才可以修改它,还必须使用 visudo 编辑。之所以使用 visudo 有两个原因,一是它能够防止两个用户同时修改,同时能够进行有限的语法检查。所以,即使只有一个超级用户,也最好用 visudo 来检查一下语法。

sudo 为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo 的日志功能不是自动的,必须由管理员开启。这样来做:

touch /var/log/sudo
vi /etc/syslog.conf
local2.debug                    /var/log/sudo

重启日志守候进程,这样,sudo 就可以写日志了。

SUID

    -rwsr-xr-x
       |
      SUID 程序

当 s 出现在文件拥有者的 x 权限上时,如我们上面看到的 /usr/sbin/pppd 这个文件的权限为 -rwsr-xr--,此时就被称为 SET UID 简称 SUID.SUID 对于一个文件有什么限制和功能呢?

  • SUID 权限仅对二进制可执行文件有效
  • 执行者对于该文件具有 x 的权限
  • 本权限仅在执行该文件的过程中有效
  • 执行者将具有该文件拥有者的权限

例如普通用户用 passwd 修改自己的命令,实际上最终更改的是 /etc/passwd 文件. 此文件时用户管理配置文件,只有 root 权限才能更改.

既然是 root 用户才拥有此权限,为什么我们可以通过 passwd 命令来修改密码呢,那这就要归功于 passwd 设置了 suid 权限位了.普通用户通过执行 passwd 命令,临时拥有 root 权限,间接的修改 /etc/passwd,以达到修改自己密码的权限.

SGID

当 s 出现在目录或文件所属群的 x 权限上时,此时就称为 SET GID 简称 SGID,那 SGID 对文件和目录分部有哪些功能呢?

SGID 对目录

  • 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
  • 使用者在此目录下的群组将会变成该目录的群组
  • 若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同

SGID 对文件

  • SGID 对二进制可执行文件有效
  • 程式执行者对于该文件来说,需具备 x 的权限
  • 执行者在执行的过程中将会获得该文件群组的支援(用于改文件群组的权限)

软件信息

如上,梳理一下收集的软件信息:

  • 软件版本信息
    • sudo
    • mysql
      • udf提权
      • mof提权
    • postgres
    • apache
      • user config
      • 启用的模块
      • htpassword文件
      • www目录
  • 弱认证
    • 检查默认/弱的Postgres帐户
    • 检查默认/弱的MYSQL帐户
    • samba
    • ftp
  • 平台测试
    • 检查是否在Docker容器中
    • 检查主机是否安装了Docker
    • 检查是否在LXC容器中

软件版本信息

查看版本的命令一般都是 -V

sudo -V
mysql -V

弱认证

select User, host from mysql.user;

查询数据库用户比较简单,一般登录上去就是udf提权了,基本不会查看其他用户。

pdbedit -L
cat /etc/vsftpd/vsftpd.conf

查看ftp的配置信息,需注意是否有匿名访问权限及用户配置目录。

平台测试

测出来的大多是vm机器或者exsi机器,docker机器也占相当

dmesg | grep -i VM & grep -i virtual
dmidecode -s system-product-name
systemd-detect-virt
virt-what

总结

本文从软件和系统两个方面梳理了linux提权手段,并总结了sudo、suid和sgid的原理,具体利用手段没有涉及。


本文作者 r0fus0d

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 提权(2) windows权限分析

    lonelyvaf
  • CVE-2018-18955:较新Linux内核的提权神洞分析

    鉴于目前还没有针对这个漏洞的详细分析,原作者的advisory对新手来说也很不友好,我就写了这篇文章。

    FB客服
  • Linux提权学习

    此时http://10.22.5.70/dahuiji.php 已经取得一个webshell

    用户5807183
  • Linux提权学习

    此时http://10.22.5.70/dahuiji.php 已经取得一个webshell

    HACK学习
  • Linux提权脚本

    实际环境中会遇到过很多有shell但是权限不够的情况,那么对于我这种对内核提权的知识只存在脏牛提权的懒狗来说,最方便快捷的方式就是拿脚本来批量看当前版本的内核有...

    Elapse
  • Linux提权姿势一:滥用SUDO提权

    在渗透中,我们拿到的webshell和反弹回来的shell权限可能都不高,如果我们可以使用sudo命令访问某些程序,则我们可以使用sudo可以提权。在这里,我们...

    黑白天安全
  • Linux提权姿势二:利用NFS提权

    如果在服务器上具有低特权shell,并且发现服务器中具有NFS共享,则可以使用它来升级特权。但是成功取决于它的配置方式。

    黑白天安全
  • Linux内核本地提权漏洞预警分析(CVE-2019-8912)

    近日,Linux git中发布一个commit补丁,该补丁对应的漏洞是一个本地提权漏洞CVE-2019-8912,漏洞影响范围较广。根据git中的commit信...

    FB客服
  • 一文吃透Linux提权

    大多数计算机系统设计为可与多个用户一起使用。特权是指允许用户执行的操作。普通特权包括查看和编辑文件或修改系统文件。特权升级意味着用户获得他们无权获得的特权。这些...

    FB客服

扫码关注云+社区

领取腾讯云代金券