آموزش باگ XXE و درک مفهومی ان

باگ XXE

در این قسمت از آموزش قصد داریم شما را با آسیب پذیری یا باگ XXE آشنا کنیم با ما همراه باشید.

باگ XXE چیست ؟

این آسیب پذیری که یک آسیب پذیری سمت سرور است مخفف عبارت XML External Entity است ، در پست قبل شما را با آسیب پذیری XPATH Injection آشنا کرده ایم و نیز متوجه شده اید که چگونه می توانید با استفاده از این آسیب پذیری اقدام به استخراج اطلاعات از داکیومنت های XML  کنید؛ اما در آسیب پذیری XEE  نیز متوجه خواهید شد که چگونه می توانید با استفاده از آسیب پذیری که در مکانیزم Parsing وجود دارد اقدام به استخراج اطلاعات از روی سرور کنید و یا حتی می توانید به اطلاعات سیستمی دسترسی پیدا کنید.

این حمله زمانی رخ می دهد که ورودی XML حاوی مرجع به یک نهاد خارجی توسط یک تجزیه کننده XML ضعیف پیکربندی شده پردازش می شود، این حمله ممکن است باعث به افشای اطلاعات محرمانه ، انکار سرویس ، جعل درخواست سمت سرور ، اسکن پورت از دید دستگاهی باشد که Parsing در آن نیز قرار دارد .

XML Parser چیست ؟

XML Parser نیز یک آبجکتی است که اکثر مرورگر ها انرا نیز ساپورت می کنند
و XML Parser می توانید داکیومنت ها و اطلاعات را نیز استخراج کند
و همچنین اقدام به خواندن تگ های XML  کند.

منطق حمله XXE

ضعفی که باعث می شود این آسیب پذیری به وجود آید سمت سرور است، در XML Parser دستوراتی وجود دارد که می توانید با استفاده از انها نیز اقدام به خواندن دیگر داکیومنت ها کنید و به ان ها نیز دسترسی داشته باشید و اگر این اعتبار سنجی که در از طرف کاربر به سمت سرور ارسال می شود به درستی  انجام نشود و نیز نفوذگر می تواند با استفاده از دستورات XML Parser اقدام به استخراج و خواندن اطلاعات بر روی سرور کند.

انواع حمله های XXE

آموزش باگ XXE و درک مفهومی ان
درک باگ XXE
  • Exploiting XXE to retrieve file :

در این نوع حمله نفوذگر می تواند اقدام به استخراخ اطلاعات از روی سرور کند.

  • Exploiting XXE to Perform SSRF attack :

در این نوع حمله آسیب پذیری XXE می تواند موجب حمله با باگ SSRF شود.

  • Exploiting Blind XXE exfiltrate data out-of-band :

این حمله در موقعی صورت می گیرد که داده های حساس در حال انتقال از میان سرور و کلاینت هستند ،
جایی که داده های حساس از سرور برنامه به سیستمی منتقل می شوند و مهاجم می تواند آن ها را نیز کنترل کند .

اقدام به حمله XXE to retrieve file :

آموزش باگ XXE و درک مفهومی ان
حمله XXE

نکته : ما در این قسمت از آموزش با یک لابراتور مجازی portswigger  نیز کار می کنیم :

در وب سایت آسیب پذیر , نیز گزینه ای وجود دارد با عنوان check stock که اگر ابزار Burp خود را نیز اجرا کنید و بر روی آن گزینه نیز کلیک کنید نیز خواهید دید که اطلاعات مربوطه برای شما پروکسی می شود :
برای اشنایی بیشتر می توانید اموزش ابزار Burp Suite را در پن تست کور مشاهده کنید.

آموزش باگ XXE و درک مفهومی ان
مرحله اول از تست باگ XXE

سپس اگر به ابزار Burp خود نیز مراجعه کنید خواهید دید که یک تگ XML برای شما پروکسی شده است.

آموزش باگ XXE و درک مفهومی ان
مرحله دوم از تست باگ XXE

حال نیز اگر بر روی ابزار Burp خود کلیک راست کنید
لیستی برای شما باز می شود که باید گزینه send to repeater را انتخاب کنید.

آموزش باگ XXE و درک مفهومی ان
مرحله سوم از تست باگ XXE

حال نیز تگ زیر را می توانید در پنجره باز شده مشاهده کنید

<?xml version=”1.0” encoding=”UTF-8”?>

