Linux 提权指南
知屋漏者在宇下,知政失者在草野,知经误者在诸子。导航
[*]壹 - 暗码搜寻
[*]贰 - Sudo 下令
[*]叁 - SUID/SGID 特权
[*]肆 - 计划任务
[*]伍 - 文件/目录
[*]陆 - Linux 内核
[*]柒 - 服务程序
[*]MySQL UDF
[*]NFS 共享
[*]Docker 容器
[*]LXD 容器
[*]捌 - 自动化工具
壹 - 暗码搜寻
[*]在 /var/www/* 目录下查找 web 应用相关的 config/seting/install 配置文件,其中可能会包罗连接 SQL 数据库的暗码。
[*]在 /home/* 目录下检查各用户家目录下的.*sh_history 下令汗青文件、.ssh 目录、.* 隐蔽文件、备注文档、别的程序/脚本。【下令 ls -Ral /home/ 可快速遍历家目录情况。】
[*]遍历整个文件体系,查找特殊定名的文件。【 下令 ls -alR / | grep -iI "passw\|pwd" 或locate ‘passw’】
[*]遍历整个文件体系,查找包罗特殊字串的文件。【下令 grep --color=auto -rnw -iIe "PASSW\|PASSWD\|PASSWORD\|PWD" --color=always / 2>/dev/null】
[*]若能够登录 SQL 数据库,则遍历 体系内置库/用户自建库 中的 user 表中的用户暗码。
[*]在 /var/backup/ 目录下检查可能的备份文件,例如 shadow.bak、passwd.bak、pwds.db 等。
[*]更多详情...
贰 - Sudo 下令
[*]罗列当前用户是否拥有可用的 sudo 下令,若无可用下令则直接跳过本节除步骤2以外的其他步骤。【下令 sudo -l 】
[*]罗列别的用户是否处于 sudo 组中,用以提供可能的横向突破点。【下令 id user 的方式逐一查询 /etc/passwd 中的 bash 用户;或下令 for user in $(cat /etc/passwd | awk -F: '{print $1}');do echo "$user" ; id "$user" ;done | grep -B 1 "sudo" 快速查询。】
[*]将 sudo -l 查询到的下令在 GTFOBins 网站中查找对应的利用方法,查找不到的下令亦可在 Google 中进行最后的搜刮;若这些下令中存在非体系标准下令,那么关于这些下令的利用方法同样可参考下面 SUID/SGID 特权部门 的步骤4中介绍的几种利用方法;若这些下令中存在 python 执行程序,则还可以尝试劫持上游依赖模块进行利用。
[*]执行下令 sudo LD_PRELOAD=/null /bin/id 或sudo LD_LIBRARY_PATH=. /bin/id 后,若没有输出sorry, you are not allowed to set the following environment variables: LD_PRELOAD这样的提示,则可以进行 sudo 预加载注入利用,该方法实用于所有通过 sudo -l 查询得到的下令。【利用方法】
[*]使用 sudo -V 检查 sudo 版本,若 sudo 版本 ≤1.8.27 且满足user ALL=(ALL,!root) /bin/bash 这样的条件,那么可以检察此利用方法;若 sudo 版本 ≤1.9.12p1 且满足user ALL=(ALL:ALL) sudoedit 这样的条件,那么可以检察此利用方法;
[*]更多详情1、更多详情2。
叁 - SUID/SGID 特权
<ol>罗列体系中所有的 SUID 文件。【下令 find / -type f -perm -u=s 2>/dev/null | xargs ls -l】
罗列体系中所有的 SGID 文件,此时还应该罗列对应的组能够读取的文件有哪些,这些文件中是否包罗类似 /etc/passwd 或 /etc/shadow 这样的文件,然后依此来判断拥有 SGID 特权的下令是否可以进行有效的利用。【下令 find / -type f -perm -g=s 2>/dev/null | xargs ls -l;下令 find / -group root -type f】
若步骤1罗列到的是体系标准下令,则可先在 GTFOBins 网站中查找对应的利用方法,查找不到时再到 Google 中进行最后的搜刮。
若步骤1罗列到的是非体系标准下令(用户自定义下令、第三方程序打包的下令),则使用步骤3的办法可能无效,此时(1)需要先与其交互看看它做了什么,(2)再查找版本号或对应的安装包,(3)接着通过 strings 提取可疑的字符串,(4)最后通过 strace 进行调试检查。这类程序的利用方式通常如下:<ol>
根据程序加载的共享库,进行共享对象注入。【利用方法】
根据程序调用的非绝对路径的下令,进行 PATH 环境变量注入。【利用方法】
根据程序调用的绝对路径的下令,优先检查用户是否拥有对该绝对路径直接写入或删除覆盖的权限,若无此权限则可以检查步骤5中动作。
根据程序的版本或 help 信息确定其安装包程序,然后通过 Google 或 searchsploit 搜刮其漏洞利用。【利用方法】
使用 bash --version 检查 bash 的版本,若 bash 版本 exploit.cecho '#include ' >> exploit.cecho '' >> exploit.cecho 'int main(){' >> exploit.cecho ' system("cp /bin/bash /tmp && chmod +s /tmp/bash");' >> exploit.cecho 'return 0;' >> exploit.cecho '}' >> exploit.cgcc exploit.c -o exploit</blockquote>肆 - 计划任务
[*]罗列体系 Cron 任务,通过检查 /etc/crontab、/etc/cron.d/* 文件内容,检察是否存在用户自定义的任务。
[*]罗列用户 Cron 任务,可通过下令 crontab -l 检察当前用户的自定义任务,而需要检察别的用户的自定义任务,则需借助 PsPy 这个工具进行。
[*]有关计划任务的利用方式,通常如下:
[*]任务下令非绝对路径,则可能存在 PATH 路径劫持。【利用方法】
[*]任务下令是绝对路径,则检查下令自身的文件权限是否可写入,下令所在的目录权限是否可写入。【利用方法】
[*]任务下令自身的用法是否存在漏洞,如 find 下令的通配符注入漏洞。【参考方法】
[*]更多详情
伍 - 文件/目录
find /etc -maxdepth 1 -writable -type f 2> /dev/null
find /etc -maxdepth 1 -readable -type f 2> /dev/null
find / -executable -writable -type d 2> /dev/null
重点文件:/etc/passwd、/etc/shadow、/etc/sudoers、
重点目录:/tmp/、/var/backups/、/etc/init.d/、/usr/lib/systemd/system/、/etc/update-motd.d/、
陆 - Linux 内核
[*]检查内核版本。【下令 uname -r;或下令 cat /proc/version;或下令 dpkg -l 中搜刮 linux-image 关键字;或下令 ls /boot/vmlinuz* ;】
[*]搜刮内核漏洞利用,使用下令 searchsploit linux kernel *.* 查找漏洞,或在本地借助 linux-exploit-suggester 工具 ./linux-exploit-suggester.sh -k *.* 检察漏洞发起。【linux-exploit-suggester 工具发起 git 本地拉取定时更新,因为其脚本中的漏洞编号在不断的添加。】
[*]优质内核漏洞利用保举:
[*] Half-Nelson/Full-Nelson [获取方式:下令searchsploit nelson,id15704、id17787。]
[*] Memodipper [获取方式:下令searchsploit dipper,id35161。]
[*] DirtyCow/DirtyCow2 [获取方式:下令searchsploit dirty cow,id40839、id40611。别的变种。]
[*] eBPF Verifier [获取方式:下令searchsploit 4.13.9,id45010。]
[*]别的已编译的内核漏洞
[*]更多详情。
留意:Linux 内核漏洞的利用容易造成体系的崩溃,发起仅在黔驴之技的情况下使用。
柒 - 服务程序
在此之前,首先通过下令ps aux 和 netstat -antp 确定在此体系中有哪些运行的服务可能是我们感兴趣的。
1、MySQL UDF
[*]利用条件:(1) mysqld 进程以 root 身份运行。【下令 ps aux | grep mysql 】(2) 拥有高权限的数据库登录账户,如 root。(3) mysql 版本符合 4.x/5.x/。【下令 mysql -V】
[*]利用方法:参考链接1、参考链接2。
[*]获取方式:下令 ``searchsploit mysql udf`,id1518。
2、NFS 共享
[*]利用条件:(1) nfs 进程正在运行。【下令 ps aux | grep nfs】(2) 共享文件夹启用了 no_root_squash 权限,下令 cat /etc/exports 可检查共享文件夹是否存在 no_root_squash 权限。 (3) 远端攻击机可挂载共享并写入 SUID 权限的程序。
[*]利用方法:参考链接。
[*]获取方式:无需
3、Docker 容器
[*]处于容器外部的利用条件:(1) dockerd 进程以 root 身份运行。【下令 ps aux | grep dockerd】(2) 用户可以使用 docker images 下令罗列镜像。【非 root 用户只要加入 docker 组便拥有操作 docker 容器的权限。】(3) dockerd 进程以 root 身份运行。(4) 容器内用户以 root 身份运行。【下令 docker run --rm -it alpine sh -c "id"】
[*]处于容器内部的利用条件1:(1) 当前容器身份是 root 。(2) 该容器是特权容器。【下令 fdisk -l | grep -A 10 -i "device" 输出的结果中存在/dev/sda* 这样的文件体系。】
[*]处于容器内部的利用条件2:(1) 当前容器身份是 root 。(2) 该容器非特权容器。(3) 容器启用 CAP_SYS_ADMIN 功能。【下令 capsh --print | grep cap_sys_admin 有输出信息。】(3) 容器中的 AppArmor 功能停止或未加载。【下令 cat /sys/kernel/security/apparmor/profiles 文件不存在。】
[*]利用方法:参考链接。
[*]获取方式:无需
4、LXD 容器
[*]利用条件:(1) lxd 进程以 root 身份运行。【下令 ps aux | grep -i lxd\|lxc】(2) 用户可以使用 lxc list 下令罗列镜像。【非 root 用户只要加入 lxd 组便拥有操作 lxd 容器的权限。】
[*]利用方法:参考链接。
[*]获取方式:https://github.com/saghul/lxd-alpine-builder
捌 - 自动化工具(辅助)
[*]PEASS-ng:https://github.com/peass-ng/PEASS-ng
[*]LinEnum:https://github.com/rebootuser/LinEnum
[*]linux-smart-enumeration:https://github.com/diego-treitos/linux-smart-enumeration
[*]SUID3NUM:https://github.com/Anon-Exploiter/SUID3NUM
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]