9.2 KiB
27017,27018 - Pentesting MongoDB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Основна інформація
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 server information"
- Шукати повністю відкриті mongodb сервери:
"mongodb server information" -"partially enabled"
- Тільки частково увімкнено auth:
"mongodb server information" "partially enabled"
Login
За замовчуванням 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 ID є 12-байтовими шістнадцятковими рядками:
Наприклад, ось як ми можемо розібрати фактичний Object ID, повернутий додатком: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 в десятковій системі = п’ятниця, 31 липня 2020 17:49:32
- 9fa6dc: Ідентифікатор машини
- 2500: Ідентифікатор процесу
- 314019: Інкрементний лічильник
З наведених елементів ідентифікатор машини залишиться незмінним, поки база даних працює на тій самій фізичній/віртуальній машині. Ідентифікатор процесу зміниться лише у разі перезапуску процесу MongoDB. Часова мітка буде оновлюватися щосекунди. Єдина проблема в тому, щоб вгадати Object ID, просто інкрементуючи значення лічильника та часової мітки, полягає в тому, що Mongo DB генерує Object ID та призначає Object ID на системному рівні.
Інструмент https://github.com/andresriancho/mongo-objectid-predict, отримавши початковий Object ID (ви можете створити обліковий запис і отримати початковий ID), повертає близько 1000 ймовірних Object ID, які могли бути призначені наступним об'єктам, тому вам просто потрібно їх брутфорсити.
Пост
Якщо ви root, ви можете змінити файл mongodb.conf, щоб не потрібно було вводити облікові дані (noauth = true) і увійти без облікових даних.
Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
Інсайти з хакінгу
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
Новини про хакінг в реальному часі
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
Останні оголошення
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на Discord і почніть співпрацювати з провідними хакерами вже сьогодні!
{% hint style="success" %}
Вчіться та практикуйте хакінг AWS:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте хакінг GCP: HackTricks Training GCP Red Team Expert (GRTE)
Підтримати HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.