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
arcgis-web-shell — ArcGIS-Enterprise-Geoprozessierungsdienst, der eine Python-Toolbox zur Befehlsausführung veröffentlicht. | Kitploit
Tools/GitHubGitHub/ryanpohlner/arcgis-web-shell
Privilege EscalationExploitationWebanwendungs-ExploitationPost-ExploitationPenetrationstestsRed TeamingRemote-Access-ToolPayload-Entwicklung
GitHubryanpohlner/arcgis-web-shell

arcgis-web-shell

ArcGIS-Enterprise-Geoprozessierungsdienst, der eine Python-Toolbox zur Befehlsausführung veröffentlicht.

Repository anzeigen
528vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ArcGIS Web Shell über einen Geoprocessing-Service

Dieses Repository enthält eine ArcGIS-Geoprocessing-Service-Definition, die eine Python-Toolbox als Task zur Befehlsausführung veröffentlicht. Sie ist für autorisierte Sicherheitstests gedacht.

Veröffentlichen oder verwenden Sie diesen Service nicht auf Systemen, für die Sie keine ausdrückliche Genehmigung haben. Ein Geoprocessing-Service führt serverseitigen Code unter dem Dienstkonto des ArcGIS Servers aus, sodass dieses Projekt eine web-shell-ähnliche Schnittstelle zum Host erzeugen kann.

Was das ist

Das Hauptartefakt ist ArcGIS_Shell, ein Python-Toolbox-Task mit einem Eingabeparameter:

command

Wenn die Aufgabe ausgeführt wird, führt der Server diesen Befehl über die Betriebssystem-Shell aus und gibt die normale Konsolenausgabe über das ArcGIS-Aufgabenergebnis zurück.

Das Repository enthält zwei vorgefertigte ArcGIS-Service-Definitionsdateien:

ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd

Es enthält außerdem extrahierte Service-Definition-Ordner:

ArcGIS_Shell_10.9.1_and_earlier/
ArcGIS_Shell_11_or_later/

Diese Ordner enthalten die Dateien, die ArcGIS in die .sd-Archive packt, einschließlich der eingebetteten ArcGIS_Shell.pyt-Dateien. Bearbeiten Sie die extrahierten Ordner, wenn Sie die Service-Definition ändern, und erstellen Sie anschließend die .sd-Dateien mit package_sd.py neu.

Service-Definitionen

Eine ArcGIS-Service-Definition (.sd) ist ein paketiertes Deployment-Artefakt. Sie enthält Service-Metadaten, Konfiguration, Toolbox- oder Kartenressourcen sowie unterstützende Dateien, die ArcGIS Server zum Veröffentlichen eines Services benötigt.

In diesem Repo ist jede .sd ein 7-Zip-Archiv mit ArcGIS-kompatiblen Kompressionseinstellungen:

-ms=off
-m0=LZMA:d=14

Die beiden Service-Definition-Ordner unterscheiden sich hauptsächlich durch die ArcGIS-Paketierungsversion:

10.9.1 and earlier: p20 paths, offlineSDVersion10x, ArcGIS 2.9 schema
11 or later:        p30 paths, offlineSDVersion11,  ArcGIS 3.1 schema

Die eingebettete Python-Toolbox-Logik ist in beiden Fällen identisch.

Geoprocessing-Services

ArcGIS-Geoprocessing-Services werden normalerweise verwendet, um GIS-Analyse-Workflows über HTTP bereitzustellen. Ein typischer Workflow ist:

  1. Eine Python-Toolbox, ein Modell oder ein Skript-Tool in ArcGIS Pro erstellen.
  2. Sie als Geoprocessing-Service veröffentlichen.
  3. Den Service von ArcGIS-Clients, Web-Apps oder REST-Clients aus aufrufen.
  4. ArcGIS Server das Tool ausführen und Ergebnisse zurückgeben lassen.

Legitime Beispiele sind das Zuschneiden von Features, die Durchführung von Netzwerkanalysen, die Verarbeitung von Rastern, die Erstellung von Berichten und die Durchführung von Batch-GIS-Transformationen.

Die wichtige Sicherheitseigenschaft besteht darin, dass Geoprocessing-Tasks serverseitig Python ausführen. Wenn ein veröffentlichter Task benutzergesteuerte Eingaben akzeptiert und sie an gefährliche Primitive wie subprocess.run(..., shell=True) weitergibt, wird der Geoprocessing-Task zu einer Schnittstelle für Befehlsausführung. Genau das demonstriert dieses Projekt.

Warum dies missbraucht werden kann

