Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

The art of XSS Escalation

Mohammed Muteb (a.k.a. u0pattern)


https://muteb.io/
1.
Session riding
Escalate XSS To CSRF Attacks
• What is Session Riding ?
• CSRF Protections
• CSRF Synchronizer Token Pattern
• CORS Validation via ‘origin’ HTTP Header
• Referer Validation via ‘referer’ HTTP Header
• XHR Validation
• Bypass CSRF Protections
‫? ‪What is Session Riding‬‬
‫• ثغرة ‪ CSRF Attack‬هي ثغرة تتيح ل‪ Attacker‬إرسال ‪malicious‬‬
‫‪ link‬نهضحيت نيقىو بأنشطت غير يرغىب فيها ين ‪ victim‬ونى تكن يصرح‬
‫انقياو بها ين قبم ‪Attacker‬‬

‫• … يثال‪ :‬اجبار ‪ victim‬بإضافت ‪ malicious admin user‬بدون عهى‬


‫‪ victim‬فىر زيارته ‪ malicious link‬قاو بإرسانه ‪Attacker‬‬
CSRF Protections
CSRF Protections
CSRF Synchronizer CORS Validation
Token Pattern
ٍ‫ع‬JS AJAX ‫ْزِ انحًاٌة جحٕاجذ عُذ اسحخذاو‬
‫ رات‬unique tokens ‫حًاٌة جعحًذ عهى إَحاج‬
CORS ‫ ٔجفعٍم‬Fetch API ٔ‫ أ‬XHR ‫طشٌق‬
Authenticated ‫ٔقث يحذد ٔيشجبطّ يع‬
HTTP Requests ‫ يًا ٌجعم كم‬Mode
ٍ‫ بانححقق ي‬back-end ‫ ٌقٕو‬user-session
ّ‫ قًٍح‬Origin ًّ‫ أس‬HTTP Header ًٍ‫جحض‬
‫ نى ٌحى‬requests ٌ‫صالحٍحٓا دائًا نهحأكذ ا‬
HTTP ُّ‫ انزي أجى ي‬Hostname ًْ
3rd-parties ٍ‫اسسانٓا ي‬
ٍ‫ ٔبٓزِ انطشٌقة ٌححقق انًبشيج ي‬Request
‫ بأَٓا‬Origin HTTP Header ‫قًٍة‬
3rd-parties ‫ انخاص بّ ٔنٍس‬Hostname
CSRF Attacks ‫جحأل إسحغالل‬
CSRF Protections
Referer Validation XHR Validation
‫ بحضٌٔذ‬Referer HTTP Header ‫ٌقٕو‬ ‫ يًا‬JS XHR ‫ْزِ انحًاٌة جحٕاجذ عُذ اسحخذاو‬
ٍ‫ انزي أجى يُّ انضائش ٔع‬web page ‫انًبشيج‬ HTTP ًٍ‫ جحض‬HTTP Requests ‫ٌجعم كم‬
‫طشٌق ْزا انشًء ٌقٕو انًبشيج بانححقق يا إرا‬ ًّ‫ أس‬Header
website ٍ‫ أجى ي‬HTTP Request ٌ‫كا‬ X-Requested-With
‫ نًٍُع‬3rd-party webpages ٔ‫انخاص بّ ا‬ ‫ نكٍ ًٌحاص ْزا‬XMLHttpRequest ًْ ّ‫قًٍح‬
CSRF Attacks ‫إسحغالل‬ HTTP ًٍ‫انٍٓذس بأَّ الٌحى إسُادِ ض‬
‫ إال فً حال جى إسسال‬Request Headers
‫ انخاص‬website ‫ يٍ َفس‬HTTP Request
CSRF ‫ جحأل إسحغالل‬3rd-parties ‫بّ ٔنٍس‬
Attacks
‫فكرة عايه عن ‪SOP/CORS‬‬

