T1548-003-linux-CVE-2019-14287
来自ATT&CK的描述
sudoers文件/etc/sudoers
描述了哪些用户可以运行哪些命令以及从哪些终端运行。这还描述了用户可以作为其他用户或组运行的命令。这提供了最小特权的概念,使得用户在大多数时间以最低可能的权限运行,并且仅在需要时提升到其他用户或权限,通常通过提示输入密码。但是,sudoers文件还可以指定何时不提示用户输入类似user1 ALL=(ALL) NOPASSWD: ALL
[1]的行的密码。
攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。
测试案例
CVE-2019-14287_
如果将sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,那么攻击者将有可能通过制定用户ID -1或4294967295来以root权限执行恶意命令。
当sudo被配置为 【允许用户基于Runas规范中定义的ALL关键字,以任意用户身份执行命令】时,可以通过指定特定的用户id(如-1或者4294967295)以root身份运行命令,尽管Runas规范中明确规范了禁止root访问,但只要Runas规范中优先出现了ALL关键字,具有足够sudo特权的用户就可以使用此命令以root身份运行命令
以这种方式运行的命令,日志会把用户id记录为4294967295,而非root。此外,PAM会话不会干预此命令的执行。
#Runas规范:指sudo配置文件(一般为/etc/sudoers) 中定义的用户执行权限规则
#PAM(可插入身份验证模块):PAM将程序开发与认证方式进行分离,程序在运行时调用附加的“认证”模块完成自己的工作。本地系统管理员通过配置选择要使用某种认证模块。
影响版本:sudo 1.8.28 以下版本
检测日志
linux auth.log日志,无需刻意配置。
模拟环境:ubuntu 19.04
测试复现
步骤如下:
1、创建普通用户账户;
2、切换root权限,修改/etc/sudoers 配置文件写入如下规则
abc ALL = (ALL, !root) /usr/bin/vi
3、值得注意的是:你需要修改/etc/sudoers的读写权限,否则你无法对此文件进行写入。同时,在写入完成之后,你需要修改此文件的权限为只读
chmod u+w /etc/sudoers (修改权限,默认只读)
chmod u-w /etc/sudoers (只读权限,很重要)
4、测试:执行sudo vi 无权限
执行sudo -u#-1 vi 突破限制成功以root身份执行
测试留痕
Oct 18 11:09:54 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#-1 ; COMMAND=/usr/bin/id
Oct 18 11:11:59 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#4294967295 ; COMMAND=/usr/bin/id
检测规则/思路
sigma规则
title: CVE-2019-14287 sudo 配置不当-权限提升
description: Ubuntu19.04 x64测试结果(当sudo配置为允许用户通过Runas规范中的ALL关键字以任意用户身份运行命令时,可以按通过指定用户ID-1或4294967295成为root用户。具有足够sudo特权的用户可以使用它来以root身份运行命令,即使Runas规范明确禁止root用户访问,只要在Runas规范
条件中首先列出ALL关键字即可)
references: https://sysdig.com/blog/detecting-cve-2019-14287/
tags: T1548-003
status: experimental
author: Blue team
logsource:
product: linux
detection:
selection:
proc.name: 'sudo:'
proc.USER:
- '#-1'
- '#4294967295'
condition: selection
level: medium
建议
暂无
缓解措施
目前主要影响以下版本:
sudo -V < 1.8.28
升级sudo版本至1.8.28以上
参考推荐
MITRE-ATT&CK-T1548-003
https://attack.mitre.org/techniques/T1548/003/
检测CVE-2019-14287