7.6 KiB
27017,27018 - Pentesting MongoDB
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.
Junte-se ao HackenProof Discord para se comunicar com hackers experientes e caçadores de bugs!
Insights de Hacking
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
Últimos Anúncios
Fique informado sobre os novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma
Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje!
Informações Básicas
MongoDB é um sistema de gerenciamento de banco de dados open source que utiliza um modelo de banco de dados orientado a documentos para lidar com diversas formas de dados. Ele oferece flexibilidade e escalabilidade para gerenciar dados não estruturados ou semi-estruturados em aplicações como análise de big data e gerenciamento de conteúdo. Porta padrão: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
Enumeração
Manual
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
Alguns comandos do 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
Automático
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Todos mongodb:
"mongodb server information"
- Pesquisar por servidores mongodb totalmente abertos:
"mongodb server information" -"partially enabled"
- Apenas autenticação parcialmente habilitada:
"mongodb server information" "partially enabled"
Login
Por padrão, o mongo não requer senha.
Admin é um banco de dados mongo comum.
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
O script nmap: mongodb-brute verificará se são necessárias credenciais.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Olhe dentro de /opt/bitnami/mongodb/mongodb.conf para saber se são necessárias credenciais:
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
Previsão de Objectid do Mongo
Exemplo daqui.
Os IDs de objeto do Mongo são strings hexadecimais de 12 bytes:
Por exemplo, aqui está como podemos dissecar um ID de objeto real retornado por uma aplicação: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 em decimal = Sexta-feira, 31 de Julho de 2020 17:49:32
- 9fa6dc: Identificador da Máquina
- 2500: ID do Processo
- 314019: Um contador incremental
Dos elementos acima, o identificador da máquina permanecerá o mesmo enquanto o banco de dados estiver rodando na mesma máquina física/virtual. O ID do processo só mudará se o processo do MongoDB for reiniciado. O timestamp será atualizado a cada segundo. O único desafio em adivinhar os IDs de objeto simplesmente incrementando os valores do contador e do timestamp é o fato de que o Mongo DB gera IDs de objeto e atribui IDs de objeto em um nível de sistema.
A ferramenta https://github.com/andresriancho/mongo-objectid-predict, dado um ID de objeto inicial (você pode criar uma conta e obter um ID inicial), retorna cerca de 1000 IDs de objeto prováveis que poderiam ter sido atribuídos aos próximos objetos, então você só precisa fazer brute force neles.
Post
Se você for root, pode modificar o arquivo mongodb.conf para que nenhuma credencial seja necessária (noauth = true) e fazer login sem credenciais.
Junte-se ao servidor HackenProof Discord para se comunicar com hackers experientes e caçadores de bugs!
Insights de Hacking
Engaje-se com conteúdo que mergulha na emoção e nos desafios do hacking
Notícias de Hack em Tempo Real
Mantenha-se atualizado com o mundo do hacking em ritmo acelerado através de notícias e insights em tempo real
Últimos Anúncios
Fique informado sobre os novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma
Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje!
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Suporte ao HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.