TGViewer
Dagen | Security Dagen | Security @dagen_security · 856 subscribers
Post #342 1.95K
چجوری dompurify رو دور زدم و از ناهمانگی با مرورگر باگ xss زدم ؟

خیلی خلاصه بریم سراغ اصل مطلب, چجوری این لایبری امن توی چه شرایطی و با چه پیلودی ناامن شد ؟
همونطور که میدونید و باید بدونید xss جزو باگ هایی که هیچ وقت تمومی نداره و روز به روز بیشتر هم میشه ولی یه باگی مثل sqli کلا ریت کشف اسیب پذیریش 1 درصده و داره منقرض میشه چون کتابخونه به اسم orm اونو به صورت کامل امن میکنه .
همونطور که ثابت شده xss کتابخونه ای و یا راه حلی برای امن شدنش نیومده که کاملا 100 درصد دقیق باشه و جلوشو بگیره .

بیایم مرحله به مرحله و دقیق برسیش کنیم .
وقتی من به عنوان یه کلاینت یه پیلود xss رو وارد میکنم چه اتفاقی میوفته واسش ؟
یه پکت http ارسال میشه و توی سرور لایه های زیاد امنیتی رو میگذرونه تا برسه به ui و توی سورس بشینه و مروگر اونو اجرا کنه .

سوال من اینه ایا ui جای درستی برای جلوگیری از پیلود مخرب جاوا اسکریپته ؟
بله , بهترین راه برای جلوگیری xss همون مرحله اخر و جلوگیری ازش توی Ui هست

اینجا دلوپر سایت میتونه از وف استفاده کنه میتونه از encoding های مختلف و .. استفاده کنه .

ولی بازم یه سوال مهم داریم که ایا کافیه ؟

ایا ممکن نیست اون وف با یه پیلود خاصی گیج بشه و دور بخوره ؟

قطعا ممکنه .!
اینو بدونید اخرین ورژن و نسخه نهایی پیلود شما توی dom میشینه نه سورس !

خب اینجا میرسیم سراغ dompurify یه افزونه یا یه لایبرری که باعث از بین رفتن xss میشه چون دقیقا جلوی xss در اخرین مرحله توی dom گرفته میشه و بهترین راه حله . ولی کسب و کار ها و وبسایت نسبت به پیچیدگی و منطق تارگت نمیتونن همیشه از این لایبرری استفاده کنن.

بریم سراغ سناریو اسیپ پذیر :

هفته پیش یه ریسرچ عمیق راجب mxss ها کردم روال کار این پیلود ها در واقع پیلود هاییه که با ترکیب کردن چند نوع تگ پیلود ساخته میشه و خروجی پیلود باعث xss میشه .

تارگت من از dompurify استفاده میکرد و فرض بگیرین یه قسمت سرچ معمولی داشت :


target/q=test


و وقتی یه پیلود وارد میکردم خودکار توسط dom تگ غیرمجاز برداشته میشد و پیلود اجرا نمیشد ❌

توی تحقیقاتم به یه پیلود مثل این رسیدم :

<noscript><style></noscript><img src=X onerror=alert(orgin)>


و من همینو توی پارامتر گذاشتم و xss اجرا شد و من الرت رو دیدم :)

سوالی که پیش میاد اینه که چرا XSS شد و چرا یه لایبرری امن با همچین پیلودی نا امن شد ؟

عدم توافق بین دو عنصر و یا مرورگر و DOMPURIFY باعث باگ من شد.


لایبرری dompurify این پیلود رو XSS نمی دید و نمیشناخت و اول تگ noscript رو میدید که باز شده و بعدش یه استایل وجود داره که باز شده پس ادامه پیلود داخل تگ استایله و noscript/ اجرا نمیشه و به عنوان یه ولیو بی ارزش در نظر گرفته میشه و بهش گیر داده نمیشه :

<style></noscript><img src=X onerror=alert(orgin)> —> dompurify


ولی وقتی این پیلود به dom مرورگر میرسه اول no script با هر ولیوی که داخلشه کنار میره و img اجرا میشه :

<img src=X onerror=alert(origin)> —> browser


هیچکدوم از این پارس ها بین مرورگر و این لایبرری نا امن نبود ولی فقط توافقی بین مرورگر و dom purify وجود نداشت این عدم ناهماهنگی بین دو عنصر امن باعث xss شد :)🌷

@Dagen_security
  • ❤ 12
  • 👍 2
More from @dagen_security
  1. Sep 3, 2026کتابهای زیادی از سمت ما به لطف حمایت و همراهی تون ترجمه فارسی شده توی این پست براتون ۴ نقش…
  2. Jul 10, 2026چجوری با دستکاری لاگین تایپ(LoginType) 2factor رو دور زدم و اکانت تیک اور کردم سناریو این…
  3. Jul 2, 2026خب مثل اینکه انرژی برای یه برسی یه سناریو دیگه پایینه پایینه میتونیم کاتش کنیم ولی از اونج…
  4. Jul 1, 2026نام کتاب : IRAN'S Cyber Threat ✍مترجم : Typhon تاریخ انتشار : ۱۰ تیر ۱۴۰۵ #رایگان_برای_اعض…
  5. Jul 1, 2026اگه می‌خوای بدونی پشت پرده‌ی حملات سایبری منتسب به ایران چی می‌گذره، این کتاب دقیقاً همون…
  6. Jul 1, 2026ترجمه فارسی کتاب Iran Cyber Threats رو خوندم و عجیب و غریب به دل نشست ، کتاب کار درست و سن…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →