ncコマンドとbashの/dev/tcpで通信
netcatコマンドとbashの/dev/tcpを使って通信をする。
Reverse Shell with Bashを実行してみました。
bashはtcpの通信を/dev/tcp/host/portというファイルへの入出力に見せかけることができる。
これを使ってサーバとクライアントで通信をして、遠隔操作をしてみる、サーバとクライアントを用意するけれど、この例では接続してきたクライアントをサーバ側で操作するというもの。
まずnc(netcat)コマンドをサーバで実行する。-lでlisten mode.ここではtcpの8080番ポートで待ち受けることにした。*1
次に、クライアントではbashにシェルを変更して、ファイルディスクリプタの5番を/dev/tcp/[サーバのアドレス]/[サーバが待ち受けてるポート]にむすびつける。*2
うまく繋るとサーバ側に繋った旨が表示された。
クライアント側で、5番のファイルディスクリプタから読んだコマンドを実行し、その出力を5番に出すというループを実行する。
すると、サーバに入力した行がクライアントで実行され、その出力をサーバで見ることができる。この例では左側のウィンドウ(サーバにログインしている)でpwdを行い、右側ウィンドウ(クライアント側)のWorking Directoryが表示されているのがわかる。
めでたしめでたし。