Skip to content
KitploitKITPLOIT
ToolsBlog
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
DbDat — Db Datenbank-Bewertungstool | Kitploit
Tools/GitHubGitHub/foospidy/dbdat
SchwachstellenscannerKonfigurationsprüfungPenetrationstestsDatenbanksicherheit
GitHubfoospidy/dbdat

DbDat

Db Datenbank-Bewertungstool

Repository anzeigen
21144vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

DbDat

Db Datenbank-Bewertungswerkzeug

DbDat führt zahlreiche Prüfungen auf einer Datenbank durch, um die Sicherheit zu bewerten. Die Kategorien der Prüfungen sind Konfiguration, Berechtigungen, Benutzer und Informationen. Die Prüfungen werden durch Ausführen von Abfragen oder Lesen von Datenbank-Konfigurationsdateien durchgeführt. Ziel dieses Werkzeugs ist es, Probleme hervorzuheben, die sofortige Aufmerksamkeit erfordern, und Konfigurationseinstellungen zu identifizieren, die auf Angemessenheit überprüft werden sollten. Dieses Tool dient nicht zur Identifizierung von SQL-Injection-Schwachstellen in einer Anwendung; dafür gibt es bereits gute Tools (z.B. https://github.com/sqlmapproject). Auch versucht dieses Tool nicht zu bestimmen, welche CVEs die Version der Zieldatenbank betreffen könnten (dies wird möglicherweise in Zukunft hinzugefügt). Vielmehr kann Ihnen dieses Tool helfen, die potenziellen Auswirkungen eines erfolgreichen SQL-Injection-Angriffs aufgrund schwacher Konfiguration oder Zugriffskontrollen besser zu verstehen. Die Mehrheit der Prüfungen stammt von den CIS (https://cisecurity.org) Sicherheits-Benchmarks für Datenbanken, also Danke an CIS! Die Benchmark-Dokumente finden Sie hier: https://benchmarks.cisecurity.org/downloads/browse/index.cfm?category=benchmarks.servers.database

Ich empfehle dringend, das Benchmark-Dokument für Ihre Zieldatenbank herunterzuladen, da es zusätzliche Informationen zu den durchgeführten Prüfungen enthält.

Schließlich ist DbDat als Framework konzipiert, um die einfache Erstellung neuer Plugins und Prüfungen zu ermöglichen. Beiträge aus der Sicherheits- oder sogar der Datenbankadministrator-Community werden dieses Tool großartig machen. Der aktuelle Satz von Prüfungen ist keineswegs vollständig; es muss definitiv noch mehr getan werden. Bitte tragen Sie bei!

Entwicklung neuer Datenbank-Prüfungen

Pull-Requests sind sehr willkommen! Die Prüfungen sind nach Datenbanktyp organisiert (z.B. MySQL, Oracle, MS SQL usw.) im plugins-Ordner. Jede Prüfung ist eine einzelne Python-Datei, deren Dateiname mit check_ beginnen muss. Jede Datei enthält eine Klasse mit einer do_check-Methode. Diese Methode enthält die Hauptlogik für die Prüfungen. Der schnellste Weg, um zu beginnen, ist, eine vorhandene Prüfungsdatei zu kopieren und zu ändern. Weitere Details finden Sie jedoch im Abschnitt Entwicklung von Plugins weiter unten.

Ausführen von DbDat

  1. Stellen Sie sicher, dass die erforderlichen Abhängigkeiten für Python-Skripte installiert sind, um eine Verbindung zu Ihrer Zieldatenbank herzustellen. Siehe Abschnitt Abhängigkeiten unten.
  2. Fügen Sie einen Verbindungsprofileintrag in der Datei etc/dbdat.conf für jede Datenbank hinzu, die Sie bewerten möchten.
  3. Run: python dbdat.py -p <profile name>
  4. Zeigen Sie den Bericht an. Um den Bericht anzuzeigen, wechseln Sie mit cd in das reports-Verzeichnis und führen Sie python -m SimpleHTTPServer 9000 aus (oder wählen Sie eine Portnummer Ihrer Wahl). Öffnen Sie dann Ihren Browser und navigieren Sie zu http://localhost:9000.

Um eine Liste zusätzlicher Befehlszeilenargumente zu sehen, führen Sie python dbdat.py -h aus.

Berichtausgabe

Der Bericht organisiert die Ergebnisse nach Stufen: ROT, GELB, ORANGE, GRAU und GRÜN.

  • ROT - Elemente, die sofortige Aufmerksamkeit erfordern.
  • GELB - Elemente, die einer Überprüfung bedürfen.
  • ORANGE - Prüfungen, die nicht korrekt ausgeführt werden konnten.
  • GRAU - Elemente, die möglicherweise nicht auf die Version der bewerteten Datenbank zutreffen.
  • GRÜN - Bestandene Elemente

Abhängigkeiten

Bisher wurde DbDat auf Debian Linux, CentOS Linux und Windows 7 mit Python 2.7 getestet.

MySQL-Unterstützung

Run: pip install MySQL-python

Oder auf Debian: apt-get install python-mysqldb

PostgreSQL-Unterstützung

Run: pip install psycopg2

Oracle-Unterstützung

Run: pip install cx_Oracle

  • https://cx-oracle.readthedocs.org/en/latest/index.html

Hinweis: Sie müssen Oracle-Clientbibliotheken installieren, damit dies funktioniert.

MS SQL-Unterstützung

Run: pip install pymssql

  • https://pymssql.readthedocs.org/en/latest/index.html
Sybase-Unterstützung
  • todo
DB2-Unterstützung

Run: pip install ibm_db oder easy_install ibm_db

Hinweis: Sie müssen sicherstellen, dass der Benutzer, der DbDat ausführt, Zugriff auf die Ausführung von DB2 CLP-Befehlen (z.B. db2 und db2level) hat.

MongoDB-Unterstützung

Run: pip install pymongo

Um MongoDB-YAML-Konfigurationsdateien zu unterstützen, führen Sie pip install pyyaml aus.

CouchDB-Unterstützung

Run: pip install couchdb

Entwicklung von Plugins

Plugin-Ordner

Im plugins-Ordner gibt es einen Ordner für jeden Datenbanktyp, und jeder Ordner enthält Prüfungsdateien. Dies ist eine sehr einfache Struktur, aber Sie können auch den plugins-Ordner durchsuchen, um sich vertraut zu machen: https://github.com/foospidy/DbDat/tree/master/plugins

Die Datenbank-Ordner enthalten:

  • __init.py - Die Init-Datei enthält eine Import-Anweisung für jede Prüfungsdatei.
  • check_-Dateien - Dies sind die eigentlichen Dateien, die die Datenbankprüfungen durchführen. Die Datei und die darin definierte Klasse sollten denselben Namen tragen.
  • helper.py - Eine Datei mit allgemeinen Funktionen. Prüfungsdateien können helper.py importieren, um allgemeine Funktionen zu nutzen.

Prüfungsdateien

Beim Hinzufügen einer neuen Prüfungsdatei muss eine Import-Anweisung zur entsprechenden __init__.py-Datei des Plugin-Verzeichnisses hinzugefügt werden. Das Code-Muster für die Prüfungen ist recht einheitlich. Überprüfen Sie die vorhandenen Dateien, um ein Gefühl für deren Struktur zu bekommen. Beachten Sie den Unterschied zwischen Prüfungen vom Typ sql und configuration_file.

Prüfungsdatei

Es gibt verschiedene "Typen" von Prüfungen, die definiert werden können. Der Prüfungstyp wird durch die Variable TYPE bestimmt und kann sql, configuration_file, nosql oder clp sein. Nachfolgend finden Sie Beispielimplementierungen für die verschiedenen Prüfungstyp-Szenarien.

sql-Prüfungstyp

Für sql-Prüfungen muss die Signatur der do_check-Methode sein: do_check(self, *results)

Typische sql-Prüfung

https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_user_empty_password.py

sql-Prüfung, bei der SQL-Variable beim Init gesetzt wird

In diesem Beispiel benötigen wir die Variable appuser aus der aufrufenden Elternklasse. Der appuser muss dynamisch zur SQL-Anweisung hinzugefügt werden, daher wird die Variable self.SQL in der __init__-Methode gesetzt. Da diese do_check-Methode das SQL ausführen muss, benötigen wir auch den DB-Cursor (Verbindung), der in der __init__-Methode mit self.dbcurs = parent.dbcurs gesetzt wird.

https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_privilege_user_grants.py

configuration_file-Prüfungstyp

Für configuration_file-Prüfungen muss die Signatur der do_check-Methode sein: do_check(self, configuration_file)

Parsen von Konfigurationsdateien, die mit dem ConfigParser-Modul von Python kompatibel sind

https://github.com/foospidy/DbDat/blob/master/plugins/mysql/check_configuration_general_log.py

Parsen von Konfigurationsdateien, die nicht mit dem ConfigParser-Modul von Python kompatibel sind

In diesem Beispiel hat die PostgreSQL-Konfigurationsdatei keine Abschnitte (z.B. [section_name]), daher enthält das Hilfsmodul im PostgreSQL-Ordner eine Funktion, die dies handhabt. Siehe die Funktion get_config_value, die in helper.py definiert ist.

https://github.com/foospidy/DbDat/blob/master/plugins/postgresql/check_configuration_host_wildcards.py

Für andere Konfigurationsdateiformate müssen Sie Ihre eigene Parsing-Logik definieren.

nosql-Prüfungstyp

Für nosql-Prüfungen muss die Signatur der do_check-Methode sein: do_check(self)

NoSQL-Abfragen müssen innerhalb der do_check-Methode ausgeführt werden, daher muss die __init__-Methode der Klasse self.db = parent.db implementieren. Die Variable self.db kann dann verwendet werden, um NoSQL-Abfragen innerhalb der do_check-Methode auszuführen.

https://github.com/foospidy/DbDat/blob/master/plugins/mongodb/check_information_banner.py

clp-Prüfungstyp

Für clp-Prüfungen muss die Signatur der do_check-Methode sein: do_check(self, *results). clp-Prüfungen werden für IBM DB2-Datenbanken benötigt, damit der DB2-Befehlszeilenprozessor ausgeführt werden kann, um Informationen über die Datenbank zu erhalten. Dieser Prüfungstyp könnte jedoch auch verwendet werden, um beliebige Befehlszeilenbefehle auszuführen. Die gesamte Befehlszeilenausgabe kann aus der Variable results geparst werden, die an die do_check-Methode übergeben wird. Zusätzlich müssen Sie die Klassenmethode CMD definieren. Diese Variable ist eine Liste des Befehls und der zugehörigen Argumente.

https://github.com/foospidy/DbDat/blob/master/plugins/db2/check_privilege_group_entitlements.py

Die Kategorie-Variable

Jede Prüfung muss eine Kategorie haben, die mit der Variable CATEGORY angegeben wird. Die Kategorie ist eine Möglichkeit, Prüfungen zu organisieren. Mögliche Kategorien sind: Information, Configuration, Privilege und User. Geben Sie die Kategorie an, die für den Kontext der Prüfung am relevantesten ist.

Gliederung einer Prüfungsdatei

Dies ist ein grobes Beispiel, das das Muster einer Prüfungsdatei demonstriert:

root@kitploit:~
# (OPTIONAL): Add import statements, include any necessary modules to support this check
import helper

# (REQUIRED): Define class, the class must have the same name as its file name.
class check_configuration_evaluate_something():

  # (REQUIRED): Add documentation, provide information on this check as this will be displayed in the report.
	"""
	check_configuration_evaluate_something:
	Some description goes here!
	"""

  # (OPTIONAL): Add references, this is only comments in code, adding references is helpful to others.
  # References:
  # https://www.percona.com/blog/2012/12/28/auditing-login-attempts-in-mysql/
  # https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html

  # (REQUIRED): Add the standard set of variables 
	TITLE    = 'Client Password'
	CATEGORY = 'Configuration'
	TYPE     = 'configuration_file'
	SQL    	 = None
	
	verbose = False
	skip	= False
	result  = {}
	
	# (OPTIONAL): Add any custom variables specific to this check 
	custom_var = 'custom_val'
	
	
	# (REQUIRED): Define the do_check method, this is the actual check logic and is called by the main program.
	def do_check(self, *results):
	
		# (REQUIRED): check logic goes here, besure to set values for self.result['level'] and self.result['output']
		
		# Results from the SQL variable can be processed using:
		for rows in results:
			for row in rows:
		
			# (REQUIRED):
			# Always set the self.result['level'] and self.result['output'] variables before returning.
			if row[0] == 'bad':
				self.result['level']  = 'RED'
				self.result['output'] = 'Result is %s' % (row[0])
			elif row[0] == 'needs review':
				self.result['level']  = 'YELLOW'
				self.result['output'] = 'Result is %s' % (row[0])
			else:
				self.result['level']  = 'GREEN'
				self.result['output'] = 'Result is %s' % (row[0])
		
		# Always return self.result
		return self.result
	
	# (REQUIRED): at minimum the __init__ method should print the check being performed.
	def __init__(self, parent):
		print('Performing check: ' + self.TITLE)
		
		# get values from the parent calling class
		self.verbose = parent.verbose

Andere Datenbank-Sicherheitswerkzeuge

  • SQLMap
  • NoSQLMap
  • Audit CouchDB
  • MongoAudit
  • MSDAT
  • ODAT
Tool herunterladen