GCPBucketBrute
برنامج نصي لتعداد مجموعات تخزين Google، وتحديد إمكانية الوصول إليها، وتحديد ما إذا كان من الممكن تصعيد امتيازاتها.
- يقبل هذا النص البرمجي (اختياريًا) بيانات اعتماد حساب المستخدم/الخدمة في Google Cloud Platform وكلمة رئيسية.
- بعد ذلك، سيتم إنشاء قائمة بالتباديل من تلك الكلمة الرئيسية والتي سيتم استخدامها بعد ذلك للبحث عن وجود مجموعات تخزين Google بهذه الأسماء.
- إذا تم توفير بيانات الاعتماد، فسيستمر تنفيذ معظم التعداد دون مصادقة، ولكن بالنسبة لأي مجموعة يتم اكتشافها عبر التعداد غير المصادق، فستحاول تعداد أذونات الحاوية باستخدام TestIamPermissions API مع بيانات الاعتماد المقدمة. سيساعد هذا في العثور على المجموعات التي يمكن الوصول إليها أثناء المصادقة، ولكن ليس أثناء عدم المصادقة.
- بغض النظر عما إذا تم توفير بيانات الاعتماد أم لا، سيحاول البرنامج النصي بعد ذلك تعداد أذونات المجموعة باستخدام TestIamPermissions API أثناء عدم المصادقة. وهذا يعني أنه إذا لم تقم بإدخال بيانات الاعتماد، فلن تظهر لك سوى الامتيازات التي يتمتع بها المستخدم غير المصادق عليه، ولكن إذا قمت بإدخال بيانات الاعتماد، فسترى مدى الوصول الذي يتمتع به المستخدمون الذين تمت مصادقتهم مقارنة بالمستخدمين غير المصادقين.
- تحذير: إذا تم توفير بيانات الاعتماد، فيمكن الكشف عن اسم المستخدم الخاص بك في سجلات الوصول لأي مجموعات تكتشفها.
تل؛ ملخص الدكتور
- بالنظر إلى كلمة رئيسية، يقوم هذا البرنامج النصي بتعداد مجموعات تخزين Google بناءً على عدد من التباديل التي تم إنشاؤها من الكلمة الرئيسية.
- وبعد ذلك، سيتم إخراج أي دلو تم اكتشافه.
- بعد ذلك، سيتم إخراج أي أذونات تم منحها لك (إن وجدت) لأي حاوية تم اكتشافها.
- بعد ذلك، سيتحقق البرنامج النصي من هذه الامتيازات لتصعيد الامتيازات (storage.buckets.setIamPolicy) وسيخرج أي شيء مثير للاهتمام (مثل القائمة العامة، والقابلة للكتابة علنًا، والقابلة للمصادقة، وتصعيد الامتيازات، وما إلى ذلك).
متطلبات
- لينكس/OS X
- يعمل Windows فقط لعمليات الفحص غير المصادق عليها. هناك خطأ ما في كيفية استخدام البرنامج النصي لوحدة العملية الفرعية حيث يفشل عند استخدام عميل Google تمت مصادقته.
- بايثون3
- النقطة3
تثبيت
-
git clone https://github.com/RhinoSecurityLabs/GCPBucketBrute.git
-
cd GCPBucketBrute/
-
pip3 install -r requirements.txt
أو python3 -m pip install -r requirements.txt
الاستخدام
أولاً، حدد نوع المصادقة التي تريد استخدامها للتعداد بين حساب مستخدم أو حساب خدمة أو غير مصادق عليه. إذا كنت تستخدم حساب خدمة، فقم بتوفير مسار الملف إلى المفتاح الخاص عبر الوسيطة -f
/ --service-account-credential-file-path
. إذا كنت تستخدم حساب مستخدم، فلا تقدم وسيطة مصادقة. سيُطلب منك بعد ذلك إدخال رمز الوصول الخاص بحساب المستخدم الخاص بك للوصول إلى واجهات برمجة تطبيقات GCP. إذا كنت تريد إجراء فحص غير مصادق عليه تمامًا، فقم بتمرير الوسيطة -u
/ --unauthenticated
لإخفاء مطالبات المصادقة.
- قم بالبحث عن المجموعات باستخدام الكلمة الأساسية "اختبار" بينما لم تتم مصادقتها تمامًا:
python3 gcpbucketbrute.py -k test -u
- قم بالبحث عن المجموعات باستخدام الكلمة الأساسية "اختبار" أثناء المصادقة باستخدام حساب الخدمة (المفتاح الخاص المخزن في ../sa-priv-key.pem)، وإخراج النتائج إلى out.txt في الدليل الحالي:
python3 gcpbucketbrute.py -k test -f ../sa-priv-key.pem -o ./out.txt
- قم بالبحث عن المجموعات باستخدام الكلمة الأساسية "اختبار"، باستخدام رمز الوصول إلى حساب المستخدم، الذي يعمل مع 10 عمليات فرعية بدلاً من 5:
python3 gcpbucketbrute.py -k test -s 10
الحجج المتاحة
-
-k
/ --keyword
- يتم استخدام هذه الوسيطة لتحديد الكلمة الأساسية التي سيتم استخدامها لإنشاء التباديلات. هذه التباديل هي ما سيتم البحث عنه في Google Storage.
-
--check
- هذه الوسيطة متنافية مع
-k
/ --keyword
وتقبل سلسلة واحدة. فهو يسمح لك بالتحقق من أذوناتك في مجموعة معينة، بدلاً من إنشاء قائمة من التباديل بناءً على كلمة رئيسية. قد يتم تكرار ذلك للتحقق من عدة مجموعات. الائتمان:BBerastegui
-
--check-list
- هذه الوسيطة متنافية مع
-k
/ --keyword
و --check
. يسمح لك بالتحقق من أذونات قائمة المجموعات الموجودة في الملف. يجب أن يتم إدراجها بمعدل واحد لكل سطر في ملف نصي. للقراءة من الإدخال القياسي، قم بتمرير -
كاسم الملف.
-
-s
/ --subprocesses
- تحدد هذه الوسيطة عدد العمليات الفرعية التي سيتم استخدامها لتعداد الجرافة. القيمة الافتراضية هي 5، وكلما زادت هذه القيمة، أصبح التعداد أسرع، ولكن طلباتك في الثانية إلى Google ستزداد. هذه هي في الأساس سلاسل عمليات، لكن البرنامج النصي يستخدم عمليات فرعية بدلاً من سلاسل العمليات للتنفيذ المتوازي.
-
-f
/ --service-account-credential-file-path
- هذه الوسيطة هي المكان الذي تحدد فيه المسار إلى ملف المفتاح الخاص لحساب خدمة GCP الذي تريد استخدامه للمصادقة على Google Storage باستخدامه. هذا اختياري. إذا كنت تريد استخدام رمز وصول بدلاً من ذلك، فاحذف هذه الوسيطة وستتم مطالبتك بالرمز المميز حتى لا يتم حفظه في سجل سطر الأوامر الخاص بك. مزيد من المعلومات هنا: https://google-auth.readthedocs.io/en/latest/user-guide.html#service-account-private-key-files وهنا: https://google-auth.readthedocs.io/ ar/latest/user-guide.html#user-credentials
-
-u
/ --unauthenticated
- تفرض هذه الوسيطة تعدادًا غير مصادق عليه. باستخدام هذه العلامة، لن تتم مطالبتك ببيانات الاعتماد ولن يتم التحقق من المجموعات الصالحة بحثًا عن الأذونات المصادق عليها.
-
-o
/ --out-file
- تتيح لك هذه الوسيطة تحديد مسار ملف (نسبي أو مطلق) إلى ملف سجل لإخراج النتائج إليه. سيتم إنشاء الملف إذا لم يكن موجودًا بالفعل وسيتم إلحاقه به إذا كان موجودًا بالفعل.
-
-w
/ --wordlist
- تسمح لك هذه الوسيطة بتحديد ملف إدخال قائمة الكلمات.