# 27017,27018 - MongoDBのペンテスト
htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ!
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**ハッキングの洞察**\
ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく
**最新のアナウンス**\
最新のバグバウンティの開始や重要なプラットフォームのアップデートについての情報を入手する
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!
## 基本情報
**MongoDB**は、さまざまな形式のデータを処理するために**文書指向データベースモデル**を使用する**オープンソース**データベース管理システムです。ビッグデータ分析やコンテンツ管理などのアプリケーションで、非構造化または半構造化データを管理するための柔軟性と拡張性を提供します。
**デフォルトポート:** 27017、27018
```
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
```
## 列挙
### マニュアル
```python
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コマンド:**
```bash
show dbs
use
show collections
db..find() #Dump the collection
db..count() #Number of records of the collection
db.current.find({"username":"admin"}) #Find in current db the username admin
```
### 自動
```bash
nmap -sV --script "mongo* and default" -p 27017 #By default all the nmap mongo enumerate scripts are used
```
### Shodan
* すべてのmongodb: `"mongodb server information"`
* 完全に公開されたmongodbサーバーを検索: `"mongodb server information" -"partially enabled"`
* 認証が部分的に有効になっている場合: `"mongodb server information" "partially enabled"`
## ログイン
デフォルトではmongoはパスワードを必要としません。\
**Admin**は一般的なmongoデータベースです。
```bash
mongo
mongo :
mongo :/
mongo -u -p ''
```
nmapスクリプト:_**mongodb-brute**_は、認証情報が必要かどうかをチェックします。
```bash
nmap -n -sV --script mongodb-brute -p 27017
```
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mongo)
`/opt/bitnami/mongodb/mongodb.conf`を確認して、認証情報が必要かどうかを確認します:
```bash
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 Predict
例は[こちら](https://techkranti.com/idor-through-mongodb-object-ids-prediction/)から。
Mongo Object IDsは**12バイトの16進数**文字列です:
![http://techidiocy.com/_id-objectid-in-mongodb/](../.gitbook/assets/id-and-objectids-in-mongodb.png)
例えば、アプリケーションによって返された実際のObject IDを分解する方法は次のとおりです:5f2459ac9fa6dc2500314019
1. 5f2459ac: 1596217772を10進数で表すと = 2020年7月31日金曜日17時49分32秒
2. 9fa6dc: マシン識別子
3. 2500: プロセスID
4. 314019: 増分カウンタ
上記の要素のうち、マシン識別子はデータベースが同じ物理的/仮想マシンで実行されている限り変わらず、プロセスIDはMongoDBプロセスが再起動された場合のみ変更されます。タイムスタンプは毎秒更新されます。単純にカウンタとタイムスタンプの値を増やすことでObject IDを推測する唯一の課題は、Mongo DBがObject IDを生成し、システムレベルでObject IDを割り当てるという事実です。
ツール[https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict)は、開始Object ID(アカウントを作成して開始IDを取得できます)を指定すると、次のオブジェクトに割り当てられた可能性のある約1000のObject IDを返しますので、それらを総当たり攻撃する必要があります。
## Post
rootであれば**mongodb.conf**ファイルを**変更**して(_noauth = true_)認証情報が不要になり、**認証情報なしでログイン**できます。
***
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**ハッキングの洞察**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう
**最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけましょう
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。