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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
codeql-workshop-cve-2021-21380 — Ein CodeQL-Workshop zu CVE-2021-21380 | Kitploit
Tools/GitHubGitHub/rvermeulen/codeql-workshop-cve-2021-21380
Statische AnalyseSchwachstellenanalyseCode-AnalyseWebsicherheitLernen & BildungLabs & Praxis
GitHubrvermeulen/codeql-workshop-cve-2021-21380

codeql-workshop-cve-2021-21380

Ein CodeQL-Workshop zu CVE-2021-21380

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
12514vor 1 JahrNoch nicht geprüft
Teilen

CodeQL-Workshop für Java: Finden einer SQL-Injection

In diesem Workshop werden wir syntaktische und semantische Schlussfolgerungen verwenden, um eine SQL-Injection in der Rating-Komponente der XWiki-Plattform zu finden, die durch CVE-2021-21380 dokumentiert ist.

Inhalt

  • CodeQL-Workshop für Java: Finden einer SQL-Injection
    • Inhalt
    • Voraussetzungen und Einrichtungsanweisungen
      • Auf Ihrem lokalen Rechner
        • Installation
        • Einrichtungsschritte
    • Workshop
      • Lernziele
      • Problemstellung
      • Übungen
        • Übung 1
        • Intermezzo 1
        • Übung 2
        • Übung 3
        • Intermezzo 2
        • Übung 4
        • Übung 5
        • Intermezzo 3
        • Übung 6
        • Übung 7
        • Übung 8
    • Wie geht es weiter?

Voraussetzungen und Einrichtungsanweisungen

Auf Ihrem lokalen Rechner

Bitte arbeiten Sie diesen Abschnitt, wenn möglich, vor dem Workshop durch.

Installation

  • Installieren Sie Visual Studio Code.

  • Installieren Sie die CodeQL-Erweiterung für Visual Studio Code.

  • Sie müssen die CodeQL-CLI nicht installieren: Die Erweiterung übernimmt dies für Sie.

  • Klonen Sie dieses Repository:

    git clone https://github.com/advanced-security/codeql-workshop-cve-2021-21380.git
    

Einrichtungsschritte

  • Importieren Sie die CodeQL-Datenbank, die im Workshop verwendet werden soll:
    • Klicken Sie mit der rechten Maustaste auf die Datei xwiki-platform-CVE-2021-21380.zip in der Explorer-Ansicht und wählen Sie den Befehl CodeQL: Set Current Database.
    • Die Datenbank wird in der CodeQL-Datenbankansicht angezeigt, die über das QL-Symbol in der Aktivitätsleiste erreichbar ist.
  • Installieren Sie die Abhängigkeiten für die Analyse von Java-Code und zum Ausführen der Tests für die Übungen und Lösungen.
    • Suchen Sie in der Befehlspalette (Cmd/Ctrl+Shift+P) nach dem Befehl CodeQL: Install Pack Dependencies und führen Sie ihn aus.
    • Geben Sie oben in Ihrem VS-Code-Fenster github in das Feld ein, um die Liste zu filtern.
    • Aktivieren Sie das Kontrollkästchen neben cve-2021-21380-exercises, cve-2021-21380-exercises-tests, cve-2021-21380-solutions und cve-2021-21380-solutions-tests.
    • Klicken Sie auf OK/Enter.
  • Überprüfen Sie, dass alles wie erwartet funktioniert, indem Sie die Tests für die Lösungen ausführen.
    • Öffnen Sie die Testansicht und klicken Sie neben dem Lösungselement im Baum auf „run tests“ (das Wiedergabesymbol wird angezeigt, wenn Sie mit der Maus über Lösungen fahren).

Workshop

Lernziele

