Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-36804-Bitbucket-RCE-Analysis — Vollständige Nachbildung von CVE-2022-36804 (Bitbucket RCE). Enthält ein Dockerisiertes Labor, pspy64-Überwachung zur Verifikation der null-byte injection und ein benutzerdefiniertes Bash-Exploit-Skript. Basierend auf der Forschung von Assetnote. | Kitploit
Tools/GitHubGitHub/danielhallbro/cve-2022-36804-bitbucket-rce-analysis
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlLernen & BildungPayload-EntwicklungBinary-ExploitationLabs & Praxis
GitHubdanielhallbro/cve-2022-36804-bitbucket-rce-analysis

CVE-2022-36804-Bitbucket-RCE-Analysis

Vollständige Nachbildung von CVE-2022-36804 (Bitbucket RCE). Enthält ein Dockerisiertes Labor, pspy64-Überwachung zur Verifikation der null-byte injection und ein benutzerdefiniertes Bash-Exploit-Skript. Basierend auf der Forschung von Assetnote.

Repository anzeigen
14vor 7 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

CVE-2022-36804: Bitbucket Remote Command Execution (RCE)

Technische Analyse & Laborausnutzung der Null-Byte-Argumentinjektion

Zusammenfassung der Schwachstelle

CVE-2022-36804 ist eine Argument Injection-Schwachstelle mit hohem/kritischem Risiko in der REST-API von Atlassian Bitbucket Server und Data Center.

Während die offizielle NVD-Bewertung (National Vulnerability Database) eine 8.8 (Hoch) ausgibt – basierend auf der Annahme von erforderlichen Leserechten (PR:L) – behandelt diese Analyse sie als 9.8 (Kritisch) (PR:N). Falls ein Ziel-Repository öffentlichen Zugriff erlaubt – eine häufige Konfiguration – wird der Angriffsvektor komplett vorauthentifiziert.

Dieses Repository dokumentiert eine vollständige Labor-Nachbildung des Exploits, die direkt auf der technischen Recherche von Assetnote basiert.

Die Analyse beschreibt den Übergang von der Umgebungsorchestrierung und Umgehung der Sicherheitsfilter bis zum Erlangen einer interaktiven Reverse Shell. Wie in der ursprünglichen Entdeckung dargestellt, erlaubt dieser Fehler die Remote Command Execution (RCE), die vorauthentifiziert ausgenutzt werden kann, wenn das Ziel-Repository öffentlichen Zugriff erlaubt.

Technische Tiefe: Die Null-Byte-Fehlpaarung

Die Schwachstelle liegt in einer „Diskrepanz der Bereinigung“ (Sanitization Impedance Mismatch) zwischen der Java-Anwendungslaufzeit und dem Linux-Betriebssystem.

Wie in Assetnotes Forschung hervorgehoben, verwendet Bitbucket die Bibliothek NuProcess, um Git-Befehle zu konstruieren und auszuführen. Wenn ein Benutzer einen prefix-Parameter an den /archive-Endpunkt übergibt, entfernt Bitbucket keine Nullzeichen (%00), bevor die Argumentliste an das Betriebssystem übergeben wird.

  • Javas Sicht: Behandelt die Eingabe als einzelnes String-Objekt, das sicher ein Null-Byte enthält.
  • Linux-Kernel-Sicht: In C geschrieben, verwendet der Kernel Nullzeichen zur Begrenzung von Zeichenketten. Wenn execve() den Befehl verarbeitet, schneidet es die Zeichenkette bei %00 ab. Aufgrund der Art, wie NuProcess die Daten übergibt, behandelt das Betriebssystem alles nach dem Null-Byte als völlig neues Kommandozeilenargument.

Durch Injizieren von --exec=... kann ein Angreifer aus dem beabsichtigten --prefix-Flag ausbrechen und den git archive-Prozess zwingen, ein beliebiges Binärprogramm auszuführen, was zur Remote Command Execution (RCE) führt.

Klicken zum Erweitern: Payload-Anatomie & Der "Array-Shift"

Um zu verstehen, wie der Exploit von einem einfachen URL-Parameter zu einem Befehl auf Betriebssystemebene übergeht, müssen wir die Struktur des Payloads analysieren und den „Array-Shift" beobachten.

1. Aufschlüsselung des Payloads

prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x

KomponenteZweckTechnische Rolle
prefix=xAnforderunggit archive benötigt ein Präfix; x dient als Platzhalter.
%00Das MesserNull-Byte. Java übergibt es, aber der auf C basierende Linux-Kernel beendet hier die Zeichenkette.
--exec=...Der RCE-AuslöserDas gefährliche Flag. Missbraucht die integrierte Git-Funktion zur Ausführung externer Programme.
touch ...Die AktionDer auszuführende Befehl. Sicherer PoC zur RCE-Verifikation.
--remote=...Der MülleimerVerbraucht den Commit-ID (von Bitbucket angehängt) als gültiges Argument, sodass der Befehl sauber ohne Syntaxfehler ausgeführt wird.

