
Ein Repository, das automatisch eine Reihe von Docker-Images generiert und über GitHub Actions auf dem neuesten Stand hält.
RAUDI (Regularly and Automatically Updated Docker Images) erstellt und aktualisiert automatisch eine Reihe von Docker-Images über GitHub Actions für Tools, die nicht von den Entwicklern bereitgestellt werden.
RAUDI erspart Ihnen das manuelle Erstellen und Verwalten vieler Docker-Images. Jedes Mal, wenn eine Software aktualisiert wird, müssen Sie das Docker-Image aktualisieren, wenn Sie die neuesten Funktionen nutzen möchten, die Abhängigkeiten funktionieren nicht mehr.
Das ist mühsam und zeitaufwändig.
Machen Sie sich keine Sorgen mehr, wir haben alles im Griff.
Sie können entweder dieses Repository forken und den GitHub-Workflow selbst nutzen oder es lokal verwenden (und seine Ausführung nach Ihren Wünschen verwalten).
Wenn Sie dieses Repository forken möchten, müssen Sie auch einige Secrets einrichten, um Ihre Images auf Ihr persönliches Docker Hub-Konto pushen zu können. Zwei GitHub-Secrets müssen gesetzt werden:
Nach dem Setzen dieser Secrets müssen Sie die organization-Variable in der Datei tools/main.py bearbeiten, da sie so konfiguriert ist, dass sie auf den Docker Hub für SecSI pusht.
Das war's, Leute: Gehen Sie zu Action, aktivieren Sie es für Ihr geforktes Repository, warten Sie bis Mitternacht, und der Workflow erledigt die schwere Arbeit!
Dieses Repository kann auch lokal ausgeführt werden. Die zu erfüllenden Anforderungen sind:
Hier ist die Dokumentation für die Arbeit mit BuildX: https://docs.docker.com/buildx/working-with-buildx/
Die Einrichtungsphase ist recht einfach, Sie benötigen lediglich die folgenden Befehle:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
Sie sind startklar!
Um den Test auszuführen, müssen Sie pytest mit dem Befehl pip install pytest installieren (es ist nicht in requirements.txt enthalten, da es nur zu Testzwecken benötigt wird) und dann können Sie ausführen:
pytest -s
oder
python -m pytest -s
um die Tests auszuführen.
RAUDI kann alle Tools, die in das tools-Verzeichnis abgelegt werden, bauen und pushen. Es gibt verschiedene Optionen, die bei der Ausführung verwendet werden können. Bevor Sie es lokal verwenden, sollten Sie eine .env-Datei erstellen (Sie können einfach die .env.sample-Datei kopieren) und Ihren GitHub Personal Access Token hinzufügen, um das Rate Limiting zu vermeiden. Für nicht authentifizierte Benutzer erlaubt GitHub bis zu 60 Anfragen pro Stunde, während authentifizierte Benutzer bis zu 15.000 Anfragen pro Stunde erlaubt bekommen. Aus diesem Grund empfehlen wir Ihnen, ihn hinzuzufügen! Sie können auch einen persönlichen Zugriffstoken ohne jeden Umfang erstellen, da wir nur einige Informationen für jedes GitHub-Repository lesen.
In diesem Modus versucht RAUDI, alle Tools bei Bedarf zu bauen. Der Befehl zum Ausführen ist einfach:
python3 ./raudi.py --all
In diesem Modus versucht RAUDI, nur das angegebene Tool zu bauen. Der Befehl in diesem Fall lautet:
python3 ./raudi.py --single <tool_name>
tool_name MUSS der Name des Verzeichnisses im tools-Ordner sein.
Da der Parameter tests zur Konfigurationsstruktur des Tools hinzugefügt wurde, kann es hilfreich sein, zu testen, ob die eingefügten Befehle einen Statuscode von 0 zurückgeben. Der Befehl zum Testen eines bestimmten Tools lautet:
python3 ./raudi.py --test <tool_name>
tool_name MUSS der Name des Verzeichnisses im tools-Ordner sein.
Wenn Sie die verfügbaren Tools erfahren möchten, können Sie diesen Befehl ausführen:
python3 ./raudi.py --list
Wenn Sie schnell einen neuen Tool-Ordner hinzufügen möchten, ausgehend von einer der verfügbaren Vorlagen, können Sie diesen Befehl ausführen:
python3 ./raudi.py --bootstrap <new_tool_name>
| Option | Beschreibung | Standardwert |
|---|---|---|
| --push | Ob automatisch auf Docker Hub gepusht werden soll | False |
| --remote | Ob vor dem Bau gegen Docker Hub statt lokalem Docker geprüft werden soll | False |
Dies ist die aktuelle Liste der hinzugefügten Tools. Es handelt sich um Tools, die kein offizielles Docker-Image vom Entwickler haben:
Jedes Tool im tools-Verzeichnis enthält mindestens zwei Dateien:
Wenn Sie ein neues Tool hinzufügen möchten, müssen Sie lediglich einen Ordner für dieses spezifische Tool im tools-Verzeichnis erstellen. In diesem Ordner müssen Sie die Dockerfile mit definierten Build-Argumenten einfügen, um den Bau anzupassen und zu automatisieren. Sobald Sie die Dockerfile erstellt haben, müssen Sie eine config.py im selben Verzeichnis erstellen, mit einer Funktion namens get_config(organization, common_args). Achtung: Die Funktion MUSS so heißen und MUSS diese beiden Parameter haben (auch wenn Sie sie nicht verwenden). Der Rückgabewert ist die config für dieses spezifische Tool und hat die folgende Struktur:
config = {
'name': organization+'/<name_of_the_image>',
'version': '', # Should be an helper function
'buildargs': {
},
'tests': []
}
Die vier Schlüssel sind:
Danach können Sie loslegen! Achten Sie nur darauf, dass der Name des Tools IDENTISCH mit dem Verzeichnis sein muss, in dem Sie seine Dockerfile abgelegt haben.
Es gibt eine NAMENSKONVENTION für die Versionen: verwenden Sie nur PUNKTE und ZIFFERN; entfernen Sie daher bitte jedes nachgestellte 'v' aus der Version in der entsprechenden config.py (für ein funktionierendes Beispiel siehe tools/dirsearch/config.py).
Um die neuesten Versionen und Informationen über Tools und Basis-Images zu erhalten, wurde eine Reihe von Helfern implementiert. Wenn Sie ein neues Tool hinzufügen möchten, sollten Sie diese Helfer verwenden, um ein Docker-Image zu erhalten, das automatisch von RAUDI aktualisiert wird.
get_latest_pip_versionDieser Helfer wird verwendet, um die neueste Version eines pip-Pakets abzurufen. Es benötigt lediglich den Namen des Pakets und gibt die Versionsnummer zurück. Beispiel:
VERSION = helper.get_latest_pip_version(package_name)
get_latest_npm_registry_versionDieser Helfer wird verwendet, um die neueste Version eines npm-Pakets abzurufen. Es benötigt lediglich den Namen des Pakets und gibt die Versionsnummer zurück. Beispiel:
VERSION = helper.get_latest_npm_registry_version(package_name)
get_latest_github_releaseDieser Helfer wird verwendet, um Informationen über ein GitHub-Repository abzurufen, das Releases verwendet und mehrere Arten von Assets hat (z.B. ausführbare Dateien für verschiedene Betriebssysteme). Dieser Helfer nimmt das Repository (im Format user/repo) und einen Zielstring, um das korrekte Asset zum Herunterladen identifizieren zu können. Er gibt ein Dict mit zwei Schlüsseln (url und version) zurück. Beispiel:
VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")
get_latest_github_release_no_browser_downloadDieser Helfer wird verwendet, um Informationen über ein GitHub-Repository abzurufen, das Releases verwendet und nur den Quellcode hat (was bedeutet, dass es ein zipball und ein tarball gibt). Dieser Helfer nimmt das Repository (im Format user/repo) und gibt ein Dict mit zwei Schlüsseln (url und version) zurück. Beispiel:
VERSION = helper.get_latest_github_release_no_browser_download("user/repo")
get_latest_github_tag_no_browser_downloadDieser Helfer wird verwendet, um Informationen über ein GitHub-Repository abzurufen, das Tags verwendet und nur den Quellcode hat (was bedeutet, dass es ein zipball und ein tarball gibt). Dieser Helfer nimmt das Repository (im Format user/repo) und gibt ein Dict mit zwei Schlüsseln (url und version) zurück. Beispiel:
VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")
get_latest_github_commitDieser Helfer wird verwendet, um Informationen über ein GitHub-Repository abzurufen, das keine Tags oder Releases verwendet. In diesem Fall ist das Ziel, den letzten Commit abzurufen. Dieser Helfer nimmt das Repository (im Format user/repo) und gibt einen String zurück, der das Datum des letzten Commits im Format YYYYYMMDD darstellt.
VERSION = helper.get_latest_github_commit("user/repo")
Dieser Abschnitt enthält Beispiele für die derzeit hinzugefügten Netzwerksicherheits-Tools. Wie Sie sehen können, stellen die Images nur das Tool bereit. Wenn Sie also eine Wortliste verwenden müssen, müssen Sie sie einbinden.
docker run -it --rm secsi/<tool> <command>
docker run -it --rm -v <wordlist_src_dir>:<wordlist_container_dir> secsi/dirb <url> <wordlist_container_dir>/<wordlist_file>
Wir sind Italiener, also sprechen wir es wahrscheinlich anders aus als Sie. Die korrekte Aussprache (unter Verwendung der phonetischen Transkription) ist die folgende:
/ˈraʊdi/
Oder denken Sie an den ausgestopften Hund in der berühmten Fernsehserie Scrubs: Rowdy
Jeder ist eingeladen, beizutragen! Wir haben ein sehr detailliertes Dokument erstellt, das beschreibt, wie man zu RAUDI beiträgt.
RAUDI wird stolz @SecSI entwickelt von:
Weitere Beitragende:
RAUDI ist eine Open-Source- und freie Software, die unter der GNU GPL v3 veröffentlicht wurde.
| --force | Ob gebaut werden soll, wenn ein Image mit demselben Tagname gefunden wurde | False |
| Name | Docker Image | Source |
|---|