7.7 KiB
27017,27018 - Testowanie penetracyjne MongoDB
Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Dołącz do serwera HackenProof Discord, aby komunikować się z doświadczonymi hakerami i łowcami błędów!
Spostrzeżenia z Hakerstwa
Zanurz się w treściach dotyczących emocji i wyzwań hakerstwa
Aktualności z Hakerstwa na Żywo
Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i spostrzeżeniom na żywo
Najnowsze Ogłoszenia
Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platform
Dołącz do nas na Discordzie i zacznij współpracować z najlepszymi hakerami już dziś!
Podstawowe informacje
MongoDB to system zarządzania bazą danych typu open source, który wykorzystuje model bazy danych zorientowany na dokumenty do obsługi różnorodnych form danych. Oferuje elastyczność i skalowalność do zarządzania danymi niestrukturyzowanymi lub półstrukturyzowanymi w aplikacjach takich jak analiza danych wielkich zbiorów i zarządzanie treścią. Domyślny port: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
Wyliczanie
Ręczne
from pymongo import MongoClient
client = MongoClient(host, port, username=username, password=password)
client.server_info() #Basic info
#If you have admin access you can obtain more info
admin = client.admin
admin_info = admin.command("serverStatus")
cursor = client.list_databases()
for db in cursor:
print(db)
print(client[db["name"]].list_collection_names())
#If admin access, you could dump the database also
Niektóre polecenia MongoDB:
show dbs
use <db>
show collections
db.<collection>.find() #Dump the collection
db.<collection>.count() #Number of records of the collection
db.current.find({"username":"admin"}) #Find in current db the username admin
Automatyczne
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Wszystkie mongodb:
"informacje o serwerze mongodb"
- Wyszukaj pełne otwarte serwery mongodb:
"informacje o serwerze mongodb" -"częściowo włączone"
- Tylko częściowo włącz uwierzytelnianie:
"informacje o serwerze mongodb" "częściowo włączone"
Logowanie
Domyślnie mongo nie wymaga hasła.
Admin to powszechna baza danych mongo.
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
Skrypt nmap: mongodb-brute sprawdzi, czy wymagane są poświadczenia.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Atak brutalny
Sprawdź wewnątrz /opt/bitnami/mongodb/mongodb.conf, aby dowiedzieć się, czy wymagane są poświadczenia:
grep "noauth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#" #Not needed
grep "auth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#\|noauth" #Not needed
Przewidywanie Mongo Objectid
Przykład stąd.
Mongo Object IDs to 12-znakowe szesnastkowe ciągi:
Na przykład, tak możemy rozłożyć rzeczywiste ID obiektu zwrócone przez aplikację: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 w systemie dziesiętnym = piątek, 31 lipca 2020 17:49:32
- 9fa6dc: Identyfikator maszyny
- 2500: ID procesu
- 314019: Licznik inkrementacyjny
Spośród powyższych elementów, identyfikator maszyny pozostanie taki sam, dopóki baza danych działa na tej samej fizycznej/wirtualnej maszynie. ID procesu zmieni się tylko w przypadku ponownego uruchomienia procesu MongoDB. Znacznik czasu będzie aktualizowany co sekundę. Jedynym wyzwaniem w zgadywaniu ID obiektów poprzez po prostu inkrementowanie licznika i wartości znacznika czasu, jest fakt, że Mongo DB generuje ID obiektów i przypisuje ID obiektów na poziomie systemu.
Narzędzie https://github.com/andresriancho/mongo-objectid-predict, mając początkowe ID obiektu (możesz utworzyć konto i uzyskać początkowe ID), zwraca około 1000 prawdopodobnych ID obiektów, które mogłyby zostać przypisane do następnych obiektów, więc wystarczy je przetestować metodą bruteforce.
Post
Jeśli jesteś rootem, możesz zmodyfikować plik mongodb.conf, aby nie było wymagane hasło (noauth = true) i zalogować się bez uwierzytelnienia.
Dołącz do serwera HackenProof Discord, aby komunikować się z doświadczonymi hakerami i łowcami błędów!
Spojrzenie na Hacking
Zajmij się treściami, które zagłębiają się w emocje i wyzwania hackowania
Aktualności na Żywo o Hackingu
Bądź na bieżąco z szybkim tempem świata hackowania dzięki aktualnościom i spojrzeniom na żywo
Najnowsze Ogłoszenia
Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platformy
Dołącz do nas na Discordzie i zacznij współpracować z najlepszymi hakerami już dziś!
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.