Hooks

hook network: قيّم عناوين URL ضد SSRF

قيّم وجهة جلب واحدة أو أكثر ضد SSRF، مباشرة من سطر الأوامر.

يحسم hook network ما إذا كانت وجهة الجلب من جهة الخادم آمنة من SSRF (طلب يمكن توجيهه إلى خدمات داخلية، أو بيانات تعريف السحابة، أو مضيفين خاصين). وهو المحرك الحتمي خلف التخصص network، ويمكنك تشغيله بنفسك.

التشغيل​

مرّر كل وجهة عبر --url. يطبع hook كلمة واحدة لكل وجهة، يشرحها الجدول أدناه.

npx lagune read network --url 'http://example.com/'
# => safe

npx lagune read network --url 'http://0x7f000001/'
# => private-target

يحلّ المضيف كما تحلّه الشبكة، فلا تفلت الصيغ المرمّزة للعنوان الداخلي: الصيغ الست عشرية، والثمانية، والعشرية دون نقاط، والمختصرة، و 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 إليه بدلًا من السماح به.