آموزش باگ 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
- 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 :
نکته : ما در این قسمت از آموزش با یک لابراتور مجازی portswigger نیز کار می کنیم :
در وب سایت آسیب پذیر , نیز گزینه ای وجود دارد با عنوان check stock که اگر ابزار Burp خود را نیز اجرا کنید و بر روی آن گزینه نیز کلیک کنید نیز خواهید دید که اطلاعات مربوطه برای شما پروکسی می شود :
برای اشنایی بیشتر می توانید اموزش ابزار Burp Suite را در پن تست کور مشاهده کنید.
سپس اگر به ابزار Burp خود نیز مراجعه کنید خواهید دید که یک تگ XML برای شما پروکسی شده است.
حال نیز اگر بر روی ابزار Burp خود کلیک راست کنید
لیستی برای شما باز می شود که باید گزینه send to repeater را انتخاب کنید.
حال نیز تگ زیر را می توانید در پنجره باز شده مشاهده کنید
<?xml version=”1.0” encoding=”UTF-8”?>
و در ادامه این تگ برخی پارامتر هایی مانند زیر امده است :
<stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>
حال نیز اگر تگ زیر که مربوط به xml است را میان این دو تگ قرار دهید و پارامتر 2 را تغیر دهید و به سمت وب سایت و سرور آسیب پذیر ارسال کنید خواهید دید که یوزر های سرور را برای شما در response به نمایش در خواهد اورد :
<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>
به تصویر زیر دقت کنید :
در ادامه شما را به صورت مختصر با 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
برای برقراری امنیت در برابر این آسیب پذیری و جلوگیری از هک باید بتوانید یک اعتبار سنجی صحیح را بر روی دستور XML Parser ایجاد کنید و همچنین External Entity باید نیز بسته باشد . همچنین فایل PDF وجود دارد که نحوه اکسپلویت کردن آسیب پذیری XXE را می توانید در آن مطالعه کنید که در ادامه لینک این pdf را نیز برای شما قرار داده ایم :
نتیجه گیری :
در این قسمت از آموزش شما را با اسیب پذیری XXE و انواع آن نیز آشنا کرده ایم و سپس یک مثال علمی را انجام داده ایم تا شما بهتر با این آسیب پذیری نیز آشنا شوید و در ادامه شما را با blind XXE آشنا کرده ایم و روش برقراری امنیت را در برابر باگ XXE برای شما شرح داده شده است و در نهایت آموزش را با معرفی یک PDF بسیار کار امد به پایان رسانده ایم.
موفق باشید.
۳ دیدگاه در “آموزش باگ XXE و درک مفهومی ان”
سلام ممنون بابت اموزشات خوبتون
یه سوال این اطلاعات مهم میتونه شامل یوزر و پسورد ادمین باشه یا صفحه ادمین سایت
درود بر شما تشکر
بله ، برای درک بهتر پیشنهاد می کنم اموزش را کامل مطالعه کنید.
مطالبتون خیلی اموزنده است