Der Workshop ist in mehrere Übungen unterteilt, die die QL-Sprachunterstützung für Java vorstellen, und endet mit einer abschließenden Abfrage, um die bekannte SQL-Injection zu finden. In diesen Übungen lernen Sie:

  • Wie Sie über syntaktische Informationen schlussfolgern.
  • Wie Sie über semantische Informationen schlussfolgern.
  • Erkunden Sie die QL-Sprachunterstützung für Java, um Muster auszudrücken.
  • Entdecken Sie, wie Sie vorhandene Modellierung wiederverwenden und erweitern.
  • Nutzen Sie mehrere Bausteine, um die endgültige Abfrage zusammenzustellen.

Problemstellung

In diesem Workshop suchen wir nach bekannten SQL-Injection-Schwachstellen in der Rating-API-Komponente der XWiki Platform. Solche Schwachstellen können in Anwendungen auftreten, wenn Informationen, die von einem externen Benutzer kontrolliert werden, in Anwendungscode gelangen, der auf unsichere Weise eine SQL-Abfrage erstellt und ausführt.

Die in diesem Workshop behandelte bekannte SQL-Injection wird in GHSA-79rg-7mv3-jrr5 in der GitHub Advisory Database überprüft. Um die SQL-Injection und mögliche Varianten zu finden, gehen wir die folgenden Teilprobleme an:

  • Identifizieren Sie die Quelle nicht vertrauenswürdiger Informationen und modellieren Sie sie in QL.
  • Identifizieren Sie die Senke, also die Methode, die SQL-Abfragen ausführt, und modellieren Sie sie in QL.
  • Kombinieren Sie die obigen Lösungen, um mithilfe von Taint-Tracking festzustellen, ob ein Informationsfluss zwischen Quelle und Senke besteht.

Übungen

In den ersten Übungen werden wir mithilfe des abstrakten Syntaxbaums (AST) über syntaktische Informationen schlussfolgern, um Folgendes zu identifizieren:

  • die in der Sicherheitsempfehlung beschriebene Methode, um ein Verständnis für die Schwachstelle zu entwickeln
  • Parameter, die nicht vertrauenswürdige Daten enthalten, unsere Quellen
  • Methodenaufrufe, die SQL-Anweisungen akzeptieren, unsere Senken

Übung 1

Finden Sie alle Methoden mit dem Namen getAverageRating und ihrem deklarierenden Typ im Programm, indem Sie die Abfrage exercise1.ql vervollständigen.

Hinweise
  • Das java-Modul stellt eine Klasse Method bereit, um über Methoden in einem Programm zu schlussfolgern.
  • Die Klasse Method stellt die Member-Prädikate getName und hasName bereit, um über den Namen einer Methode zu schlussfolgern.
  • Die Klasse Method stellt das Member getDeclaringType bereit, um über den Typ zu schlussfolgern, der die Methode deklariert.

Eine Lösung finden Sie in der Abfrage exercise1.ql

Intermezzo 1

Eine Lösung zu Übung 1 gibt eine Liste von Methoden zurück. Einige davon sind in einem Interface namens RatingsManager definiert, andere in den Klassen AbstractRatingsManager und RatingsScriptService.

Aus den von der Abfrage zurückgegebenen Informationen und der XWiki-Komponentendokumentation können wir ableiten:

  • XWiki verwendet ein komponentenorientiertes Design, um Erweiterungen und Anpassungen zu ermöglichen.
  • Die verwundbare Methode ist Teil einer Komponente.
  • Eine Komponente besteht aus einem Interface, das mit Role annotiert ist, und einer Implementierung, die mit Component annotiert ist.
  • Eine Komponente, die ScriptService erweitert, wird Wiki-Seiten über Scripting zugänglich gemacht.

Übung 2

Finden Sie alle Klassen, die mit der Annotation Component annotiert sind, indem Sie die Abfrage exercise2.ql vervollständigen. Beachten Sie, dass der voll qualifizierte Name des Typs der Annotation org.xwiki.component.annotation.Component ist.

Hinweise
Tool herunterladen