Der Task Shell akzeptiert einen String-Parameter namens command. Die Python-Toolbox führt diesen Befehl auf dem ArcGIS-Server-Host aus und gibt stdout/stderr im Task-Ergebnis zurück.

Das bedeutet, dass ein Operator mit der Berechtigung, ArcGIS-Geoprocessing-Services zu veröffentlichen oder zu verwalten, über normale ArcGIS-Funktionalität einen web-shell-ähnlichen Service erstellen kann. Der Befehl wird im Sicherheitskontext des ArcGIS-Server-Prozesskontos ausgeführt.

Der Service aktiviert außerdem die ArcGIS-Uploads-Funktion. Dadurch werden die Upload-Endpunkte des Service bereitgestellt:

/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads
/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload

Uploads werden von ArcGIS Server im Systemverzeichnis der Site gespeichert, typischerweise unter einem Pfad wie:

<arcgisserver>/directories/arcgissystem/arcgisuploads/<itemID>

Der genaue Pfad hängt von der Konfiguration des ArcGIS-Server-Verzeichnisses ab. Administratoren können hochgeladene Elemente einsehen über:

https://<server>/arcgis/admin/uploads?f=pjson

Bearbeiten oder löschen Sie keine Dateien in arcgissystem manuell. Löschen Sie Upload-Elemente über REST oder das Administrator Directory.

Veröffentlichen über ArcGIS Server Manager

Verwenden Sie die .sd-Datei, die zur Zielversion von ArcGIS passt:

ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd

Typischer Server-Manager-Ablauf:

  1. ArcGIS Server Manager öffnen:

    https://<server>/arcgis/manager
    
  2. Melden Sie sich mit einem Konto an, das berechtigt ist, Dienste zu veröffentlichen. Dies umfasst in der Regel portaladmin.

  3. Navigieren Sie zu Services.

  4. Klicken Sie auf Publish Service.

  5. Laden Sie die passende .sd-Datei für die ArcGIS-Version hoch. Klicken Sie auf Next.

  6. Auf der Seite „Specify properties for your new service" ändern Sie bei Bedarf den Dienstnamen. Klicken Sie auf Next.

  7. Auf der Seite „Share your services with" müssen Sie keine Kontrollkästchen aktivieren. Klicken Sie auf Publish.

  8. Der Dienst startet automatisch. Klicken Sie auf den Dienstnamen, dann auf Capabilities und anschließend auf die REST URL.

Um den Dienst zu löschen, klicken Sie auf das „X" neben dem Dienstnamen.

Die vorgefertigten .sd-Dateien enthalten bereits:

"capabilities": "Uploads"

Sie enthalten außerdem umfassende Upload-Einstellungen zum Testen:

"maxUploadFileSize": "2048",
"allowedUploadFileTypes": "<broad explicit extension list>"

maxUploadFileSize wird in MB angegeben. Die Erweiterungsliste ist für Assessment-Arbeiten bewusst breit gefasst, sie bleibt jedoch eine explizite Allowlist und kein echtes „alles erlauben“-Wildcard.

Verwendung der REST-Web-GUI

Öffnen Sie nach dem Veröffentlichen den Dienst im ArcGIS REST Services Directory:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer

Wenn der Dienst in einem Ordner veröffentlicht wird, geben Sie den Ordnernamen an:

https://<server>/arcgis/rest/services/<folder>/ArcGIS_Shell/GPServer

Öffnen Sie die Aufgabe:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/Shell

Klicken Sie auf Execute Task.

Legen Sie Ihren Befehl fest und senden Sie das Formular ab. Das Aufgabenergebnis sollte die Befehlsausgabe enthalten.

Die Ausgabe ist im JSON-Format, daher sind Zeilenumbrüche maskiert (\r\n). Sie müssen mehrzeilige Ausgaben nachbearbeiten.

Da die Aufgabe die Betriebssystem-Shell verwendet, funktionieren Shell-Built-ins:

dir
echo test
whoami /groups

Auf Linux-Zielen verwenden Sie Linux-Befehle:

id
uname -a
pwd

Dateien hochladen

Öffnen Sie die Uploads-Ressource:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads

Klicken Sie auf Upload Item, oder gehen Sie direkt zu:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload

Die REST-Web-GUI sollte eine Dateiauswahl anzeigen, wenn Uploads aktiviert sind.

Verwenden Sie das Formular, um eine Datei auszuwählen und den Upload abzusenden. Die Antwort enthält eine itemID.

Prüfen Sie das hochgeladene Element mit:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>

Löschen Sie das hochgeladene Element mit:

https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>/delete

Verwenden Sie das REST-Webformular auf dieser Seite, um den Löschvorgang zu übermitteln.

Tool herunterladen