8.4 KiB
27017,27018 - MongoDBのペンテスト
htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- ハッキングトリックを共有するには、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出してください。
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 server information"
- 完全に公開されたmongodbサーバーを検索:
"mongodb server information" -"partially enabled"
- 認証が部分的に有効になっている場合:
"mongodb server information" "partially enabled"
ログイン
デフォルトでは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 Predict
例はこちらから。
Mongo Object IDsは12バイトの16進数文字列です:
例えば、アプリケーションによって返された実際のObject IDを分解する方法は次のとおりです:5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772を10進数で表すと = 2020年7月31日金曜日17時49分32秒
- 9fa6dc: マシン識別子
- 2500: プロセスID
- 314019: 増分カウンタ
上記の要素のうち、マシン識別子はデータベースが同じ物理的/仮想マシンで実行されている限り変わらず、プロセスIDはMongoDBプロセスが再起動された場合のみ変更されます。タイムスタンプは毎秒更新されます。単純にカウンタとタイムスタンプの値を増やすことでObject IDを推測する唯一の課題は、Mongo DBがObject IDを生成し、システムレベルでObject IDを割り当てるという事実です。
ツールhttps://github.com/andresriancho/mongo-objectid-predictは、開始Object ID(アカウントを作成して開始IDを取得できます)を指定すると、次のオブジェクトに割り当てられた可能性のある約1000のObject IDを返しますので、それらを総当たり攻撃する必要があります。
Post
rootであればmongodb.confファイルを変更して(noauth = true)認証情報が不要になり、認証情報なしでログインできます。
HackenProof Discordサーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
ハッキングの洞察
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
リアルタイムハックニュース
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう
最新の発表
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**Discord**に参加して、今日からトップハッカーと協力を始めましょう!
**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを手に入れましょう
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つけましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローしてください。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。