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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
gha-lab-6904b2ccbe — مختبر أبحاث أمنية: إعادة إنتاج CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — حقن أوامر عبر github.head_ref في سير عمل pull_request_target (.github/workflows/pr.yml) | Kitploit
أدوات/GitHubGitHub/pvharmo2/gha-lab-6904b2ccbe
تحليل الثغرات الأمنيةالاستغلالالتعلم والتعليمموارد منسقة
GitHubpvharmo2/gha-lab-6904b2ccbe

gha-lab-6904b2ccbe

مختبر أبحاث أمنية: إعادة إنتاج CVE-2025-61584 (GHSA-9g7x-737f-5xpc) — حقن أوامر عبر github.head_ref في سير عمل pull_request_target (.github/workflows/pr.yml)

عرض المستودع
11منذ 20 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

أداة بحث آلية — ليست المشروع الأصلي.

هذا المستودع عبارة عن بيئة مختبرية مؤقتة أُنشئت بواسطة نظام آلي لرسالة ماجستير في جامعة لافال حول إعادة إنتاج ثغرات أمنية موثقة في سير عمل GitHub Actions. وهو لقطة حرفية من serverless-dns/serverless-dns عند الالتزام b0b1a1538aeb1991b5bc13dfe4e18e686913b12e (2025-04-26)، وأُعيد توزيعه بموجب ترخيص المشروع الأصلي نفسه، الذي يتضمن ملفه دون تغيير في هذه اللقطة.

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

للأسئلة أو الاعتراضات: [email protected]


إنه طائر، إنها طائرة، إنه... محلل DNS ذاتي الاستضافة بأسلوب Pi-hole

serverless-dns هو محلل DNS بدون خوادم (serverless) بأسلوب Pi-hole لحظر المحتوى، ويدعم DNS عبر HTTPS (DoH) وDNS عبر TLS (DoT). يعمل مباشرة على Cloudflare Workers، وDeno Deploy، وFastly Compute@Edge، و. الخطط المجانية لجميع هذه الخدمات يجب أن تكون كافية لتغطية حركة DNS لعشرة إلى عشرين جهازًا شهريًا.

Fly.io

محلل RethinkDNS

يشغّل RethinkDNS خادم serverless-dns في الإنتاج على هذه النقاط:

منصة السحابةمواقع الخوادمالبروتوكولالنطاقالاستخدام
⛅ Cloudflare Workers280+ (ping)DoHsky.rethinkdns.comالإعداد
🦕 Deno Deploy30+ (ping)DoHنسخة تجريبية خاصة
⏱️ Fastly Compute@Edge80+ (ping)DoHنسخة تجريبية خاصة
🪂 Fly.io30+ (ping)DoH وDoTmax.rethinkdns.comالإعداد

تستغرق المعالجة من جانب الخادم من 0 مللي ثانية (مللي ثانية) إلى 2 مللي ثانية (وسيط)، ويكون زمن الاستجابة من طرف إلى طرف (يختلف حسب المناطق والشبكات) بين 10 مللي ثانية و30 مللي ثانية (وسيط).

FOSS United 

محلل Rethink DNS على Fly.io برعاية FOSS United.

الاستضافة الذاتية

Cloudflare Workers هي أسهل منصة لإعداد serverless-dns:

Deploy to Cloudflare Workers

Deploy to Fastly

للحصول على إرشادات خطوة بخطوة، راجع:

المنصةالصعوبةبيئة التشغيلالتوثيق
⛅ Cloudflareسهلةv8 Isolatesالاستضافة على Cloudflare Workers
🦕 Deno.comمتوسطةDeno Isolatesالاستضافة على Deno.com
⏱️ Fastly Compute@EdgeسهلةFastly JSالاستضافة على Fastly Compute@Edge
🪂 Fly.ioصعبةNode MicroVMالاستضافة على Fly.io

