JSON Web Token attacks (JWT)
بسم الله والصلاة والسلام على رسول الله
Now we are gonna talk about JSON Web Tokens so let’s start
→ focus with me ..
What is JSON Web tokens ?
هي طريقة لارسال البيانات من السيرفر الي المستخدم بصيغة امنة عن طريق استخدام البصمة الامنة حيث يتم تشفير البيانات قبل ارسالها واضافة هذا التشفير اليها وعند ارسال هذه البيانات الي السيرفر مرة اخري يتم فك التشفيرثم يتم التحقق من صحة البيانات
وبشكل نظري هي تستخدم لنقل اي بيانات لاكن الشائع انها تستخدم في
- Authentication
- Session handling
- Access control mechanisms
JSON Web Token format
Header.Payload.Signature
يتكون من ثلاثة اجزاء ويكون بعد كل علامة (.) جزء
- Header
- Payload
- Signature
What is JSON Web Token Header
eyJraWQiOiI5MTM2ZGRiMy1jYjBhLTRhMTktYTA3ZS1lYWRmNWE0NGM4YjUiLCJhbGciOiJSUzI1NiJ9eyJraWQiOiI5MTM2ZGRiMy1jYjBhLTRhMTktYTA3ZS1lYWRmNWE0NGM4YjUiLCJhbGciOiJSUzI1NiJ9
هو الجزء الي باللون الاحمر وهو الجزء اليي قبل اول علامة (.) ويتكون من معلومات وصفية ومعملها انكودينج مثل معلومات عن خوارزمية التشفير
By using BASE64 encoding & URL encoding
ودا شكلة بعد عمل الديكودينج
{"kid":"9136ddb3-cb0a-4a19-a07e-eadf5a44c8b5","alg":"RS256"}
What is JSON Web Token Payload
eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTY0ODAzNzE2NCwibmFtZSI6IkNhcmxvcyBNb250b3lhIiwic3ViIjoiY2FybG9zIiwicm9sZSI6ImJsb2dfYXV0aG9yIiwiZW1haWwiOiJjYXJsb3NAY2FybG9zLW1vbnRveWEubmV0IiwiaWF0IjoxNTE2MjM5MDIyfQ
هو الجزء اليي باللون الازرق اليي بين اول وتاني علامة (.) وهو عبارة عن المعلومات المراد ارسالها من المستخدم الي السيرفر ومعملة انكودينج
By using BASE64 encoding & URL encoding
ودا شكلة بعد عمل الديكودينج
{"iss":"portswigger","exp":1648037164,"name":"Carlos Montoya","sub":"carlos","role":"blog_author","email":"carlos@carlos-montoya.net","iat":1516239022}
What is JSON Web Token Signature
SYZBPIBg2CRjXAJ8vCER0LA_ENjII1JakvNQoP-Hw6GG1zfl4JyngsZReIfqRvIAEi5L4HV0q7_9qGhQZvy9ZdxEJbwTxRs_6Lb-fZTDpW6lKYNdMyjw45_alSCZ1fypsMWz_2mTpQzil0lOtps5Ei_z7mM7M8gCwe_AGpI53JxduQOaB5HkT5gVrv9cKu9CsW5MS6ZbqYXpGyOG5ehoxqm8DL5tFYaW3lB50ELxi0KsuTKEbD0t5BCl0aCR2MBJWAbN-xeLwEenaqBiwPVvKixYleeDQiBEIylFdNNIMviKRgXiYuAvMziVPbwSgkZVHeEdF5MQP1Oe2Spac-6If
هو الجزء الي باللون الاخضر وهو الجزء اليي بعد تاني علامة (.) وهو عبارة عن البيانات المسرلة في اول وتاني جزء مشفرة باستخدام الخوارزمية المرسل معلومات عنها في اول جزء
Real case example
It is even possible to replace a serialized object with an object of an entirely different class. Alarmingly, objects of any class that is available to the website will be deserialized and instantiated, regardless of which class was expected. For this reason, insecure deserialization is sometimes known as an “object injection” vulnerability.
An object of an unexpected class might cause an exception. By this time, however, the damage may already be done. Many deserialization-based attacks are completed before deserialization is finished. This means that the deserialization process itself can initiate an attack, even if the website’s own functionality does not directly interact with the malicious object. For this reason, websites whose logic is based on strongly typed languages can also be vulnerable to these techniques.
دلوقتي انت عملت تسجيل دخول علي الموقع بيجي بقي الموقع عامل التوكين دي وباعتهالك عشان لما تبعتلة اي ريكوست يكون عارف انت مين
طيب التوكين دي هيكون فيها مثلا اليوزرنيم بتاعك فا السرفر بيعملها ازاي اقولك انا بقي
بيجي مثلا مختار خوارزمية معينة عشان يشفر بيها التوكين دي ويجي يحط الميتاداتا دي الي هي نوع الخوارزمية في جزء الهيدر علي شكل جسون فورمات ويعملها انكودينج بالطرق الي قولنا عليها ودا كدة الجزء الاول من التوكين وبعد كدة يكون الجزء التاني الي هو عبارة عن جسون فورمات بردو فيها اليوزرنيم بتاعك وشوية معلومات عنك ويعملها بردو انكودينج ويضيفها علي الجزء الاول ويفصل بينهم بعلامة (.) وعشان يكون بقي الجزء التالت بيشفر الجزئين الاول والتاني بستخدام الخوارزمية الي اسمها في اول جزء وبيحتفظ بالمفتاح لنفسة فقط بس ويضيف الجزء التالت للتوكين ويفصل بينها وبين الجزء التاني ب (.) بردو ويبعتهالك ولما انت تيجي تعمل ريكويست وهو عايز يعرف انت مين بيجي للتوكين ويعرف انت مين بس انت ممكن تغير معلومات التوكين مثلا تحط يوزرنيم حد تاني فهو بيتأكد من صحة التوكين عن طريق انه بيقارن الجزء المشفر بالجزء الي مش مشفر لو البيانات واحدة كدة البيانات سليمة
How do vulnerabilities to JWT attacks arise?
ثغرات الجسون ويب توكين بتحصل بسبب ميس كونفجريشن لانها تتمتع بخصائص كتير وتعتبر مرنة نسبيا من حيث التصميم لذالك يمكن للمطور ان يفعل كونفجريشن بطريقة خاطئة مما يسمح للمهاجم بان يقوم بالتعديل علي البايلود مما يغير قيمة التوكين وعمل بايباس للسيجنيتشر او استخدام خوارزمية ضعيفة مثل التي تستخدم مفتاح واحد فقط للتشفير مما يسهل علي المهاجم تخمين مفتاح التشفير ويجعلة هذا قادر علي انشاء توكين جديدة
What is JWT Editor extension
هي اكسيتينشن ممكن تضيفها علي البيرب بتخليك تشوف الجسون ويب توكين بشكل افضل ويمكنك التعديل في اي جزء فيه او انشاء توكين جديد كمان في ال اتش بي هيستوري لو في ريكويست فيه جسون ويب توكين بتلونه باللون الاخضر ان شاء الله في البلوج الجاي هنبتدي نحل لابات بورت سويجير
اللهمّ انفعنا بما علّمتنا، وعلّمنا ما ينفعنا، وزدنا علمًا وبارك لنا فيه