// 红队渗透 · 2025-03-10

渗透测试必备:Wget、FTP 和 SMB 批量下载技巧

在渗透测试过程中,批量下载目标系统文件是常见任务之一。无论是从 Web 服务器、FTP 服务器还是 SMB 文件共享中获取文件,掌握高效的批量下载技术可以大大提高渗透测试的效率。本文将详细介绍 Wget、FTP 和 SMB 的批量下载方法,帮助渗透测试人员高效获取目标文件。


一、Wget 批量下载:高效的递归下载

Wget 是一款广泛使用的命令行下载工具,支持从 Web 服务器和 FTP 服务器批量下载文件。其递归下载功能特别适合用来获取网站资源。

基本用法

wget -r -np http://example.com
  • -r:启用递归下载,抓取目标及其子目录。
  • -np:防止向上访问父目录,限制下载范围。

常用优化

  • 限制递归深度:

    wget -r -np -l 2 http://example.com

    通过 -l 参数指定递归层级,例如 -l 2 限制下载深度为两层。

  • 过滤文件类型:

    wget -r -np -A "*.pdf,*.docx" http://example.com

    使用 -A 参数指定下载文件类型,避免抓取不必要的文件。

  • 跳过已存在文件:

    wget -r -np -nc http://example.com

    使用 -nc(--no-clobber)防止文件重复下载。

  • 伪装用户代理:

    wget -r -np -U "Mozilla/5.0" http://example.com

    通过 -U 参数伪装为浏览器,绕过简单的访问限制。

应用场景

  • 从目标网站批量下载 HTML 文件、图片、JS、CSS 等静态资源。
  • 获取公开目录中的敏感文件进行进一步分析。

二、FTP 批量下载:灵活的文件传输

FTP(文件传输协议)广泛用于访问暴露的文件服务器。借助 Wget 或 FTP 客户端,渗透测试人员可以高效地批量下载文件。

使用 Wget 下载 FTP 文件

wget -m ftp://anonymous:@ftp.example.com
  • -m(--mirror):启用镜像模式,递归下载整个 FTP 目录。
  • anonymous:@:匿名登录,适用于无需凭证的 FTP 服务器。

使用 FTP 客户端优化下载

  1. 切换到二进制模式:

    ftp> binary

    确保以二进制模式传输文件,避免文件损坏。

  2. 关闭交互提示:

    ftp> prompt off

    禁用逐个确认,提升批量下载效率。

  3. 批量下载文件:

    ftp> mget *

    使用 * 通配符批量下载当前目录下的所有文件。

  4. 启用被动模式:

    ftp> passive on

    被动模式有助于解决防火墙或 NAT 环境下的连接问题。

  5. 自动化配置:

    ftp -p -i ftp.example.com

    使用 -p 启用被动模式,-i 禁用交互提示。

优化建议

  • 断点续传: 使用 -c 参数继续下载:

    wget -m -c ftp://anonymous:@ftp.example.com
  • 日志记录:

    wget -m -o download.log ftp://anonymous:@ftp.example.com

    使用 -o 参数记录下载过程,便于后续排查问题。

应用场景

  • 从匿名 FTP 服务器下载配置文件、备份文件。
  • 获取目标系统的内部文件快照进行进一步分析。

三、SMB 批量下载:Windows 共享的利器

SMB(服务器消息块协议)常用于 Windows 系统的文件共享。在渗透测试中,smbclient 可以用来访问 SMB 共享,并批量下载文件。

基本操作

smbclient //target/share -U username%password

连接后,执行以下命令进行批量下载:

smb: \> recurse on
smb: \> prompt off
smb: \> mget *
  • recurse on:启用递归下载,抓取子目录中的文件。
  • prompt off:关闭逐个文件的确认提示,提升批量下载效率。
  • mget *:下载当前目录及子目录下的所有文件。

优化建议

  • 匿名访问: 如果无需凭证,可以使用 -N:

    smbclient //target/share -N

    -N 表示不需要用户名和密码。

  • 指定输出路径:

    smb: \> lcd /path/to/save
    smb: \> mget *

    使用 lcd 命令设置本地保存目录。

  • 过滤文件类型:

    smb: \> mask "*.txt"
    smb: \> mget *

    使用 mask 限制只下载特定类型的文件。

  • 调试连接: 提高调试级别,帮助排查连接问题:

    smbclient //target/share -d 3 -U username%password

应用场景

  • 从 Windows 系统的暴露 SMB 共享中提取用户文档或配置文件。
  • 下载共享目录中的文件进行离线分析。

四、综合对比与选择

工具 协议 优点 局限性 最佳场景
Wget HTTP/FTP 简单高效,支持递归和断点续传 功能单一,处理交互较为困难 Web 和 FTP 文件抓取
FTP 客户端 FTP 灵活性高,可精细控制传输模式 需要手动配置,交互性较强 FTP 服务器的深度文件提取
smbclient SMB 适用于 Windows 共享,支持递归 配置稍复杂,依赖网络环境 SMB 共享的批量文件下载

选择建议

  • 快速抓取:优先使用 Wget,适合无交互的批量下载。
  • 复杂交互:使用 FTP 或 SMB 客户端,处理需要更多控制的文件传输。
  • 混合环境:结合多种工具,针对不同协议选择最合适的下载方法。

拓展:批量下载脚本

以下是一个结合 Wget 和 FTP 的批量下载自动化脚本:

!/bin/bash

 Wget 下载 Web 文件
wget -r -np -A "*.zip,*.txt" -o download.log http://example.com

 FTP 批量下载
ftp -n ftp.example.com <<EOF
user anonymous ""
binary
passive on
prompt off
mget *
bye
EOF

 SMB 下载(需安装 smbclient)
smbclient //target/share -N -c "recurse on; prompt off; mget *"

保存为 batch_download.sh,运行:

chmod +x batch_download.sh
./batch_download.sh

原文 https://blog.csdn.net/2301_79518550/article/details/145863107