لإعداد قوائم الحظر، قم بزيارة https://<my-domain>.tld/configure من متصفحك (يجب أن يُحمّل شيئًا مشابهًا لـصفحة الإعداد الخاصة بـ RethinkDNS).

للحصول على المساعدة أو الدعم، لا تتردد في فتح مشكلة أو إرسال تصحيح.


التطوير

OpenSSF Scorecard

الإعداد

Node:

root@kitploit:~
# navigate to work dir
cd /my/work/dir

# clone this repository
git clone https://github.com/serverless-dns/serverless-dns.git

# navigate to serverless-dns
cd ./serverless-dns

Node:

root@kitploit:~
# install node v22+ via nvm, if required
# https://github.com/nvm-sh/nvm#installing-and-updating
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install --lts

# download dependencies
npm i

# (optional) update dependencies
npm update

# run serverless-dns on node
./run n

# run a clinicjs.org profiler
./run n [cpu|fn|mem]

Deno:

root@kitploit:~
# install deno.land v2+
# https://github.com/denoland/deno/#install
curl -fsSL https://deno.land/install.sh | sh

# run serverless-dns on deno
./run d

Fastly:

root@kitploit:~
# install node v22+ via nvm, if required
# install the Fastly CLI
# https://developer.fastly.com/learning/tools/cli

# run serverless-dns on Fastly Compute@Edge
./run f

Wrangler:

root@kitploit:~
# install Cloudflare Workers (cli) aka Wrangler
# https://developers.cloudflare.com/workers/cli-wrangler/install-update
npm i wrangler --save-dev

# run serverless-dns on Cloudflare Workers (cli)
# Make sure to setup Wrangler first:
# https://developers.cloudflare.com/workers/cli-wrangler/authentication
./run w

# profile wrangler with Chrome DevTools
# blog.cloudflare.com/profiling-your-workers-with-wrangler

أسلوب الكود

تفرض الالتزامات في هذا المستودع دليل أسلوب JavaScript من Google (المرجع: .eslintrc.cjs). يوجد خطاف pre-commit في git يشغّل المدقق (eslint) والمنسق (prettier) على ملفات .js. استخدم git commit --no-verify لتجاوز هذا الخطاف.

تُفحص طلبات السحب أيضًا بحثًا عن مخالفات أسلوب الكود وتُصحح تلقائيًا حيثما أمكن.

متغيرات البيئة

قم بإعداد env.js إذا كنت بحاجة إلى تعديل الإعدادات الافتراضية. بالنسبة لـ Cloudflare Workers، قم بإعداد متغيرات البيئة في wrangler.toml بدلاً من ذلك. بالنسبة لـ Fastly Compute@Edge، قم بإعداد متغيرات البيئة في fastly.toml بدلاً من ذلك.

تدفق الطلبات

  1. تدفق الطلب/الاستجابة: العميل <-> src/server-[node|workers|deno] <-> doh.js <-> plugin.js
  2. تدفق plugin.js: user-op.js -> cache-resolver.js -> cc.js -> resolver.js

المصادقة

يدعم serverless-dns المصادقة باستخدام رمز أبجدي رقمي (bearer token) لكل من DoH وDoT. للحصول على رمز، msg-key (السر)، ألحق مخرجات hex(hmac-sha256(msg-key|domain.tld), msg) بمتغير البيئة ACCESS_KEYS بتنسيق csv. ملاحظة: msg مثبت حاليًا على sdns-public-auth-info.

  1. DoH: ضع msg-key في نهاية الطابع الكتلي (blockstamp)، هكذا: 1:1:4AIggAABEGAgAA:<msg-key> (هنا، 1 هو الإصدار، 1:4AIggAABEGAgAA هو الطابع الكتلي، <msg-key> هو سر المصادقة، و: هو الفاصل).
  2. DoT: ضع msg-key في نهاية SNI (اسم النطاق) الذي يحتوي على الطابع الكتلي: 1-4abcbaaaaeigaiaa-<msg-key> (هنا 1 هو الإصدار، 4abcbaaaaeigaiaa هو الطابع الكتلي، <msg-key> هو سر المصادقة، و- هو الفاصل).