و در ادامه این تگ برخی پارامتر هایی مانند زیر امده است :

<stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>

آموزش باگ XXE و درک مفهومی ان
مرحله چهارم از تست باگ XXE

حال نیز اگر تگ زیر که مربوط به xml است را میان این دو تگ  قرار دهید و پارامتر 2 را تغیر دهید و به سمت وب سایت و سرور آسیب پذیر ارسال کنید خواهید دید که یوزر های سرور را برای شما در response به نمایش در خواهد اورد :

<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>

به تصویر زیر دقت کنید :

آموزش باگ XXE و درک مفهومی ان
مرحله پنجم از تست باگ XXE

در ادامه شما را به صورت مختصر با blind xxe  اشنا می کنیم
اما قبل از ان بهتر است در ابتدا با مفهوم DTD آشنا شوید :

DTD چیست؟

DTD یک تعریف نوع سند Document Type Definition  است
و DTD ساختار و عناصر قانونی و ویژگی های یک سند XML را تعریف می کند.

چرا از DTD استفاده می کنیم؟

با داشتن DTD ، گروههای مستقل از مردم می توانند در مورد DTD استاندارد برای مبادله داده ها به توافق برسند و جالب است که بدانید یک برنامه می تواند از DTD برای تأیید صحت داده های XML استفاده کند.

اعلامیه DTD داخلی :

اگر DTD درون فایل XML اعلام شده باشد ، باید درون تعریف <! DOCTYPE>  پیچیده شود.

توضیحی کوتاه درباره blind XXE

XXE blind چیست؟

آسیب پذیری های  XXE blind زمانی به وجود می آیند که برنامه در مقابل تزریق XXE آسیب پذیر باشد اما مقادیر هیچ نهاد خارجی مشخصی را در پاسخ های خود بازگردانی نیز نکند . این بدان معناست که بازیابی مستقیم پرونده های سمت سرور امکان پذیر نیست ، بنابراین استفاده از XXE blind  به طور کلی سخت تر از آسیب پذیری های منظم XXE است.

این حمله XXE باعث می شود که سرور درخواست HTTP باطن را به URL مشخص شده انجام دهد. مهاجم می تواند برای نتیجه جستجو DNS و درخواست HTTP نظارت کند و از این طریق تشخیص دهد که حمله XXE موفقیت آمیز بوده است.

برقراری امنیت در برابر باگ XXE

آموزش باگ XXE و درک مفهومی ان
مقابله با باگ XXE

برای برقراری امنیت در برابر این آسیب پذیری و جلوگیری از هک باید بتوانید یک اعتبار سنجی صحیح را بر روی دستور XML Parser ایجاد کنید و همچنین  External Entity باید نیز بسته باشد . همچنین فایل PDF وجود دارد که نحوه اکسپلویت کردن آسیب پذیری XXE را می توانید در آن مطالعه کنید که در ادامه لینک این pdf را نیز برای شما قرار داده ایم  :

نتیجه گیری :

آموزش باگ XXE و درک مفهومی ان
نتیجه گیری باگ XXE

در این قسمت از آموزش شما را با اسیب پذیری XXE و انواع آن نیز آشنا کرده ایم و سپس یک مثال علمی را انجام داده ایم تا شما بهتر با این آسیب پذیری نیز آشنا شوید و در ادامه شما را با blind XXE آشنا کرده ایم و روش برقراری امنیت را در برابر باگ XXE برای شما شرح داده شده است و در نهایت آموزش را با معرفی یک PDF بسیار کار امد به پایان رسانده ایم.

موفق باشید.

0/5 (0 نظر)

مطالب مرتبط

۳ دیدگاه در “آموزش باگ XXE و درک مفهومی ان”

  • lmyrshahy3 اردیبهشت 20, 1399 پاسخ

    سلام ممنون بابت اموزشات خوبتون
    یه سوال این اطلاعات مهم میتونه شامل یوزر و پسورد ادمین باشه یا صفحه ادمین سایت

    • نیما حسینی اردیبهشت 28, 1399 پاسخ

      درود بر شما تشکر
      بله ، برای درک بهتر پیشنهاد می کنم اموزش را کامل مطالعه کنید.

  • سید محمد خرداد 21, 1400 پاسخ

    مطالبتون خیلی اموزنده است

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قوانین پن تست کور
دوره کالی لینوکس
نماد های اعتماد
نماد های اعتماد