|
Linux提权
紧接本章本文主要介绍Linux常用的提权方法,包括系统内核漏洞提权、错误的配置提权、常见的软件漏洞提权。
3.2 CVE-2021-3156(Sudo)提权 |
漏洞信息
混子Hacker
01
1.1 脏牛CVE-2016-5195(Dirty COW)提权
漏洞成因在于Linux内核中写时复制(Copy-On-Write)。当多个进程共享同一个物理页面时,如果其中一个进程尝试修改该页面,内核会创建该页面的一个私有副本,而不是直接修改原始页面。
get_user_pages()(GUP)函数用于获取用户态的物理页面,并在某些情况下忽略了写保护。
由于竞争条件,攻击者可以在 GUP 期间让 madvise() 系统调用使得原本只读的页面变为可写。
最终,攻击者可以在不拥有写权限的情况下修改受保护的文件(如 /etc/passwd),从而提升权限。
影响范围:linux kernel 2.6.22 < 3.9
下载EXP:https://github.com/gbonacini/CVE-2016-5195
编译cpp文件
运行编译后的程序,输入密码
然后切换到root用户输入刚刚设置的密码
1.2 CVE-2024-1086提权
Linux内核的netfilter: nf_tables组件中存在的使用后释放漏洞可被利用以实现本地权限提升。nft_verdict_init()函数允许在hook verdict中使用正值作为drop error,因此当使用类似于NF_ACCEPT的drop error发出NF_DROP时,nf_hook_slow()函数可能会导致双重释放漏洞。
影响范围:
3.15 <= Linux kernel < 6.1.76
5.2 <= Linux kernel < 6.6.15
6.7 <= Linux kernel < 6.7.3
6.8:rc1 = Linux kernel
下载编译exp
git clone https://github.com/Notselwyn/CVE-2024-1086cd CVE-2024-1086
make
./exploit
混子Hacker
02
错误配置提权
SUID(Set User ID)是Linux/Unix系统中的一种特殊权限机制,允许普通用户以文件所有者的权限执行程序
查找系统中所有SUID文件:
find / -perm -4000 -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ; 2>/dev/null
利用find命令运行shell如bash和dash等
sudo(Super User Do)是 Linux/Unix 系统中用于授权普通用户以 root 或其他用户权限执行命令的工具
首先查看sudo权限:
sudo -l
混子Hacker
03
软件漏洞提权
3.1 CVE-2021-4034( PwnKit )提权
Polkit(之前称为 PolicyKit)是一个用于在类 Unix 操作系统中控制系统范围权限的组件。它为非特权进程与特权进程通信提供了一种有组织的方式。由于pkexec 无法正确处理调用参数个数,并试图将环境变量作为命令执行。进而劫持动态链接库,以root身份执行任意代码
影响范围
Debain stretch policykit-1 < 0.105-18+deb9u2
Debain buster policykit-1 < 0.105-25+deb10u1
Debain bookworm, bullseye policykit-1 < 0.105-31.1
Ubuntu 21.10 (Impish Indri) policykit-1 < 0.105-31ubuntu0.1
Ubuntu 21.04 (Hirsute Hippo) policykit-1 Ignored (reached end-of-life)
Ubuntu 20.04 LTS (Focal Fossa) policykit-1 < 0.105-26ubuntu1.2)
Ubuntu 18.04 LTS (Bionic Beaver) policykit-1 <0.105-20ubuntu0.18.04.6)
Ubuntu 16.04 ESM (Xenial Xerus) policykit-1 <0.105-14.1ubuntu0.5+esm1)
Ubuntu 14.04 ESM (Trusty Tahr) policykit-1 <0.105-4ubuntu3.14.04.6+esm1)
CentOS 6 polkit < polkit-0.96-11.el6_10.2
CentOS 7 polkit < polkit-0.112-26.el7_9.1
CentOS 8.0 polkit < polkit-0.115-13.el8_5.1
CentOS 8.2 polkit < polkit-0.115-11.el8_2.2
CentOS 8.4 polkit < polkit-0.115-11.el8_4.2
环境下载:https://github.com/vulhub/vulhub/tree/master/polkit/CVE-2021-4034
Docker-compose启动
下载exp:https://gitee.com/pwn2security/CVE-2021-4034
编译exp
运行
要成因在于sudo中存在一个基于堆的缓冲区溢出漏洞,当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证
Sudo1.8.2到 1.8.31p2版本
Sudo1.9.0到1.9.5p1版本
docker 环境: https://hub.docker.com/r/chenaotian/cve-2021-3156
下载glibc-2.27源码和sudo-1.8.21源码
运行命令“sudoedit -s /”
如果出现以“ sudoedit:”开头的错误响应,则系统可能受漏洞影响;
如果出现以“ usage:”开头的错误响应,则表示漏洞已被补丁修复。
下载exp
https://github.com/chenaotian/CVE-2021-3156/tree/main/exp
|
<<< END >>>
原创文章|转载请附上原文出处链接
更多漏洞|关注作者查看
作者|混子Hacker
原文始发于微信公众号(混子Hacker):【内网渗透基础】三、Linux提权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论