إذا كان القصد هو استخدام المصادقة مع DoT أيضًا، اجعل msg-key أقصر (8 إلى 24 حرفًا)، لأن النطاقات الفرعية قد تكون بطول 63 حرفًا فقط في المجمل.

يمكنك إنشاء مفاتيح الوصول لنسختك من max.rethinkdns.com، هكذا:

root@kitploit:~
msgkey="ShortAlphanumericSecret"
domain="my-serverless-dns-domain.tld"
curl 'https://max.rethinkdns.com/genaccesskey?key='"$msgkey"'&dom='"$domain"
# output
# {"accesskey":["my-serverless-dns-domain.tld|deadbeefd3adb33fa2bb33fd3eadf084beef3b152beefdead49bbb2b33fdead83d3adbeefdeadb33f"],"context":"sdns-public-auth-info"}

السجلات والتحليلات

يمكن إعداد serverless-dns لرفع السجلات عبر Logpush من Cloudflare.

  1. قم بإعداد وظيفة Logpush:
    root@kitploit:~
    CF_ACCOUNT_ID=<hex-cloudflare-account-id>
    CF_API_KEY=<api-key-with-logs-edit-permission-at-account-level>
    R2_BUCKET=<r2-bucket-name>
    R2_ACCESS_KEY=<r2-access-key-for-the-bucket>
    R2_SECRET_KEY=<r2-secret-key-with-read-write-permissions>
    # optional, setup a filter such that only logs form this worker ends up being pushed; but if you
    # do not need a filter on Worker name (script-name), edit the "filter" field below accordingly.
    SCRIPT_NAME=<name-of-the-worker-as-in-wrangler-toml>
    # for more options, ref: developers.cloudflare.com/logs/get-started/api-configuration
    # Logpush API with cURL: developers.cloudflare.com/logs/tutorials/examples/example-logpush-curl
    # Available Logpull fields: developers.cloudflare.com/logs/reference/log-fields/account/workers_trace_events
    curl -s -X POST "https://api.cloudflare.com/client/v4/accounts/${CF_ACCOUNT_ID}/logpush/jobs" \
        -H "Authorization: Bearer ${CF_API_KEY}" \
        -H 'Content-Type: application/json' \
        -d '{
            "name": "dns-logpush",
            "logpull_options": "fields=EventTimestampMs,Outcome,Logs,ScriptName&timestamps=rfc3339",
            "destination_conf": "r2://'"$R2_BUCKET"'/{DATE}?access-key-id='"${R2_ACCESS_KEY}"'&secret-access-key='"${R2_SECRET_KEY}"'&account-id='"{$CF_ACCOUNT_ID}"',
            "dataset": "workers_trace_events",
            "filter": "{\"where\":{\"and\":[{\"key\":\"ScriptName\",\"operator\":\"contains\",\"value\":\"'"${SCRIPT_NAME}"'\"},{\"key\":\"Outcome\",\"operator\":\"eq\",\"value\":\"ok\"}]}}",
            "enabled": true,
            "frequency": "low"
        }'
    
  2. عيّن خاصية logpush = true في wrangler.toml، مما يتيح Logpush.
  3. (اختياري) متغير البيئة LOG_LEVEL = "logpush"، مما يرفع مستوى السجل بحيث يتم إصدار سجلات الطلبات وسجلات الأخطاء فقط.
  4. (اختياري) عيّن متغير البيئة LOGPUSH_SRC = "csv,of,subdomains"، مما يجعل log-pusher.js يصدر سجلات الطلبات فقط إذا كان hostname الخاص بـ Workers يحتوي على أحد النطاقات الفرعية.

يمكن استرجاع السجلات المنشورة إلى R2 إما باستخدام R2 Workers، أو R2 API، أو Logpush API.

