Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cloudfoundry_uaa — CVE-2016-4468 | Kitploit
أدوات/GitHubGitHub/shanika04/cloudfoundry_uaa
المصادقة والترخيصأمن البنية التحتية السحابيةأمن السحابةDevSecOpsإدارة الهوية والوصول (IAM)أمن واجهات برمجة التطبيقات
GitHubshanika04/cloudfoundry_uaa

cloudfoundry_uaa

CVE-2016-4468

عرض المستودع
14منذ 5 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
# خادم مصادقة مستخدمي وحسابات Cloud Foundry (UAA)

Build Status Coverage Status

UAA هي خدمة إدارة هوية متعددة المستأجرين، تُستخدم في Cloud Foundry، ولكنها متاحة أيضًا كخادم OAuth2 مستقل. دورها الأساسي هو مزود OAuth2، حيث تُصدر رموزًا لتطبيقات العميل لاستخدامها عندما تتصرف نيابةً عن مستخدمي Cloud Foundry. يمكنها أيضًا مصادقة المستخدمين ببيانات اعتماد Cloud Foundry الخاصة بهم، ويمكن أن تعمل كخدمة SSO باستخدام تلك البيانات الاعتمادية (أو غيرها). لديها نقاط نهاية لإدارة حسابات المستخدمين وتسجيل عملاء OAuth2، بالإضافة إلى وظائف إدارية متنوعة أخرى.

الإحداثيات

  • الرموز: ملاحظة حول الرموز والنطاقات والصلاحيات
  • المنتدى الفني: القائمة البريدية cf-dev
  • الوثائق: docs/
  • توثيق API: UAA-APIs.rst
  • المواصفات: إطار عمل تفويض Oauth 2
  • LDAP: تكامل UAA مع LDAP

بدء سريع

المتطلبات:

  • Java 8

إذا نجح هذا فأنت جاهز:

$ git clone git://github.com/cloudfoundry/uaa.git
$ cd uaa
$ ./gradlew run

تعمل التطبيقات جميعها معًا على نفس المنفذ (8080) عبر /uaa و/app و/api.

ستكتب UAA السجلات إلى ملف باسم uaa.log يمكن العثور عليه باستخدام الأمر التالي:-

$ sudo find / -name uaa.log

والذي ستجده في مسار مشابه لما يلي:-

/private/var/folders/7v/518b18d97_3f4c8fzxphy6f8zcm51c/T/cargo/conf/logs/

النشر إلى Cloud Foundry

يمكنك أيضًا بناء التطبيق ودفعه إلى Cloud Foundry، على سبيل المثال. طريقتنا الموصى بها هي استخدام ملف manifest، لكن يمكنك القيام بكل شيء من سطر الأوامر.

$ ./gradlew :cloudfoundry-identity-uaa:war
$ cf push myuaa --no-start -m 512M -p uaa/build/libs/cloudfoundry-identity-uaa-2.3.2-SNAPSHOT.war 
$ cf set-env myuaa SPRING_PROFILES_ACTIVE default,hsqldb
$ cf set-env myuaa UAA_URL http://myuaa.<domain>
$ cf set-env myuaa LOGIN_URL http://myuaa.<domain>
$ cf set-env myuaa JBP_CONFIG_SPRING_AUTO_RECONFIGURATION '[enabled: false]'
$ cf set-env myuaa JBP_CONFIG_TOMCAT '{tomcat: { version: 7.0.+ }}'
$ cf start myuaa

في الخطوات أعلاه، استبدل:

  • myuaa باسم تطبيق فريد
  • 2.3.2-SNAPSHOT بملصق الإصدار المناسب من بنائك
  • <domain> هذا هو نطاق تطبيقك. سنقوم بتحليل هذا من بيئة النظام في المستقبل
  • يمكنك أيضًا تقديم manifest إعداد حيث يحتوي متغير البيئة UAA_CONFIG_YAML على yaml إعداد كامل.

عرض توضيحي لاستخدام سطر الأوامر على الخادم المحلي

أولاً، قم بتشغيل خادم UAA كما هو موضح أعلاه:

$ ./gradlew run

ثم افتح طرفية أخرى ومن المجلد الأساسي للمشروع، اطلب من نقطة نهاية تسجيل الدخول إخبارك عن النظام:

$ curl -H "Accept: application/json" localhost:8080/uaa/login
{
  "timestamp":"2012-03-28T18:25:49+0100",
  "commit_id":"111274e",
  "prompts":{"username":["text","Username"],
    "password":["password","Password"]
  }
}

ثم يمكنك محاولة تسجيل الدخول باستخدام جوهرة UAA ruby. تأكد من تثبيت ruby 1.9، ثم

$ gem install cf-uaac
$ uaac target http://localhost:8080/uaa
$ uaac token get marissa koala

(أو اترك اسم المستخدم / كلمة المرور فارغين ليتم سؤالك عنهما).

يقوم هذا بمصادقتك والحصول على رمز وصول من الخادم باستخدام منحة OAuth2 الضمنية، على غرار النهج المقصود لعميل مثل CF. يتم تخزين الرمز في ~/.uaac.yml، لذا اطلع على ذلك الملف واستخرج رمز الوصول لهدف cf الخاص بك (أو استخدم --verbose في سطر أوامر تسجيل الدخول أعلاه لرؤيته مسجلًا في وحدة التحكم الخاصة بك).

ثم يمكنك تسجيل الدخول كخادم موارد واسترداد تفاصيل الرمز:

