前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[ffffffff0x] Linux提权分析

[ffffffff0x] Linux提权分析

原创
作者头像
r0fus0d
修改2020-12-28 11:47:43
3K0
修改2020-12-28 11:47:43
举报
文章被收录于专栏:ffffffff0xffffffff0x

前言

之前 红队视角下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 的日志功能不是自动的,必须由管理员开启。这样来做:

代码语言:txt
复制
touch /var/log/sudo
vi /etc/syslog.conf
local2.debug                    /var/log/sudo

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

SUID

代码语言:txt
复制
    -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

代码语言:txt
复制
sudo -V
mysql -V

弱认证

代码语言:txt
复制
select User, host from mysql.user;

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

代码语言:txt
复制
pdbedit -L
代码语言:txt
复制
cat /etc/vsftpd/vsftpd.conf

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

平台测试

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

代码语言:txt
复制
dmesg | grep -i VM & grep -i virtual
代码语言:txt
复制
dmidecode -s system-product-name
代码语言:txt
复制
systemd-detect-virt
virt-what

总结

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


本文作者 r0fus0d

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 系统信息
    • sudo
      • SUID
        • SGID
        • 软件信息
          • 软件版本信息
            • 弱认证
              • 平台测试
              • 总结
              相关产品与服务
              网站渗透测试
              网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档