
أداة آلية لتعداد قواعد بيانات NoSQL واستغلال تطبيقات الويب.
NoSQLMap هي أداة بايثون مفتوحة المصدر مصممة لتدقيق وأتمتة هجمات الحقن واستغلال نقاط الضعف في التهيئة الافتراضية لقواعد بيانات NoSQL وتطبيقات الويب التي تستخدم NoSQL، بهدف كشف أو نسخ البيانات من قاعدة البيانات.
تم تأليفها في الأصل بواسطة @tcsstool ويتم صيانتها حالياً بواسطة @codingo_. سُميت NoSQLMap تكريماً لأداة sqlmap الشهيرة لحقن SQL من برناردو داميل وميروسلاف ستامبار sqlmap. تستند مفاهيمها إلى عرض مينغ تشاو الممتاز في مؤتمر Defcon 21، "إساءة استخدام قواعد بيانات NoSQL".
عرض توضيحي لهجوم إدارة MongoDB باستخدام NoSQLMap

قاعدة بيانات NoSQL (في الأصل تشير إلى "غير SQL" أو "غير علائقية" أو "ليس فقط SQL") توفر آلية لتخزين واسترجاع البيانات التي تم تصميمها بوسائل أخرى غير العلاقات الجدولية المستخدمة في قواعد البيانات العلائقية. توجد هذه القواعد منذ أواخر ستينيات القرن الماضي، ولكن لم تحصل على اسم "NoSQL" حتى طفرة في شعبيتها في أوائل القرن الحادي والعشرين، بدافع من احتياجات شركات الويب 2.0 مثل Facebook وGoogle وAmazon.com. تُستخدم قواعد بيانات NoSQL بشكل متزايد في البيانات الضخمة وتطبيقات الويب في الوقت الفعلي. تُسمى أنظمة NoSQL أحياناً "ليس فقط SQL" للتأكيد على أنها قد تدعم لغات استعلام شبيهة بـ SQL.
حالياً، تركز ثغرات الأداة على MongoDB وCouchDB، ولكن تم التخطيط لدعم إضافي لمنصات NoSQL أخرى مثل Redis وCassandra في الإصدارات المستقبلية.
على نظام قائم على Debian أو Red Hat، يمكن تشغيل البرنامج النصي setup.sh كجذر لأتمتة تثبيت التبعيات الخاصة بـ NoSQLMap.
تختلف حسب الميزات المستخدمة:
هناك بعض المكتبات الأخرى المطلوبة التي يجب أن تتوفر في تثبيت بايثون العادي. قد تختلف تجربتك، تحقق من البرنامج النصي.
python setup.py install
بدلاً من ذلك، يمكنك بناء صورة Docker عن طريق إدخال:
docker build -t nosqlmap .
أو يمكنك استخدام Docker-compose لتشغيل Nosqlmap:
docker-compose build
docker-compose run nosqlmap
ابدأ بـ
python NoSQLMap
يستخدم NoSQLMap نظام قوائم لبناء الهجمات. عند بدء NoSQLMap، ستظهر لك القائمة الرئيسية:
1-Set options (do this first)
2-NoSQL DB Access Attacks
3-NoSQL Web App attacks
4-Scan for Anonymous MongoDB Access
x-Exit
شرح الخيارات:
1. Set target host/IP-The target web server (i.e. www.google.com) or MongoDB server you want to attack.
2. Set web app port-TCP port for the web application if a web application is the target.
3. Set URI Path-The portion of the URI containing the page name and any parameters but NOT the host name (e.g. /app/acct.php?acctid=102).
4. Set HTTP Request Method (GET/POST)-Set the request method to a GET or POST; Presently only GET is implemented but working on implementing POST requests exported from Burp.
5. Set my local Mongo/Shell IP-Set this option if attacking a MongoDB instance directly to the IP of a target Mongo installation to clone victim databases to or open Meterpreter shells to.
6. Set shell listener port-If opening Meterpreter shells, specify the port.
7. Load options file-Load a previously saved set of settings for 1-6.
8. Load options from saved Burp request-Parse a request saved from Burp Suite and populate the web application options.
9. Save options file-Save settings 1-6 for future use.
x. Back to main menu-Use this once the options are set to start your attacks.
بمجرد ضبط الخيارات، عد إلى القائمة الرئيسية واختر هجمات الوصول إلى قاعدة البيانات أو هجمات تطبيقات الويب حسب ما يناسب: إذا كنت تهاجم منفذ إدارة NoSQL أو تطبيق ويب. بقية الأداة تعتمد على "المعالج" وهي واضحة إلى حد ما، ولكن أرسل رسائل بريد إلكتروني إلى [email protected] أو ابحث عني على تويتر @codingo_ إذا كانت لديك أي أسئلة أو اقتراحات.
يتضمن هذا المستودع أيضاً تطبيق ويب معرض للثغرات بشكل متعمد لاختبار NoSQLMap. لتشغيل هذا التطبيق، تحتاج إلى تثبيت Docker. ثم يمكنك تشغيل الأوامر التالية من دليل /vuln_apps.
docker-compose build && docker-compose up
بمجرد اكتمال ذلك، يجب أن تتمكن من الوصول إلى التطبيق المعرض للثغرات عن طريق زيارة: https://127.0.0.1:8080/index.html
يمكن أيضاً برمجة واجهة سطر الأوامر. فيما يلي مثال لبرنامج نصي يستخدم NoSQLMap لكشف الثغرات في vuln_apps:
$ echo "1. Account Lookup (acct.php)"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/acct.php?acctid=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n
$ echo "2. User Data Lookup (userdata.php) - JavaScript Injection"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/userdata.php?usersearch=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n
$ echo "3. Order Data Lookup (orderdata.php) - JavaScript Injection"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/orderdata.php?ordersearch=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n