تحليلات Workers، إذا تم تمكينها، تُدفع مقابل مفتاح سجل، lid، والذي إذا لم يُحدد يُعيّن إلى hostname للنشر serverless مع استبدال النقاط، .، بشرطات سفلية، _. يجب إعداد المصادقة عند الاستعلام عن التحليلات عبر API الذي يُرجع json؛ مثال: https://max.rethinkdns.com/1:<optional-stamp>:<msg-key>/analytics?t=<time-interval-in-mins>&f=<field-name>. الحقول الممكنة هي ip (عنوان IP للعميل)، qname (اسم استعلام DNS)، region (منطقة المحلل)، qtype (نوع استعلام DNS)، dom (النطاقات العلوية)، ansip (عناوين IP للإجابات)، وcc (رموز البلدان لعناوين IP للإجابات).

التقاط السجلات والتحليلات غير منفذ بعد لـ Fly وDeno Deploy.


ملاحظة حول بيئات التشغيل

لا يعرض Deno Deploy (السحابة) وDeno (بيئة التشغيل) نفس واجهة API (على سبيل المثال، يدعم Deno Deploy فقط مستمعي خوادم HTTP/S؛ بينما يدعم Deno TCP/UDP/TLS الخام بالإضافة إلى HTTP العادي وHTTP/S).

باستثناء Node، يستخدم serverless-dns مزودي DoH المعرّفين بواسطة متغيرات البيئة، CF_DNS_RESOLVER_URL / CF_DNS_RESOLVER_URL_2. على Node، مزود DNS الافتراضي هو 1.1.1.2 (المرجع) أو المحلل التكراري عند fdaa::3 عند التشغيل على Fly.io.

نقاط الدخول لـ Node وDeno هي src/server-node.js وsrc/server-deno.ts على التوالي، وكلاهما يستمع لاتصالات TCP عبر TLS وHTTP/S؛ بينما نقطة الدخول لـ Cloudflare Workers، التي تستمع فقط عبر HTTP (cli) أو عبر HTTP/S (الإنتاج)، هي src/server-workers.js؛ وبالنسبة لـ Fastly فهي src/server-fastly.js.

في الإعدادات المحلية (غير الإنتاجية) على Node، تُقرأ ملفات key (الخاص) وcert (السلسلة العامة)، افتراضيًا، من المسارات المعرّفة في متغيرات البيئة، TLS_KEY_PATH وTLS_CRT_PATH.

بينما في إعداد الإنتاج على Node (على Fly.io)، يجب إما تعيين TLS_OFFLOAD إلى true أو يجب أن تكون key وcert مشفّرتين بـ base64 في متغير البيئة TLS_CERTKEY (المرجع)، هكذا:

root@kitploit:~
# EITHER: offload tls to fly.io and set tls_offload to true
TLS_OFFLOAD="true"
# OR: base64 representation of both key (private) and cert (public chain)
TLS_CERTKEY="KEY=b64_key_content\nCRT=b64_cert_content"

بالنسبة لـ Deno، تُقرأ ملفات key وcert من المسارات المعرّفة في متغيرات البيئة، TLS_KEY_PATH وTLS_CRT_PATH (المرجع).

إقلاع العملية مختلف لكل بيئة من بيئات التشغيل هذه: بالنسبة لـ Node، يُدير src/core/node/config.js الإقلاع؛ بينما بالنسبة لـ Deno، فهو src/core/deno/config.ts، وبالنسبة لـ Workers فهو src/core/workers/config.js. يُنسق src/system.js بنمط النشر والاشتراك مرحلة الإقلاع بين الوحدات المختلفة.

على Node وDeno، يُدعم التخزين المؤقت لـ DNS داخل العملية بواسطة @serverless-dns/lfu-cache؛ أما Cloudflare Workers فيُدعم بواسطة كل من Cache Web API و ذاكرة التخزين المؤقت lfu داخل العملية. لتعطيل التخزين المؤقت تمامًا على المنصات الثلاث، عيّن متغير البيئة، PROFILE_DNS_RESOLVES=true.

