
يتحقق من جميع المشرفين على جميع حزم NPM و Pypi بحثًا عن حزم قابلة للاختطاف عبر إعادة تسجيل النطاقات
تفحص هذه الأداة كل مُشرف (maintainer) في كل حزمة داخل سجلّي NPM و Python Pypi بحثًا عن نطاقات غير مسجّلة أو سجلات MX غير مسجّلة على تلك النطاقات. إذا كان النطاق غير مسجّل، يمكنك الاستيلاء على النطاق وبدء إعادة تعيين كلمة المرور للحساب إذا لم يكن مفعّلًا فيه المصادقة الثنائية (2FA). وهذا يتيح لك اختطاف الحزمة والقيام بكل ما تريد بها.
يُرجى عدم استخدامه لأغراض غير قانونية، واستخدامه فقط لفحص الحزم وإرسالها إلى برامج مكافآت اكتشاف الثغرات (bug bounty).
تواصلت مع فريق أمان NPM بشأن هذا الأمر، لكنهم غير مهتمين بهذا النوع من الثغرات.
يُرجى أيضًا ملاحظة أن المُشرفين الذين تُعيدهم الواجهة البرمجية (API) لا يعكسون دائمًا المُشرفين الفعليين، لكنك قد تحظى بالحظ أحيانًا.
نزّل فهرس الحزم أولًا! قد يستغرق هذا وقتًا طويلًا لأن الخادم بطيء للغاية (يستغرق أكثر من 30 دقيقة):
wget https://skimdb.npmjs.com/registry/_all_docs
بعد ذلك، شغّل الأداة ببساطة باستخدام ./hijagger npm. لرؤية جميع الخيارات استخدم مفتاح --help. يتم حفظ المخرجات تلقائيًا أيضًا في output.txt. على الأرجح ستستغرق هذه الأداة عدة أيام بسبب العدد الكبير من الحزم.
للعثور بسهولة على الإصابات (hits) في المخرجات، استخدم grep بحثًا عن HIT. يعتمد التلوين على عدد التنزيلات خلال العام الأخير للحزمة.
تقوم الأداة بالكثير من طلبات DNS و whois، لذا أقترح تشغيلها من خادم مخصص لتجنّب خطر حظر عنوان IP الخاص بك.
يعمل هذا الوضع تمامًا مثل وضع NPM، لكن واجهة pypi البرمجية (API) لا تُرجع عدد التنزيلات للحزمة. هذه البيانات متاحة فقط عبر Google BigQuery، لكن هذا يعقّد الأمور كثيرًا، لذلك لا يتم تطبيق عدّادات التنزيلات والألوان المبنية على التنزيلات على حزم Pypi.
./hijagger pypi