Linux 提权指南
知屋漏者在宇下,知政失者在草野,知经误者在诸子。
导航
壹 - 密码搜寻
- 在 /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 特权
- 枚举系统中所有的 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 进行调试检查。这类程序的利用方式通常如下:
- 根据程序加载的共享库,进行共享对象注入。【利用方法】
- 根据程序调用的非绝对路径的命令,进行 PATH 环境变量注入。【利用方法】
- 根据程序调用的绝对路径的命令,优先检查用户是否拥有对该绝对路径直接写入或删除覆盖的权限,若无此权限则可以检查步骤5中动作。
- 根据程序的版本或 help 信息确定其安装包程序,然后通过 Google 或 searchsploit 搜索其漏洞利用。【利用方法】
- 使用
bash --version检查 bash 的版本,若 bash 版本<4.2 则 bash 允许定义与程序中调用的绝对路径同名的函数,其执行优先级会高于程序中调用的绝对路径的命令;若 bash 版本<4.4 则可以利用调试模式生成调试语句的PS4提示能力。【利用方法】
- 更多详情1、更多详情2。
注意:SUID 特权对于 sh 脚本不起作用,因此在进行上述 注入、写入/覆盖、同名函数 等利用时,切记要使用 C 语言编译的利用程序。
echo '#include <stdio.h>' > exploit.c
echo '#include <stdlib.h>' >> exploit.c
echo '' >> exploit.c
echo 'int main(){' >> exploit.c
echo ' system("cp /bin/bash /tmp && chmod +s /tmp/bash");' >> exploit.c
echo ' return 0;' >> exploit.c
echo '}' >> exploit.c gcc exploit.c -o exploit
肆 - 计划任务
枚举系统 Cron 任务,通过检查 /etc/crontab、/etc/cron.d/* 文件内容,查看是否存在用户自定义的任务。
枚举用户 Cron 任务,可通过命令
crontab -l查看当前用户的自定义任务,而需要查看其它用户的自定义任务,则需借助 PsPy 这个工具进行。有关计划任务的利用方式,通常如下:
伍 - 文件/目录
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 本地拉取定时更新,因为其脚本中的漏洞编号在不断的添加。】 - 优质内核漏洞利用推荐。
- [Kernels:2.6.0~2.6.37] Half-Nelson/Full-Nelson [获取方式:命令
searchsploit nelson,id15704、id17787。] - [Kernels:2.6.39~3.1.0] Memodipper [获取方式:命令
searchsploit dipper,id35161。] - [Kernels:2.6.22~3.9] DirtyCow/DirtyCow2 [获取方式:命令
searchsploit dirty cow,id40839、id40611。其它变种。] - [Kernels:4.4.0~4.13.x] eBPF Verifier [获取方式:命令
searchsploit 4.13.9,id45010。] - 其它已编译的内核漏洞
- [Kernels:2.6.0~2.6.37] Half-Nelson/Full-Nelson [获取方式:命令
- 更多详情。
注意:Linux 内核漏洞的利用容易造成系统的崩溃,建议仅在黔驴技穷的情况下使用。
柒 - 服务程序
在此之前,首先通过命令
ps aux和netstat -antp确定在此系统中有哪些运行的服务可能是我们感兴趣的。
1、MySQL UDF
- 利用条件:(1) mysqld 进程以 root 身份运行。【命令
ps aux | grep mysql】(2) 拥有高权限的数据库登录账户,如 root。(3) mysql 版本符合 4.x/5.x/[6.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
Linux 提权指南的更多相关文章
- Linux提权(1)-基础版~
利用Linux内核漏洞提权 VulnOS version 2是VulHub上的一个Linux提权练习,当打开虚拟机后,可以看到 获取到低权限SHELL后我们通常做下面几件事 1.检测操作系统的发行版本 ...
- 又一款linux提权辅助工具
又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...
- Linux提权:从入门到放弃
*原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载 日站就要日个彻底.往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子 ...
- 记一次初步Linux提权
前言. 提权这么久了 还是头一次提下Linux的服务器... 由于之前一直钻研的win服务器 要不是前些日子爆出来Struts2-045漏洞 估计还没时间接触Linux提权.... 正文. st2 ...
- 免考final linux提权与渗透入门——Exploit-Exercise Nebula学习与实践
免考final linux提权与渗透入门--Exploit-Exercise Nebula学习与实践 0x0 前言 Exploit-Exercise是一系列学习linux下渗透的虚拟环境,官网是htt ...
- 利用Metasploit进行Linux提权
利用Metasploit进行Linux提权 Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshe ...
- 20. Linux提权:从入门到放弃
几点前提 已经拿到低权shell 被入侵的机器上面有nc,python,perl等linux非常常见的工具 有权限上传文件和下载文件 内核漏洞提权 提到脏牛,运维流下两行眼泪,我们留下两行鼻血.内核漏 ...
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...
- Linux提权中常见命令大全
在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...
- Linux提权小结
原文链接:http://zone.secevery.com/article/1104 Linux提权1.信息收集2.脏牛漏洞提权3.内核漏洞exp提权4.SUID提权 0x00 基础信息收集(1):内 ...
随机推荐
- 2-6 C/C++ 编写头文件
目录 头文件怎么起作用 避免头文件被重复引用 避免头文件被重复引用的方法:条件编译 1. 给每个头文件添加一个预编译变量(preprocessor variable)作为标记(Label) 2. 使用 ...
- 根据不同的dpi 媒体查询
/* 默认样式 */ .element { width: 100px; height: 100px; background-color: blue; } /* 当设备像素比为1.5时,调整.eleme ...
- Visual Studio 存在版本之间冲突
1 . 检查项目中有没有重复引用的包,如果有的话卸掉一个. 2.. 检查项目中引用的包是否自带所重复的包,这样会导致项目之间引发包冲突. 举个例子: 我的项目里ICSharpCode.SharpZip ...
- nginx配置php-fpm虚拟主机站点
ubuntu下安装nginx 很简单 sudo apt-get install nginx 然后安装php-fpm 我这本地php7.4所以这么写 sudo apt search php7.4-fpm ...
- 关于template标签用法总结(含vue中的用法总结)
一.html5中的template标签html中的template标签中的内容在页面中不会显示.但是在后台查看页面DOM结构存在template标签.这是因为template标签天生不可见,它设置了d ...
- Webshell流量分析之哥斯拉Godzilla&冰蝎Behinder
目录 哥斯拉 冰蝎 哥斯拉和冰蝎相较于菜刀蚁剑,它们的通信流量是加密的,有比较好的抗检测能力. 菜刀和蚁剑流量分析:Webshell流量分析之菜刀Chopper&蚁剑AntSword 哥斯拉 ...
- 强化学习算法中log_det_jacobian的影响是否需要考虑
相关: 人形机器人-强化学习算法-PPO算法的实现细节是否会对算法性能有大的影响. https://openi.pcl.ac.cn/devilmaycry812839668/google_brax_p ...
- Mysql分页实现及优化
通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询.例如下面这个SQL: SELECT * FROM `t1` WHERE ftype=1 ORDER BY ...
- Java基础总结大纲(一)
1.JVM.JRE.和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.说明:java是跨平台的而JVM不是跨平台的,正对的不同的语言 ...
- RabbitMQ的四种交换机类型
前言 这是相关技能的详解系列,是将东西整理归纳总结,系列的进行记录与分享,这种方式更有完善性,更能成体系的学习一个技能,方便我们掌握他,这也是我们这种系列的目标,希望在跟着学习了解完这个系列后,就能将 ...