01/03/2024
شرح ثغرة (Reflected XSS(Rxss مع كود في backend وكيف اذا حقنت Paylod كيف يتنفذ في backend و طريقة اسغلالها و الحماية منهابسم الله نبدا الشرح حسنا هذا كود php المصاب بالثغرة:
# #
if(isset($_Get['name'])){
$name = $_GET['name'];
echo “Hello ” . $name . “!";
}
# #
هذا الكود يقوم بفحص إذا كانت المتغير $_GET['name موجودة في الطلب الذي تم إرساله إذا كانت موجودة يتم تعيين قيمتها إلى متغير $name و طبعا هذا الكود معرض ل Reflected Cross-Site Scripting أو ما يعرف بـ RXSS لأنه يُطبع قيمة المتغير $name بدون التعامل مع الحالات التي قد تحتوي على أكواد HTML أو JavaScript ضارة عندما يُدخل المستخدم بيانات تحتوي على أكواد تنفيذية سكربت خبيثة في حقل الاسم (name) يتم عرضها.
مثال تطبيقي: سوف نفرض انك في صفحة تكتب فيها اي اسم مثلا:
# #
name: VIRUS-X-001
# #
سوف يكون بهذا الشكل في URL:
# #
https://www.example.com/hello.php?name=VIRUS-X-001
# #
و سوف يطبع لك:
# #
Hello VIRUS-X-001
# #
اذا عملت بيدج سور سوف يكون بهذا الشكل:
# #
Hello VIRUS-X-001
# #
حسنا دعونا الان ندخل في كيفية استغلال الثغرة: اول نقوم بوضع البايلود التالي في حقل ادخال الاسم
# #
alert(1)
# #
سوف يكون بهذا الشكل:
# #
name: alert(1)
# #
و يكون بشكل هذا في URL:
# #
https://www.example.com/hello.php?name=alert(1)
# # #
سوف يطبع لك alert في الصفحة برقم 1 هذا اذا كان مصاب فعلا بالثغرة
ولو سويت بيدج سورس مرة ثانية سوف يبقا بهذا بشكل
# #
Hello alert(1)!
# #
طريقة الحماية منها يجب عليك تعديل الكود ليتضمن استخدام دالة htmlspecialchars() لتحويل الأحرف الخاصة في HTML إلى أكواد مشفرة وبذلك يتم منع تنفيذ الأكواد الضارة عند عرض البيانات على صفحة الويب الكود المعدل سيكون هكذا:
# #
# #
و باستخدام htmlspecialchars() يتم تحويل الأحرف الخاصة في HTML مثل هذو , &, ", و' إلى أكواد HTML entities آمنة مما يمنع تنفيذ السكربتات الضارة