عالم الأمن السيبراني
Cross Site Scripting ’’ XSS ’’ هل سمعت عن ثغرة XSS؟ 🤔
هي من أكثر الثغرات انتشارًا وخطورة في الويب، وتسمح للمهاجم بحقن أكواد JavaScript خبيثة في صفحات المواقع
❤1
الفكرة ببساطة أنو
المهاجم يرسل كود JavaScript → الموقع يعرضه كأنه محتوى عادي → الكود ينفذ على جهاز المستخدم
المهاجم يرسل كود JavaScript → الموقع يعرضه كأنه محتوى عادي → الكود ينفذ على جهاز المستخدم
❤1
أنواع XSS
Stored XSS
الكود يُخزن في قاعدة البيانات (تعليقات، بوستات…).
Reflected XSS
الكود ينعكس مباشرة في الرابط/الطلب.
DOM-based XSS
استغلال عبر كود الـ JavaScript الموجود بالصفحة.
Stored XSS
الكود يُخزن في قاعدة البيانات (تعليقات، بوستات…).
Reflected XSS
الكود ينعكس مباشرة في الرابط/الطلب.
DOM-based XSS
استغلال عبر كود الـ JavaScript الموجود بالصفحة.
المخاطر
سرقة الكوكيز 🍪 وجلسات المستخدم.
إعادة توجيه الضحية لمواقع مزيفة
تشغيل أوامر خبيثة في المتصفح
انتحال هوية المستخدم
سرقة الكوكيز 🍪 وجلسات المستخدم.
إعادة توجيه الضحية لمواقع مزيفة
تشغيل أوامر خبيثة في المتصفح
انتحال هوية المستخدم
كيف نحمي أنفسنا من هكذا ثغرة..
فلترة وإزالة أي سكربتات من مدخلات المستخدم.
استخدام HTML Encoding / Escaping.
تفعيل Content Security Policy (CSP).
عدم الثقة بأي مدخلات خارجية.
فلترة وإزالة أي سكربتات من مدخلات المستخدم.
استخدام HTML Encoding / Escaping.
تفعيل Content Security Policy (CSP).
عدم الثقة بأي مدخلات خارجية.
وهذا مثال لكود الحماية فيه مستوى low
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
?>
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
?>
https://example.com/
?name=<script>alert('XSS')</script>
ويشتغل الحقن معك لأن مابش فلتره للمدخلات وبيستلم النص من الربط وينفذ تنفيذ بدل من العرض كنص
?name=<script>alert('XSS')</script>
ويشتغل الحقن معك لأن مابش فلتره للمدخلات وبيستلم النص من الربط وينفذ تنفيذ بدل من العرض كنص
عالم الأمن السيبراني
https://example.com/ ?name=<script>alert('XSS')</script> ويشتغل الحقن معك لأن مابش فلتره للمدخلات وبيستلم النص من الربط وينفذ تنفيذ بدل من العرض كنص
?page.php?name=<script>alert('XSS')</script>
وهذا الكود الحماية في متوسطه لأنه قام هنا بحظر <script> بمعنى انه بيقول اذا حصلت هذا استبعده ولاتنفذ
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = str_replace( '<script>', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = str_replace( '<script>', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
عالم الأمن السيبراني
وهذا الكود الحماية في متوسطه لأنه قام هنا بحظر <script> بمعنى انه بيقول اذا حصلت هذا استبعده ولاتنفذ <?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = str_replace( '<script>', '', $_GET[…
طبعاً موجود حيل لتجاوزها (مثلاً باستخدام أكواد JavaScript مخفية أو كود داخل وسوم غير متوقعة)😄
عالم الأمن السيبراني
وهذا الكود الحماية في متوسطه لأنه قام هنا بحظر <script> بمعنى انه بيقول اذا حصلت هذا استبعده ولاتنفذ <?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = str_replace( '<script>', '', $_GET[…
<script>alert('XSS')</script>
وهذا تتجاوزه بالراحه فقط فلتر النص
وهذا تتجاوزه بالراحه فقط فلتر النص
بدل
<
استخدم
<
وبدل
>
استخدم
>
وخلاص الحقن ماعاد بتتعرف عليه داله الحظر
<
استخدم
<
وبدل
>
استخدم
>
وخلاص الحقن ماعاد بتتعرف عليه داله الحظر
وهذا حقه الحماية تعتبر مستوى عالي
بس لازل أمر حقنه ممكن
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
بس لازل أمر حقنه ممكن
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
?>
عالم الأمن السيبراني
وهذا حقه الحماية تعتبر مستوى عالي بس لازل أمر حقنه ممكن <?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );…
وهذا تقدر انك تتجاوز عن طريق
داله onerror
img src="invalid.jpg" onerror="alert('XSS via onerror')">
بمعنا انه اذا كان في خطأ يقوم بتنيفذ الحقن هنا..
طبعاً هو يستقبل نص بس احنا كتبناه صوره ..
هو الآن مختلف نوعه لذلك بيظهر خطأ ويتنفذ الحقن
داله onerror
img src="invalid.jpg" onerror="alert('XSS via onerror')">
بمعنا انه اذا كان في خطأ يقوم بتنيفذ الحقن هنا..
طبعاً هو يستقبل نص بس احنا كتبناه صوره ..
هو الآن مختلف نوعه لذلك بيظهر خطأ ويتنفذ الحقن
❤1
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>
وهذا هوه اخر نوع ويفضل استخدمه حيث الحماية فيه قويه ويستخدم داله
htmlspecialchars
الي بتتعامل مع الحقن كأنه نص لذالك يفضل عليك كمبرمج انه في كل متغير يستقبل بيانات تدخل فيه هذا الداله من اجل يصفي الحقن وتحميه من هجمه xss
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );
// Feedback for end user
$html .= "<pre>Hello {$name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>
وهذا هوه اخر نوع ويفضل استخدمه حيث الحماية فيه قويه ويستخدم داله
htmlspecialchars
الي بتتعامل مع الحقن كأنه نص لذالك يفضل عليك كمبرمج انه في كل متغير يستقبل بيانات تدخل فيه هذا الداله من اجل يصفي الحقن وتحميه من هجمه xss
عالم الأمن السيبراني
<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $name = htmlspecialchars( $_GET[…
هنا مثل لو جربنا مثل الحقن في المستوى المرتفع
<img src="invalid.jpg" onerror="alert('XSS via onerror')">
داله htmlspecialchars
بتتعامل معه كأنه نص مدخل وتطبعه دون تنفيذ ويكون الناتج
<img src="invalid.jpg" onerror="alert('XSS via onerror')">
<img src="invalid.jpg" onerror="alert('XSS via onerror')">
داله htmlspecialchars
بتتعامل معه كأنه نص مدخل وتطبعه دون تنفيذ ويكون الناتج
<img src="invalid.jpg" onerror="alert('XSS via onerror')">
👀1
إذا عجبكم الثريدز المشترك، بالله لا تبخلوا بالنشر، عشان يوصل لكل مهتم بالجانب هذا ويستفيد 🙌✨
❤9
🤷 هل قد فكر شخص منكم في فيروس الفدية كيف يعمل ؟
وماهي أهدافه فيروس الفدية ؟
وكيف يمكن جعله سريع في التشفير ؟
وكيف يمكنك انت أن تقوم بعمل فيروس فديه ؟
وهل اذا عندك فيروس الفدية يحتاج مبرمج متمرس أو مبرمج مبتدى؟
وماهي أهدافه فيروس الفدية ؟
وكيف يمكن جعله سريع في التشفير ؟
وكيف يمكنك انت أن تقوم بعمل فيروس فديه ؟
وهل اذا عندك فيروس الفدية يحتاج مبرمج متمرس أو مبرمج مبتدى؟
❤2
🤷 وهل قد فكر شخص منكم كيف يمكن اصنع فيروس ؟
وايش الغرض من الفيروس ؟
وكيف يمكن أن المكافح مايقدر يكتشف الفيروس ؟
وهذا الفيروس عندما يحاول المستخدم أن يحذفه ينسخ نفسه مرتين حتى يجعل المستخدم يبقى يائس من حذفه ؟
وايش الغرض من الفيروس ؟
وكيف يمكن أن المكافح مايقدر يكتشف الفيروس ؟
وهذا الفيروس عندما يحاول المستخدم أن يحذفه ينسخ نفسه مرتين حتى يجعل المستخدم يبقى يائس من حذفه ؟
❤5
🤷 وهل فكر منكم شخص من قبل كيف يمكن اني اصنع اي لعبه ؟
وكيف يمكن اني اجعل في الخلفية يفتح الكاميرا ويصور الضحية ؟
وكيف اجعل الصوره ترتسل إلى سيرفر خاص بي وحتى ان الضحية مايلحق يعمل شي ؟
وكيف حتى اقوى مكافح في العالم مايقدر يكتشفه؟
وكيف يمكن اني اجعل في الخلفية يفتح الكاميرا ويصور الضحية ؟
وكيف اجعل الصوره ترتسل إلى سيرفر خاص بي وحتى ان الضحية مايلحق يعمل شي ؟
وكيف حتى اقوى مكافح في العالم مايقدر يكتشفه؟
👌4❤1