GCPBucketBrute
نص برمجي لسرد دلاء Google Storage، وتحديد الصلاحيات المتاحة لك عليها، ومعرفة ما إذا كان يمكن تصعيد الصلاحيات فيها.
- يقبل هذا النص (اختيارياً) بيانات اعتماد حساب مستخدم/خدمة GCP وكلمة مفتاحية.
- ثم يتم إنشاء قائمة من التباديل (permutations) بناءً على تلك الكلمة المفتاحية، والتي سيتم استخدامها لفحص وجود دلاء Google Storage بهذه الأسماء.
- إذا تم توفير بيانات الاعتماد، فسيتم تنفيذ معظم عملية السرد بدون مصادقة، لكن بالنسبة لأي دلو يتم اكتشافه عبر السرد غير المصادق، سيحاول النص سرد أذونات الدلو باستخدام واجهة TestIamPermissions API مع بيانات الاعتماد المقدمة. يساعد هذا في العثور على الدلاء التي يمكن الوصول إليها عند المصادقة ولكن ليس بدونها.
- بغض النظر عن توفير بيانات الاعتماد أم لا، سيحاول النص بعد ذلك سرد أذونات الدلو باستخدام واجهة TestIamPermissions API بدون مصادقة. يعني هذا أنه إذا لم تدخل بيانات الاعتماد، فستظهر لك فقط الصلاحيات المتاحة للمستخدم غير المصادق، أما إذا أدخلت بيانات الاعتماد، فسترى الفرق بين الوصول المتاح للمستخدمين المصادقين وغير المصادقين.
- تحذير: إذا تم توفير بيانات الاعتماد، فقد يتم الكشف عن اسم المستخدم الخاص بك في سجلات الوصول لأي دلاء تكتشفها.
ملخص مختصر
- بالنظر إلى كلمة مفتاحية، يقوم هذا النص بسرد دلاء Google Storage بناءً على عدد من التباديل الناتجة عن الكلمة المفتاحية.
- ثم سيتم إخراج أي دلو يتم اكتشافه.
- ثم سيتم إخراج أي صلاحيات ممنوحة لك (إن وجدت) لأي دلو مكتشف.
- بعد ذلك سيتحقق النص من تلك الصلاحيات لاحتمال تصعيد الصلاحيات (storage.buckets.setIamPolicy) وسيخرج أي شيء مثير للاهتمام (مثل قابلية الإدراج العامة، قابلية الكتابة العامة، قابلية الإدراج للمصادقين، تصعيد الصلاحيات، إلخ).
المتطلبات
- Linux/OS X
- نظام Windows يعمل فقط للمسح غير المصادق. هناك مشكلة في كيفية تعامل النص مع وحدة subprocess حيث تفشل عند استخدام عميل Google مصادق.
- Python3
- Pip3
التثبيت
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. إذا كنت تستخدم حساب مستخدم، لا تقدم وسيط مصادقة. سيُطلب منك بعد ذلك إدخال رمز الوصول (access token) لحساب المستخدم الخاص بك للوصول إلى واجهات برمجة تطبيقات GCP. إذا كنت تريد المسح بدون مصادقة تماماً، استخدم الوسيط -u/--unauthenticated لإخفاء طلبات المصادقة.
- مسح الدلاء باستخدام الكلمة المفتاحية "test" بدون مصادقة تماماً:
python3 gcpbucketbrute.py -k test -u
- مسح الدلاء باستخدام الكلمة المفتاحية "test" مع المصادقة بحساب خدمة (المفتاح الخاص موجود في ../sa-priv-key.pem)، مع إخراج النتائج إلى ملف out.txt في الدليل الحالي:
python3 gcpbucketbrute.py -k test -f ../sa-priv-key.pem -o ./out.txt
- مسح الدلاء باستخدام الكلمة المفتاحية "test"، باستخدام رمز وصول لحساب مستخدم، وتشغيل 10 عمليات فرعية بدلاً من 5:
python3 gcpbucketbrute.py -k test -s 10
الوسائط المتاحة
-k/--keyword
- يستخدم هذا الوسيط لتحديد الكلمة المفتاحية التي سيتم إنشاء التباديل منها. سيتم البحث عن تلك التباديل في Google Storage.
--check
- هذا الوسيط حصري متبادل مع
-k/--keyword ويقبل سلسلة نصية واحدة. يتيح لك التحقق من صلاحياتك على دلو معين، بدلاً من إنشاء قائمة تباديل بناءً على كلمة مفتاحية. يمكن تكراره للتحقق من عدة دلاء. المصدر: @BBerastegui
--check-list
- هذا الوسيط حصري متبادل مع
-k/--keyword و --check. يسمح لك بالتحقق من صلاحيات قائمة من الدلاء في ملف. يجب أن تكون مدرجة سطراً واحداً لكل دلو في ملف نصي. للقراءة من الإدخال القياسي، مرر - كاسم الملف.
-s/--subprocesses