$ uaac target http://localhost:8080/uaa
$ uaac token decode

يجب أن ترى اسم المستخدم الخاص بك ومعرف العميل لمنحة الرمز الأصلية على stdout، على سبيل المثال

  exp: 1355348409
  user_name: marissa
  scope: cloud_controller.read openid password.write scim.userids tokens.read tokens.write
  email: [email protected]
  aud: scim tokens openid cloud_controller password
  jti: ea2fac72-3f51-4c8f-a7a6-5ffc117af542
  user_id: ba14fea0-9d87-4f0c-b59e-32aaa8eb1434
  client_id: cf

تشغيل النظام المحلي مقابل إعدادات MySQL وPostgreSQL الافتراضية (ومعلومات سكربت ترحيل Flyway)

$ ./gradlew -Dspring.profiles.active=default,mysql run

يفترض هذا الأمر وجود قاعدة بيانات MySQL متاحة بالإعدادات الافتراضية للوصول وسيستجيب لإعدادات JDBC التالية.

driver = 'org.mariadb.jdbc.Driver'
url = 'jdbc:mysql://localhost:3306/uaa'
user = 'root'
password = 'changeme'
schemas = ['uaa']

وبطريقة مماثلة، إذا نفذت الأمر

$ ./gradlew -Dspring.profiles.active=default,postgresql run

فإنه يستخدم الإعدادات المعرفة على النحو التالي

driver = 'org.postgresql.Driver'
url = 'jdbc:postgresql:uaa'
user = 'root'
password = 'changeme'

هذه الإعدادات مكررة في مكانين لتكامل Gradle. وهي معرّفة كقيم افتراضية في ملفات إعداد Spring XML كما هي معرّفة في ملف build.gradle الرئيسي. والسبب في وجودها في ملف بناء Gradle هو أنه أثناء تنفيذ Gradle يتم دائمًا تنفيذ مهمة flywayClean قبل تشغيل تطبيق UAA. إذا كنت لا ترغب في تنظيف قاعدة البيانات، يمكنك تعريف المتغير

-Dflyway.clean=false

كجزء من سطر الأوامر الخاص بك. يؤدي هذا إلى تعطيل مهمة flywayClean في سكربت gradle. طريقة أخرى لتعطيل flywayClean هي عدم تحديد ملفات التعريف spring في سطر الأوامر، ولكن تعيين ملفات التعريف في ملفي uaa.yml وlogin.yml.

عرض توضيحي لاستخدام سطر الأوامر على run.pivotal.io

يجب أن يعمل نفس مثال سطر الأوامر مع UAA قيد التشغيل على run.pivotal.io (باستثناء جزء فك ترميز الرمز لأنك لن تمتلك سر العميل). في هذه الحالة، لا حاجة لتشغيل خادم uaa محلي، لذا ببساطة اطلب من نقطة نهاية تسجيل الدخول الخارجية إخبارك عن النظام:

$ curl -H "Accept: application/json" login.run.pivotal.io
{
  "prompts":{"username":["text","Username"],
    "password":["password","Password"]
  }
}

يمكنك بعد ذلك محاولة تسجيل الدخول باستخدام جوهرة UAA ruby. تأكد من تثبيت ruby 1.9، ثم

$ gem install cf-uaac
$ uaac target uaa.run.pivotal.io
$ uaac token get [yourusername] [yourpassword]

(أو اترك اسم المستخدم / كلمة المرور فارغين ليتم سؤالك عنهما).

يقوم هذا بمصادقتك والحصول على رمز وصول من الخادم باستخدام منحة OAuth2 الضمنية، نفس ما يستخدمه عميل مثل CF.

اختبارات التكامل

يمكنك تشغيل اختبارات التكامل باستخدام

$ ./gradlew integrationTest

سيؤدي ذلك إلى تشغيل اختبارات التكامل ضد خادم uaa يعمل في مثيل Apache Tomcat محلي، لذلك على سبيل المثال يتم تعيين عنوان الخدمة إلى http://localhost:8080/uaa (افتراضيًا).

يمكنك توجيه CLOUD_FOUNDRY_CONFIG_PATH لالتقاط ملف uaa.yml حيث يمكن تغيير عناوين URL و(إذا كان مناسبًا) تعيين جذر السياق لتشغيل الخادم (انظر أدناه لمزيد من التفاصيل حول ذلك).

إعداد YAML مخصص

لتعديل معاملات وقت التشغيل يمكنك توفير ملف uaa.yml، على سبيل المثال

$ cat > /tmp/config/uaa.yml
uaa:
  host: uaa.appcloud21.dev.mozycloud
  test:
    username: [email protected] # defaults to [email protected]
    password: changeme
    email: [email protected]

ثم من uaa/uaa

$ CLOUD_FOUNDRY_CONFIG_PATH=/tmp/config ./gradlew test

يبحث تطبيق الويب عن محتوى Yaml في المواقع التالية (الإدخالات اللاحقة تتجاوز الإدخالات السابقة) عند بدء التشغيل.

classpath:uaa.yml
file:${CLOUD_FOUNDRY_CONFIG_PATH}/uaa.yml
file:${UAA_CONFIG_FILE}
${UAA_CONFIG_URL}
System.getEnv('UAA_CONFIG_YAML') -> متغير بيئة، إذا تم تعيينه يجب أن يحتوي على Yaml صالح

على سبيل المثال، لنشر UAA كتطبيق Cloud Foundry، يمكنك توفير manifest تطبيق مثل

تنزيل الأداة