MongoDB Penetrasyon Testi

NoSQL veri tabanı sistemleri arasında oldukça popüler olan MongoDB, klasik penetrasyon testi süreçlerinden biraz daha farklı yaklaşımları içermektedir. Özellikle MongoDB’yi kullanan web uygulamaları test edilirken standart yaklaşımlar yetersiz olacaktır. Bu konu üzerine daha önce hazırladığım MongoDB ve NoSQL Injection dökümanını okuyabilirsiniz.

1 – Metasploit MongoDB Auxiliary Modül

Penetrasyon Testi uzmanının olmaz ise olmazı Metasploit, mongodb için aux modülü bulundurmakta. Özellikle Network penatrasyonu testi sürecinde yapılan scanning işleminden sonra eğer MongoDB sunucuları tespit edilirse, username/password brute force deneme konusunda ümitsiz olmayın. Pek çok yapıda MongoDB’nin blank password ile kurulu olduğunu tecrübe etmiş bulunmaktayım.

msf > use auxiliary/scanner/mongodb/mongodb_login
msf auxiliary(mongodb_login) > show options 

Module options (auxiliary/scanner/mongodb/mongodb_login):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
   BLANK_PASSWORDS   false            no        Try blank passwords for all users
   BRUTEFORCE_SPEED  5                yes       How fast to bruteforce, from 0 to 5
   DB                admin            yes       Database to use
   DB_ALL_CREDS      false            no        Try each user/password couple stored in the current database
   DB_ALL_PASS       false            no        Add all passwords in the current database to the list
   DB_ALL_USERS      false            no        Add all users in the current database to the list
   PASSWORD                           no        A specific password to authenticate with
   PASS_FILE                          no        File containing passwords, one per line
   RHOSTS                             yes       The target address range or CIDR identifier
   RPORT             27017            yes       The target port
   STOP_ON_SUCCESS   false            yes       Stop guessing when a credential works for a host
   THREADS           1                yes       The number of concurrent threads
   USERNAME                           no        A specific username to authenticate as
   USERPASS_FILE                      no        File containing users and passwords separated by space, one pair per line
   USER_AS_PASS      false            no        Try the username as the password for all users
   USER_FILE                          no        File containing usernames, one per line
   VERBOSE           true             yes       Whether to print output for all attempts

Modül pek çok özellik barındırmakta. Hedef MongoDB sunucuna yapılacak deneme yanılmılma saldırıları için şifre ve username listesi belirleyebilmektesiniz.

2 – NoSQLMap

NoSQL sorguları, standart ilişkisel veri tabanı sorgularından çok farklıdır. Bu nedenle Mongo ile daha önce tecrübeniz yoksa NoSQLMap oldukça işinize yarayacaktır. MongoDB sunucusuna erişim imkanı sağladıktan sonra hedef sunucuda ki database ve collection’ları kendi yerel mongodb sunucunuza aktarabilmek gibi güzel özellikleri olan bu tool Python ile geliştirilmiştir ve açık kaynak kodludur.

Ayrıca MongoDB 2.2.4 öncesi versiyonlarda geçerli olan Authenticated Remote Code Execution zafiyetini kullanabilmektedir.

https://github.com/tcstool/nosqlmap

Güzel bir demo olan aşağıdaki youtube videosunu izlemenizi öneririm.