web-dev-qa-db-ja.com

内部ネットワークからリバースシェルをトンネリングしようとしています

私はペンテストを実行していて、内部マシンから攻撃者マシンにインタラクティブなリバースシェルを取得しようとしてスタックするのを練習しています。

これは私がこれまでに行ったことです:

私(攻撃者):67.67.67.67(一部のパブリックIP)
Webアプリ(犠牲者):68.68.68.68(一部のパブリックIP)
内部マシン(Webサーバー):10.1.1.80

Webサーバー情報:

  • セントス
  • Apache
  • PHP
  • mysql

68.68.68.68のWebアプリケーションにSQLインジェクションの脆弱性が見つかり、sqlosに--os-Shellオプションを付けて使用したところ、Apacheユーザーとしてこのアプリケーションを介してWebシェルを取得できました。次に、「ifconfig」コマンドを実行して、内部IP 10.1.1.80を取得しました。

私の目標はインタラクティブシェルを取得することです。そのため、リバースシェルを使用して、内部ネットワークから外部の攻撃マシンにトンネルを張ろうとしました。私が実行している問題はファイアウォールだと思います。

これは私が知っていることです(ウェブシェルを使用して):

  • ファイアウォールルールを表示できません

  • Webシェルを介してファイルをアップロードできますが、Webシェルを介して内部マシンから直接HTTP/HTTPSをダウンロードまたは使用できないため、httpリバースシェルが機能しません。

  • また、DNSも許可されていないと思わせるような出力を提供しないWebシェルを介して「Host google.com> /tmp/output.txt」を実行しようとしました。

  • 私はまた、リバースシェルを多数の人気のあるポートでリッスンしてみたので、ファイアウォールが詳細なパケット検査を行っていると思われるため、これらのポートでトンネリングすることはできません。

  • うまくいったことの1つは、内部のマシンからWebshel​​lを介して公開攻撃者のマシンにpingを送信できたことで、ICMPを使用してリバースシェルをトンネルできると思います。 「icmpsh」というツールを見つけましたが、残念ながら、犠牲PCで動作するクライアントはWindows版Cのみで書かれています。私は内部のlinuxボックスでこれを行うには「ワイン」を使用すると思いましたが、インターネットからプログラムをインストールできず、webshel​​lを介してワインをアップロードすると、多くの依存関係エラーが発生しました。したがって、私の次の計画は、純粋なpythonで独自のICMPリバースシェルを記述することでしたが、SOCK_RAWを使用するにはSudoが必要です。

私の質問は、ICMPがリバースシェルをトンネルする方法であると思いますか、それとも、使用またはテストできる別のプロトコルがあるのですか?たぶん私がアップロードできるワインまたは同等のポータブルバージョンがあるのでしょうか?

PS:これは練習用なので、達成できるように設定されています

4
user0809452345

問題は解決しました。

TL; DR:TCP 53は着信/発信トラフィックで利用可能でした

ファイアウォール経由で許可されているプロトコルを確認するとき、「Host google.com」と「Host -T google.com」と「Dig @ 8.8.8.8 google.com」を使用してDNSを確認していましたこれはDNSが許可されていないことを意味すると私は思いました。数日後にマシンに戻った後、攻撃マシンに「nc -nvlp port#」をセットアップし、複数のポートを使用して犠牲マシンから接続しようとすることにしました。長い間、ポート53経由で接続できました。そこでペイロードをセットアップし、シェルを取得して、特権を昇格させました。

したがって、私が学んだ教訓は、単一のツールまたは方法からの結果に依存しないことでした。複数の方法を試してください。

余談ですが、53でトラフィックを受け入れても、「Dig」コマンドと「Host」コマンドが機能しない理由を誰かが理解していれば、それはすばらしいことです。特にDNSではなく、53を超えるトラフィックを許可したと思いますか?

提案をありがとう

2
user0809452345