السحابة

Cloudflare Workers وDeno Deploy مؤقتان، بمعنى أن "العملية" التي تخدم طلبات العملاء ليست طويلة العمر، وفي الواقع، قد يخدم طلبان متتاليان بواسطة isolates ("عمليات") مختلفين. Fastly Compute@Edge مؤقت أيضًا لكنه لا يستخدم isolates، بدلاً من ذلك تنشئ Fastly وتدمر sandbox من wasmtime لكل طلب. المحلل على Fly.io، الذي يشغّل Node، مدعوم بـأجهزة افتراضية دائمة وبالتالي فهو أطول عمرًا، مثل بيئات "serverfull" التقليدية.

بالنسبة لـ Deno Deploy، يتم تجميع قاعدة الكود في ملف جافاسكريبت واحد باستخدام deno bundle ثم يتم تسليمه إلى Deno.com.

تُعرَّف تكوينات Cloudflare Workers في وقت البناء ووقت التشغيل في wrangler.toml. يجمع Webpack5 الملفات في وحدة ESM ثم يرفعها Wrangler إلى Cloudflare.

تُعرَّف تكوينات Fastly Compute@Edge في وقت البناء ووقت التشغيل في fastly.toml. يجمع Webpack5 الملفات في وحدة ESM ثم يترجمها npx js-compute-runtime إلى WASM ويُعبأ وينشر لاحقًا إلى Fastly Compute@Edge باستخدام Fastly CLI.

بالنسبة لـ Fly.io، الذي يشغّل Node، تُعرَّف توجيهات وقت التشغيل في fly.toml (المستخدمة بواسطة أنواع النشر dev وlive)، بينما توجيهات النشر في node.Dockerfile. يقوم flyctl وفقًا لذلك بإعداد serverless-dns على البنية التحتية لـ Fly.io.

root@kitploit:~
# build and deploy for cloudflare workers.dev
npm run build
# usually, env-name is prod
npx wrangler publish [-e <env-name>]

# bundle, build, and deploy for fastly compute@edge
# developer.fastly.com/reference/cli/compute/publish
fastly compute publish

# build and deploy to fly.io
npm run build:fly
flyctl deploy --dockerfile node.Dockerfile --config <fly.toml> [-a <app-name>] [--image-label <some-uniq-label>]

بالنسبة للنشرات التي تُفرغ إنهاء TLS إلى Fly.io (نوع النشر B1)، تُعرَّف توجيهات وقت التشغيل بدلاً من ذلك في fly.tls.toml، الذي يُعد HTTP2 Cleartext وHTTP/1.1 على المنفذ 443، وDNS عبر TCP على المنفذ 853.

المرجع: github/workflows.

قوائم الحظر

يتم ضغط أكثر من 190 قائمة حظر في شجرة راديكس موجزة (Succinct Radix Trie) (استنادًا إلى تنفيذ Steve Hanov) مع تعديلات لتسريع البحث عن السلاسل (lookup) على حساب "الإيجاز". يتم إصدار إصدارات قوائم الحظر باستخدام طابع زمني unix (المعرّف في src/basicconfig.json الذي يُنزَّل بواسطة pre.sh)، والذي يُنشأ مرة واحدة كل أسبوع، لكننا نود إنشاءها يوميًا / كل ساعة، إذا أمكن انظر)، وتُستضاف على Cloudflare R2 (متغير البيئة: CF_BLOCKLIST_URL).

يقوم serverless-dns بتنزيل 3 ملفات قوائم حظر اللازمة لإعداد شجرة الراديكس أثناء إقلاع وقت التشغيل أو، ينزلها بشكل كسول، عند تقديم طلب DNS.

يجمع serverless-dns حوالي ~13 مليون إدخال (اعتبارًا من يناير 2023) من حوالي 190+ قائمة حظر. هذه معرّفة في مستودع serverless-dns/blocklists.

تنزيل الأداة