باگ html injection چیست ؟ + آموزش کامل
در این قسمت از آموزش قصد داریم شما را با آسیب پذیری یا باگ html injection آشنا کنیم.
در دنیای وب هکینگ آسیب پذیری های بسیار زیادی وجود دارد که تمام این آسیب پذیری ها و باگ های موجود در دو دسته سمت سرور و سمت کلاینت تقسیم می شوند. حملات سمت سرور شامل حملات sqli , lfi , rfi , rfu و دیگر حملات موجود است . حملات سمت کلاینت شامل حملات xss , csrf , html injection و دیگر حملات موجود است .
نکته : همانگونه که گفته شد حملات بسیار زیادی وجود دارد
و در دو دسته بندی بالا فقط حملات شناخته شده را نام برده ام .
باگ html injection چیست ؟
همانگونه که گفته شد حمله html injection یک حمله سمت کلاینت است که باعث می شود
شما بتوانید تگ ها html را در کد های سایت هدف خود inject کنید .
تابع htmlentities در php چه کاری انجام می دهد ؟
یکی از توابع امنیتی که در php مورد استفاده قرار می گیرد تابع htmlentities است که برای فیلتر کردن کارکتر های غیرمجاز که توسط کاربر وارد می شود مورد استفاده قرار می گیرد به این صورت که ورودی که کاربر وارد می کند را فیلتر می کند و کاراکتر هایی جایگزین کارکتر های غیرمجاز می کند تا اگر قرار است ورودی کاربر در صفحه وب سایت چاپ شود نیز حمله هایی مانند xss و html injection رخ ندهد.
برای مثال اگر در منوی جستجوی وب سایت ما یعنی PentestCore
عبارت زیر که مرحله اول برای تشخیص باگ xss است را وارد کنید :
<script>alert(“pentestcore”)</script>
خواهید دید که این عبارت در صفحه وب سایت برای شما به نمایش در می اید:
حال نیز اگر به کد های سایت مراجعه کنید خواهید دید که همین عبارت در سورس کد چاپ شده است
اما با کمی کاراکتر های متفاوت (به تصویر زیر دقت کنید )
نیز مشاهده می کنید که کاراکتر های غیرمجاز encode شده اند ، این encode شدن به همان تابع htmlentities بازمی گردد تا از حملاتی مانند xss و html injection جلوگیری کند . حال نیز در ادامه متوجه خواهید شد که وب سایت هایی که این عملیات فیلترینگ و جایگزینی کاراکتر های غیرمجاز را انجام نمی دهند چه خطری انهارا تهدید می کند.
تحلیل باگ html injection
باگ html injection از جایی به وجود می اید که کاربر توانایی وارد کردن اطلاعات را داشته باشد دقیقا مانند فیلد های جستجو و یا هر فیلد دیگری که از کاربر ورودی دریافت کند و نیز در صفحه چاپ کند. اما دقت داشته باشید که هر گردی گردو نیست و در ابتدا باید بررسی های لازم انجام شود تا مطمئن شوید آیا باگ به صورت کامل وجود دارد یا خیر به این دلیل که چاپ شدن عبارت مورد نظر شما در صفحه دلیل بر وجود صد درصد باگ نیست زیرا احتمال موجود بودن باگ نیز وجود دارد .
نفوذگر زمانی که داده خود را در فیلد مربوطه وارد می کند اگر توسط فیلترینگی جلوی حمله او گرفته شود نیز وب سایت قربانی در برابر این حمله امن است اما اگر فیلترینگی انجام نشده باشد تگ های html در داخل کد های سایت قرار می گیرند و می توانند ظاهر وب سایت را تغییر دهند .
نکته : حمله html injection همانگونه که گفته شد حمله ای سمت کلاینت است و تمام تغیراتی که شما بر روی سایت ایجاد می کنید فقط بر روی سیستم شما اتفاق خواهد افتاد و حتی با یک بار refresh کردن صفحه وب سایت نیز تغیرات مجددا به حالت اول باز خواهد گشت .
شروع کار با اسیب پذیری html injection
زمانی که وارد سایت هدف خود می شوید اگر بخواهید آسیب پذیری html injection را تست کنید باید به دنبال قسمت هایی بگردید که بتوانید ورودی وارد کنید . در مرحله بعدی باید داخل فیلد مورد نظر خود یک عبارت وارد کنید و نیز اگر مشاهده کردید که عبارت شما در هر جایی از صفحه وب سایت به نمایش در امد و به اصطلاح چاپ شد می تواید احتمال دهید که باگ html injection در ان سایت وجود دارد .
حال نیز در مرحله بعدی باید تگ های html را در فیلد مورد نظر خود وارد کنید :
حال ممکن است به سه حالت بر خورد کنید.
حالت اول : ممکن است با دفعه اول به جواب برسید و تگ html شما بر روی سایت اجرا شود.
به تصویر زیر توجه کنید :
حالت دوم : ممکن است وب سایت امن باشد و دارای آسیب پذیری html injection نباشد.
حالت سوم : ممکن است وب سایت امن نباشد اما با دفعه اول به دلیل فیلتر های اعمال شده صورت گرفته به نتیجه نرسید به همین دلیل باید از بایپس های مربوطه استفاده کنید که در ادامه شما را با بایپس های مختلف آشنا خواهیم کرد .
نمونه سایت آسیب پذیر در برابر باگ html injection که یک تصویر را به کد های سایت اضافه کرده ایم :
بایپس حمله html injection
در تصویر زیر مشاهده می کنید که ما تگ html را در ورودی وارد کرده ایم اما مانند دفعه قبی تگ html برای ما به درستی اجرا نشد و عبارت ما که یک تگ بود را به عنوان یک متن برای ما به نمایش در اورده است.
حال که فیلترینگی بر روی تگ های html ایجاد شده می توانیم با استفاده از url encode به هدف خود برسیم.
به این منظور در ابتدا به سایت زیر وارد شوید :
در این مرحله تگ مورد نظر خود را برای بایپس و تست باگ html injection وارد کنید
و بر روی گزینه encode کلیک کنید تا url encode عبارت مورد نظر شما برایتان به نمایش در اید.
حال نیز می توانید عبارت مورد نظر را بر روی ورودی هدف خود تست کنید :
به تصویر زیر توجه کنید :
نکته مهم : در بعضی مواقع ممکن است متد encode کردن جوابگوی کار نباشد
در این حالت باید از متد دابل انکد استفاده کنید به این منظور که باید عبارت انکد شده را مجددا انکد کنید
تا به نتیجه برسید .
نتیجه گیری
ممکن است پیش خود این دید را داشته باشید که باگ html injection ارزش کمی را برخوردار است اما دقت داشته باشید که اگر باگ html injection بر روی سایت و جود داشته باشد نیز به احتمال 99 درصد باگ xss هم بر روی سایت وجود دارد به این منظور می توانید از باگ xss که یک باگ با ارزش است استفاده بهره ببرید .
موفق باشید.
۴ دیدگاه در “باگ html injection چیست ؟ + آموزش کامل”
سلام واقعا کامل و مفصل من راحت فهمیدم خیلی ممنون | یه سوال داشتم بیشتر اسیب پذیری ها وقتی هست که از کاربر ورودی میگیریم درسته؟ اسیب پذیری های دیگه هم هستن که بدون ورودی بشه دسترسی زیادی رو گرفت میشه معرفی کنید ممنون میشم
درود بر شما
بله اکثر اسیب پذیری ها از ورودی ها به وجود می ایند از بخش تست نفوذ به قسمت تست نفوذ وب اپلیکیشن بروید اموزش های مرتبط با این موضوع در این بخش قرار دارد.
سلام ، بسیار عالی بود.
اموزش خوبی بود ، فقط یک سوال داشتم ، آیا از طریق باگ html injection میشه به دیتابیس وب سایت مورد نظر نفوذ کرد؟!
یعنی دقیقا مثل باگ sql injection است؟!
درود
سوال بسیار خوبی هست، به طور کلی خیر اما در بعضی شرایط خاص امکان افزایش سطح دسترسی حتی دسترسی به دیتابیس می تواند ممکن باشد که در دوره باگ xss کامل اموزش داده شده است.