يحسم hook network ما إذا كانت وجهة الجلب من جهة الخادم آمنة من SSRF (طلب يمكن توجيهه إلى خدمات داخلية، أو بيانات تعريف السحابة، أو مضيفين خاصين). وهو المحرك الحتمي خلف التخصص network، ويمكنك تشغيله بنفسك.
التشغيل
مرّر كل وجهة عبر --url. يطبع hook كلمة واحدة لكل وجهة، يشرحها الجدول أدناه.
- وجهة واحدة
- عدة وجهات
npx lagune read network --url 'http://example.com/'
# => safe
npx lagune read network --url 'http://0x7f000001/'
# => private-target
كرّر --url لتقييم قائمة سماح أو قائمة حظر كاملة في استدعاء واحد، بحكم في كل سطر، بالترتيب.
npx lagune read network \
--url 'http://example.com/' \
--url 'http://[::1]/' \
--url 'http://allowed.com@evil.example/'
# => safe
# => private-target
# => parser-divergent
يحلّ المضيف كما تحلّه الشبكة، فلا تفلت الصيغ المرمّزة للعنوان الداخلي: الصيغ الست عشرية، والثمانية، والعشرية دون نقاط، والمختصرة، و IPv6، و IPv4-mapped، كلها تُقرأ private-target. وحيث تقرأ أداة تحقق متساهلة والجالب الحقيقي مضيفين مختلفين، يكون الحكم parser-divergent.
كيف تقرأ الحكم
| الحكم | المعنى |
|---|---|
safe | تتصل الوجهة بمضيف عام، وستقرأ أداة التحقق المتساهلة المضيف نفسه. |
private-target | يُحلّ المضيف إلى عنوان خاص، أو loopback، أو link-local، أو غير محدد، أو عنوان بيانات تعريف السحابة. |
parser-divergent | ستقرأ أداة التحقق النصية المتساهلة مضيفًا حقيقيًا مختلفًا عن الذي يتصل به الجالب. |
invalid url | لا يُحلَّل النص كعنوان URL، فلا يوجد ما يُجلب. |
لا يعني السماح إلا safe. وتعامل مع private-target و parser-divergent و invalid url جميعًا على أنها حظر.
خيارات CLI
| الخيار | القيمة | الوصف |
|---|---|---|
--url | عنوان URL أو مضيف | تحقق من وجهة واحدة. كرّره للتحقق من عدة وجهات، بحكم في كل سطر. |
يلزم --url واحد على الأقل. ولا تكون الوجهة أبدًا وسيطًا موضعيًا مجردًا، لذلك لا يمكن الخلط بينها وبين خيار.
تُمرَّر كل وجهة كقيمة خيار، ولا تُدمج في الأمر أبدًا. فالقيمة التي تحتوي على علامات اقتباس أو backticks تبقى خاملة ولا يمكنها الحقن في الصدفة. ضعها دائمًا بين علامتي اقتباس مفردتين حتى لا توسّعها الصدفة أولًا.
hook دالة نقية ولا يحلّ أسماء DNS أبدًا، لذلك تخرج ثغرتان وقت التشغيل عن نطاقه: DNS rebinding (اسم يُحلّ إلى عنوان عام عند الفحص وإلى عنوان داخلي عند الجلب) و سلاسل إعادة التوجيه (قفزة أولى تجتاز الفحص، ثم تعيد التوجيه إلى الداخل). أغلقهما بالحلّ مرة واحدة والاتصال بالعنوان الذي تم التحقق منه، وبرفض إعادة التوجيه. ويثبّت أسماء loopback المحجوزة (localhost وعائلة .localhost) على أنها داخلية دون أي استعلام، لكن أي اسم DNS آخر يُقرأ safe، لأن الجزم بأنه يُحلّ إلى الداخل يتطلب الحلّ: وقائمة السماح هي التي تحرس هذه الأسماء، وهي ما يتحقق منه هذا الفاحص.
هذا هو الفحص نفسه الذي يشغّله التخصص network لإثبات أن مرشّح الوجهات يصمد.
الأسئلة الشائعة
شغّل hook network. يقيّم وجهة الجلب ويعيد safe أو private-target أو parser-divergent أو invalid url. ولا يعني السماح إلا safe.
عنوان URL تقرؤه المحللات المختلفة بشكل مختلف، وهو أسلوب كلاسيكي لتجاوز الحماية من SSRF. وينبّه hook network إليه بدلًا من السماح به.