‫فً البداٌة كفكرة عامه وسرٌعة ‪ SOP‬هو عبارة عن حماٌة فً المتصفحات تمنع من قراءة‬
‫‪ HTTP Response‬فً حال عدم تطابق ‪ Rules‬أال وهً تطابق ‪ Hostname‬و ‪Port‬‬
‫و‪ URI Scheme‬ووظٌفة ‪ CORS‬هً السماح فً حال عدم تطابق ‪ Rules‬و ‪ CORS‬فً‬
‫‪ٌ AJAX‬قوم بإضافة ‪ HTTP Header‬بإسم ‪ Origin‬وقٌمته هً ‪ Website‬الذي أتى منه‬
‫‪.HTTP Request‬‬
Bypass CSRF Protections
ِ‫ سٕف َحخطى جًٍع يا سبق ٔجى ركش‬XSS ‫يع‬
Bypass CSRF Synchronizer Token Pattern
‫ وهذا ماٌجعلنا نعتمد‬HTML Input Elements ً‫ غالبا ف‬Tokens ‫فً بداٌة األمر تتواجد‬
‫ وتخطً هذه‬CSRF Token ‫ إلستخراج‬getElementsByName() method ‫على‬
-: CSRF Protection
Bypass CORS/XHR Validation
‫ عادي‬HTTP Request ‫هذا أسهل أنواع التخطً ألنك فً واقع األمر تحتاج فقط ترسل‬
malicious ‫ وإرسال‬XHR withCredentials property ‫ إلى‬true ‫مع اضافة القٌمة‬
‫ بسبب ان تلقائٌا‬CSRF Protection ‫ لتخطً هذه‬injected js code ‫ واضافة‬link
X-Requested- ‫ و‬origin HTTP Header ‫ إلى‬victim’s website ‫سوف ٌتم اضافة‬
-:HTTP Request Headers ‫ إلى‬With: XMLHttpRequest
Bypass Referer Validation
user ‫ لتقلٌص‬auto-submit ‫ و‬HTML Code ً‫ لتخطٌها بل ٌكف‬AJAX ‫هنا النحتاج إلى‬
HTTP ‫ وسٌقوم تلقائٌا بإرسال‬XSS ‫ وحقنها فً المكان المصاب بثغرة‬interactions
‫ لٌتخطى لنا‬Referer HTTP Header ً‫ ف‬victim’s website ‫ مضاف إلٌه‬Request
-: CSRF Protection ‫هذه‬
2.
Abuse I/O
Keylogger, Screenshot, Audio
• Keylogger
• Screenshot
• Audio recorder
‫‪Keylogger‬‬
‫أوال نستطٌع تعرٌف ‪ Keylogger‬بأنه ٌقوم برصد أي ضغطة على الكٌبورد وصنع‬
‫‪ keylogger‬ممكن فً ‪ javascript‬حٌث أنه سٌرصد أي ضغطه على أي حرف وٌرسلها‬
‫إلى ‪ Attacker‬ونستطٌع حقن هذا الكود فً مكان إصابة ‪ XSS‬لرصد أي ضغطه ٌقوم بها‬
‫الضحٌة فً الكٌبورد‬
‫‪Screenshot‬‬
‫تقوم مكتبة ‪ html2canvas‬بعمل ‪ screenshot‬لكامل الصفحة او جزء منها ونستطٌع‬
‫إستخدام هذه المكتبة لنقوم بعمل ‪ screenshot‬لصفحة الضحٌة وارسال الصورة إلى‬
‫‪ Attacker‬عن طرٌق حقن هذا الكود فً مكان ثغرة ‪ XSS‬المصابة ‪-:‬‬
‫‪Audio recorder‬‬
‫توفر ‪ MediaStream Recording API‬المقدمة من قوقل كروم واجهة‬
‫‪ MediaRecorder‬لتسجٌل الصوت والصورة وٌستطٌع ‪ Attacker‬إستخدام هذا‬
‫للتنصت على لضحٌة وارسال الصوت إلى ‪ Attacker‬عن طرٌق حقن هذا الكود فً مكان‬
‫ثغرة ‪ XSS‬المصابة ‪-:‬‬
3.
Network & CORS
HTTP-based Port scanning, CORS Attack, DNS Rebinding
‫‪HTTP-based Port scanning‬‬
‫توفر ‪ Fetch API‬طرٌقة لتنفٌذ ‪HTTP-based Port scanning‬‬
‫وتفٌد هذه الطرٌقة من التحقق من وجود ‪ web services‬داخلٌة للضحٌة ممكن‬
‫إستغالالها عن طرٌق حقن هذا الكود فً مكان ثغرة ‪ XSS‬المصابة ‪-:‬‬
‫‪CORS Attack‬‬

‫كما تم التوضٌح سابقا عن ‪ SOP/CORS‬وقواعدها لكن فً ‪ XSS‬تنكسر هذه القوانٌن‬


‫وتصبح قادرا على قراءة ‪ Respone Body‬بدون الحاجة لتصرٌح من ‪ CORS‬وتستطٌع‬
‫من هذا الهجوم سرقة المعلومات الحساسة للضحٌة وإرسالها مباشرة لل‪Attacker‬‬
‫‪DNS Rebinding‬‬

‫هجوم ‪ DNS Rebinding‬عبارة عن تغٌٌر ‪ DNS‬الخاص ب ‪ malicious domain‬إلى‬


‫أحد األجهزة الداخلٌة فً شبكتك مثل اجهزة ‪ IoT‬لخداع ‪ Same-origin policy‬فً‬
‫المتصفحات بسبب تخلٌها عن حماٌتك من هذه الهجمات ألنها مسؤولٌة ‪Firewall‬‬
-: ‫يصادر‬
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
https://fetch.spec.whatwg.org/
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin
https://tools.ietf.org/html/rfc6454
https://crypto.stanford.edu/dns/dns-rebinding.pdf
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
https://cwe.mitre.org/data/definitions/352.html
https://cheatsheetseries.owasp.org/cheatsheets/Cross-
Site_Request_Forgery_Prevention_Cheat_Sheet.html#synchronizer-token-
pattern
Thanks!

You might also like