8.9 KiB
27017,27018 - Пентестинг MongoDB
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!
Інші способи підтримки HackTricks:
- Якщо ви хочете побачити вашу компанію в рекламі на HackTricks або завантажити HackTricks у PDF Перевірте ПЛАНИ ПІДПИСКИ!
- Отримайте офіційний PEASS & HackTricks мерч
- Відкрийте для себе Сім'ю PEASS, нашу колекцію ексклюзивних NFT
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами на Twitter 🐦 @carlospolopm.
- Поділіться своїми хакерськими трюками, надсилайте PR до HackTricks та HackTricks Cloud репозиторіїв GitHub.
Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Інсайти щодо Хакінгу
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
Новини про Хакінг у Реальному Часі
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
Останні Оголошення
Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи
Приєднуйтесь до нас на Discord та почніть співпрацювати з топовими хакерами вже сьогодні!
Основна Інформація
MongoDB - це система управління базами даних з відкритим вихідним кодом, яка використовує модель бази даних, орієнтовану на документи, для обробки різних форм даних. Вона пропонує гнучкість та масштабованість для управління неструктурованими або напівструктурованими даними в застосунках, таких як аналітика великих даних та управління контентом. Порт за замовчуванням: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
Перелік
Вручну
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
Деякі команди 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
Автоматичний
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Усі mongodb:
"інформація про сервер mongodb"
- Пошук повністю відкритих серверів mongodb:
"інформація про сервер mongodb" -"частково увімкнено"
- Тільки частково увімкнена автентифікація:
"інформація про сервер mongodb" "частково увімкнено"
Вхід
За замовчуванням mongo не потребує пароля.
Admin - це поширена база даних mongo.
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
Скрипт nmap: mongodb-brute перевірить, чи потрібні облікові дані.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Перегляньте /opt/bitnami/mongodb/mongodb.conf, щоб дізнатися, чи потрібні облікові дані:
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
Прогнозування Mongo Objectid
Приклад звідси.
Mongo Object IDs - це 12-байтні шістнадцяткові рядки:
Наприклад, ось як ми можемо розібрати фактичний Object ID, повернутий додатком: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 у десятковому форматі = П'ятниця, 31 липня 2020 17:49:32
- 9fa6dc: Ідентифікатор машини
- 2500: Ідентифікатор процесу
- 314019: Інкрементний лічильник
З перелічених вище елементів ідентифікатор машини залишиться таким самим, доки база даних працює на тій самій фізичній/віртуальній машині. Ідентифікатор процесу зміниться лише у випадку перезапуску процесу MongoDB. Мітка часу буде оновлюватися кожну секунду. Єдина складність у вгадуванні Object IDs шляхом простого інкрементування значень лічильника та мітки часу полягає в тому, що Mongo DB генерує Object IDs та призначає їх на рівні системи.
Інструмент https://github.com/andresriancho/mongo-objectid-predict, отримавши початковий Object ID (ви можете створити обліковий запис та отримати початковий ID), повертає приблизно 1000 ймовірних Object IDs, які можуть бути призначені наступним об'єктам, тому вам просто потрібно їх перебрати.
Повідомлення
Якщо ви користувач root, ви можете змінити файл mongodb.conf, щоб не потрібні були облікові дані (noauth = true) та увійти без облікових даних.
Приєднуйтесь до HackenProof Discord, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Інсайти щодо Хакінгу
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
Новини про Хакінг у Реальному Часі
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
Останні Оголошення
Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи
Приєднуйтесь до нас на Discord та почніть співпрацювати з найкращими хакерами вже сьогодні!