dc1靶机是靶机我在练习渗透测试时遇到的最有意思的一台机器。它不像某些靶机那样堆砌漏洞,渗透而是靶机用一条清晰的攻击链把整个流程串起来——从信息收集到getshell,再到最后的渗透提权,每一步都有迹可循。靶机这台机器特别适合刚接触内网渗透的渗透人,因为它的靶机难度曲线平缓,但该有的渗透知识点一个都不少。
先用nmap扫了一下,靶机开放的渗透端口只有22和80。SSH和Web服务,靶机看起来平平无奇。渗透80端口跑的靶机是Drupal 7,版本号直接暴露在页面源码里。渗透Drupal 7在2018年之后就停止安全维护了,靶机这个版本肯定有已知漏洞。我翻了翻exploit-db,果然有个Drupalgeddon2的远程代码执行漏洞,编号是CVE-2018-7600。
用metasploit的对应模块打了一下,直接就返回了一个apache用户的shell。过程顺利得有点无聊,但真正精彩的还在后面。我看了下当前目录,有个flag1.txt,写着“Your flag is in another directory”。这暗示着还有后续内容,而且这台机器明显是精心设计的——每个flag都在指引你走向下一个阶段。
数据库配置文件settings.php里藏着flag2,还有数据库的账号密码。连上MySQL一看,drupaldb库里有张users表,管理员账号的密码hash就躺在那里。用hashcat跑了一下,是个弱密码——admin。这下我可以用管理员身份登录Drupal后台了。
后台功能挺全,但真正有用的是“PHP filter”模块。这个模块允许在内容里写PHP代码,直接执行系统命令。我写了个一句话木马,成功反弹了一个www-data的shell。这时候我注意到/etc/passwd里有个普通用户flag4,但需要密码才能登录。用hydra爆了会儿SSH,密码是orange——这又是一个弱口令。
登录flag4账号后,sudo -l显示可以以root身份执行/usr/bin/find命令。find有个经典的提权技巧,用-exec参数直接调用shell。我执行了sudo find . -exec /bin/sh \;,瞬间就拿到了root权限。最后一个flag就放在/root目录下,一切水到渠成。
回头看看这条攻击链,其实每一环都依赖前一步的信息收集。Drupal的漏洞让你进入系统,配置文件泄露数据库凭据,数据库里的hash又帮你登录后台,后台的PHP执行能力让你获得用户权限,最后sudo配置错误直接提权到root。这中间没有任何一步是必须暴力破解的,全是靠细心和逻辑推出来的。
dc1最值得学习的地方在于,它模拟了真实环境中常见的配置失误——默认安装的CMS、弱密码、不安全的sudo规则。你要是觉得它简单,那说明你已经掌握了基本思路;要是卡住了,多半是在某个信息收集环节漏掉了细节。建议自己动手打一遍,别光看writeup,体会一下那种一步步逼近真相的感觉。