2. Der "Array-Shift" visualisiert

Dies veranschaulicht den Kern der Schwachstelle: Wie Daten (ein Verzeichnispräfix) in eine Anweisung (ein Befehlsflag) umgewandelt werden.

Javas Ausführungskontext (Anfangszustand):

Java sieht einen einzelnen langen String als drittes Argument.

[
  "git",                                      // Index 0
  "archive",                                  // Index 1
  "--prefix=x\0--exec=...\0--remote=...\0x",  // Index 2: Der einzelne, kontaminierte String
  "1a2b3c4d..."                               // Index 3: Von Bitbucket angehängt
]

Linux-Kernel-Ausführung (ausgenutzter Zustand):

Der Kernel-Syscall execve() teilt den String an jedem Null-Bytes (\0) auf und verschiebt die injizierten Flags in ihre eigenen eigenständigen Positionen im Argumenten-Array des Prozesses.

[
  "git",                                      // argv[0]: Ausführbare Datei
  "archive",                                  // argv[1]: Unterbefehl
  "--prefix=x",                               // argv[2]: Vorzeitig durch %00 beendet
  "--exec=/bin/bash -c 'touch /tmp/pwned'",   // argv[3]: DAS INJIZIERTE FLAG (RCE)
  "--remote=file:///",                        // argv[4]: DER MÜLLEIMER (Leitet Logik um)
  "1a2b3c4d..."                               // argv[5]: COMMIT-ID (Vom --remote verbraucht)
]

Laboraufbau

Um eine realistische Angriffsfläche zu simulieren, verwendet die Laborumgebung eine Zwei-Container-Architektur, die in einem Docker-Bridge-Netzwerk (hacking_net) isoliert ist. Dieser Aufbau stellt sicher, dass Ausnutzung und Überwachung in einer kontrollierten Umgebung durchgeführt werden können, ohne das Host-System zu beeinflussen.

Architekturkomponenten

  • Opferknoten: Führt Atlassian Bitbucket Server Version 7.17.1 aus. Der Container trägt absichtlich den Namen bitbucket-victim. Dies spiegelt eine kritische Design-Verbesserung wider, die vorgenommen wurde, um die Einhaltung von Apache Tomcats RFC 7230 zu gewährleisten. Durch die Verwendung eines Bindestrichs anstelle eines Unterstrichs vermeidet die Umgebung die „ungültiges Zeichen"-400-Fehler, die bei der Payload-Ausführung auftreten – eine wichtige technische Hürde, die während der Forschungsphase identifiziert und gelöst wurde.

  • Angreiferknoten: Ein maßgeschneidertes Kali Linux Rolling Image. Anders als ein Standard-Image ist dieser Knoten vorab mit dem spezifischen Toolset für diese Exploit-Kette ausgestattet: git für Repository-Manipulation, curl für die Payload-Zustellung und netcat-traditional für das Erfassen der Reverse Shell.

docker-compose.yml (Tomcat RFC-konforme Version)
services:
  bitbucket:
    image: atlassian/bitbucket-server:7.17.1
    container_name: bitbucket-victim # Umbenannt von bitbucket_victim, um Host-Header-Probleme bei der Payload-Ausführung zu vermeiden.
    ports:
      - "7990:7990"
    volumes:
      - ./bitbucket-data:/var/atlassian/application-data/bitbucket
    networks:
      - hacking_net

  kali:
    build: .
    container_name: kali_attacker
    tty: true
    networks:
      - hacking_net

networks:
  hacking_net:
    driver: bridge

Dockerfile (Angreiferknoten)
# Verwende das offizielle Kali Linux Rolling Image als Basis
FROM kalilinux/kali-rolling

# Aktualisiere die Paketlisten und installiere essentielle Tools für den Exploit
# - git: ERFORDERLICH für diese spezifische CVE (wir werden Git-Befehle manipulieren)
# - curl: Zum Senden der HTTP-Anfragen (der Payload)
# - netcat-traditional: Zum Abfangen der Reverse Shell (Listener)
# - nano: Hinzugefügt für benutzerfreundliche Textbearbeitung im Container
# - python3: Nützlich zum Skripten oder Hosten von einfachen HTTP-Servern
RUN apt-get update && \
    apt-get install -y git curl netcat-traditional nano python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Setze das Arbeitsverzeichnis auf /root für Bequemlichkeit
WORKDIR /root

# Halte den Container unbegrenzt am Laufen, damit wir über 'docker exec' darauf zugreifen können
# Dieser Befehl folgt nur dem Null-Gerät, tut nichts, hält aber den Prozess am Leben
CMD ["tail", "-f", "/dev/null"]

Laborverifikation (Der Schnelltest)

Tool herunterladen