hacktricks/network-services-pentesting/27017-27018-mongodb.md
2024-03-29 19:49:46 +01:00

8.9 KiB
Raw Blame History

27017,27018 - Пентестинг MongoDB

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Приєднуйтесь до 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-байтні шістнадцяткові рядки:

http://techidiocy.com/_id-objectid-in-mongodb/

Наприклад, ось як ми можемо розібрати фактичний Object ID, повернутий додатком: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 у десятковому форматі = П'ятниця, 31 липня 2020 17:49:32
  2. 9fa6dc: Ідентифікатор машини
  3. 2500: Ідентифікатор процесу
  4. 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 та почніть співпрацювати з найкращими хакерами вже сьогодні!