html injection tutorial
По-задълбочен поглед върху HTML инжектирането:
За да постигнем по-добро възприемане на HTML Injection, първо трябва да знаем какво е HTML.
HTML е език за маркиране, където всички елементи на уебсайта са записани в маркерите. Използва се най-вече за създаване на уебсайтове. Уеб страниците се изпращат до браузъра под формата на HTML документи. Тогава тези HTML документи се преобразуват в нормални уебсайтове и се показват за крайните потребители.
Този урок ще ви даде пълен преглед на HTML Injection, неговите видове и превантивни мерки, заедно с практически примери с прости думи за лесното ви разбиране на концепцията.
Какво ще научите:
- Какво е HTML инжектиране?
- Видове HTML инжектиране
- Как се извършва инжектирането на HTML?
- Как да тестваме срещу HTML инжектиране?
- Как да предотвратим HTML инжектирането?
- Сравнение с други атаки
- Заключение
- Препоръчително четене
Какво е HTML инжектиране?
Същността на този тип инжекционна атака е инжектирането на HTML код през уязвимите части на уебсайта. Злонамереният потребител изпраща HTML код през всяко уязвимо поле с цел да промени дизайна на уебсайта или каквато и да е информация, която се показва на потребителя.
В резултат потребителят може да види данните, изпратени от злонамерения потребител. Следователно, като цяло, HTML Injection е просто инжектиране на код на езика за маркиране в документа на страницата.
Данните, които се изпращат по време на този тип инжекционна атака, могат да бъдат много различни. Това може да са няколко HTML маркера, които просто ще показват изпратената информация. Също така, това може да бъде цялата фалшива форма или страница. Когато тази атака се случи, браузърът обикновено интерпретира злонамерени потребителски данни като легитимни и ги показва.
Промяната на външния вид на уебсайта не е единственият риск, който носи този тип атака. Това е доста подобно на XSS атаката, при която злонамереният потребител краде самоличността на друг човек. Следователно по време на тази инжекционна атака може да се случи и кражба на самоличност на друг човек.
Видове HTML инжектиране
Изглежда, че тази атака не е много трудна за разбиране или изпълнение, тъй като HTML се счита за доста прост език. Съществуват обаче различни начини за извършване на този тип атака. Също така можем да различим различни видове тази инжекция.
Първо, различните видове могат да бъдат сортирани по рисковете, които те носят.
Както споменахме, тази инжекционна атака може да се извърши с две различни цели:
- За да промените външния вид на показания уебсайт.
- Да открадне самоличността на друг човек.
Също така, тази инжекционна атака може да бъде извършена чрез различни части на уебсайта, т.е. полета за въвеждане на данни и връзката на уебсайта.
Основните видове обаче са:
- Съхранено HTML инжектиране
- Отразено HTML инжектиране
# 1) Съхранено HTML инжектиране:
Основната разлика между тези два типа инжектиране е, че съхранената инжекционна атака се случва, когато злонамерен HTML код се записва в уеб сървъра и се изпълнява всеки път, когато потребителят извика подходяща функционалност.
В отразения случай на инжекционно нападение обаче злонамерен HTML код не се съхранява за постоянно на уеб сървъра. Reflected Injection се случва, когато уебсайтът незабавно реагира на злонамереното въвеждане.
# 2) Отразено HTML инжектиране:
Това отново може да бъде разделено на повече видове:
- Отразено GET
- Отразено POST
- Отразен URL адрес
Отразената инжекционна атака може да се извърши по различен начин според HTTP методите, т.е. GET и POST. Бих напомнил, че с метода POST се изпращат данни и с метода GET се искат данни.
За да знаем кой метод се използва за подходящи елементи на уебсайта, можем да проверим източника на страницата.
Например , тестер може да провери изходния код за формата за вход и да открие какъв метод се използва за него. Тогава може да бъде избран съответният метод за инжектиране на HTML.
файл вход и изход c ++
Отразена инжекция GET се случва, когато нашите данни се показват (отразяват) на уебсайта. Да предположим, че имаме проста страница с форма за търсене, която е уязвима за тази атака. Тогава, ако въведем някакъв HTML код, той ще се появи на нашия уебсайт и в същото време ще бъде инжектиран в HTML документа.
Например въвеждаме прост текст с HTML тагове:
Отразено POST HTML инжектиране е малко по-трудно. Това се случва, когато се изпраща злонамерен HTML код вместо правилни параметри на метода POST.
Например , имаме формуляр за вход, който е уязвим за HTML атака. Данните, въведени във формуляра за вход, се изпращат с POST метод. Тогава, ако бихме въвели някакъв HTML код вместо правилните параметри, той ще бъде изпратен с POST метод и показан на уебсайта.
За да извършите Reflected POST HTML атака, препоръчително е да използвате специален плъгин на браузъра, който ще фалшифицира изпратените данни. Един от тях е Mozilla Firefox плъгин “Tamper Data”. Приставката поема изпратените данни и позволява на потребителя да ги промени. След това променените данни се изпращат и показват на уебсайта.
Например, ако използваме такава приставка, ще изпратим същия HTML код или код на формуляр за търсене, ако искате да тествате с нещо по-сложно Въведете текст за търсене
Ако се покаже HTML код, който се записва някъде, тогава тестерът може да бъде сигурен, че тази инжекционна атака е възможна. Тогава може да се опита по-сложен код - за Пример , за да се покаже фалшивата форма за вход.
Друго решение е HTML Injection скенер. Автоматичното сканиране срещу тази атака може да спести много от времето ви. Бих искал да уведомя, че няма много инструменти за тестване на HTML инжектиране в сравнение с други атаки.
Едно от възможните решения обаче е приложението WAS. WAS може да бъде наречен като доста силен скенер за уязвимости, тъй като тества с различните входове, а не просто спира с първия неуспешен.
Полезно е за тестване, може би, както е споменато в горната приставка за браузър „Tamper Data“, той получава изпратени данни, позволява на тестера да ги промени и изпраща до браузъра.
Също така можем да намерим някои инструменти за онлайн сканиране, където трябва само да предоставите връзката на уебсайта и ще се извърши сканиране срещу HTML атака. Когато тестването приключи, резюмето ще се покаже.
Бих искал да коментирам, че когато избираме инструмент за сканиране, трябва да обърнем внимание на това как той анализира резултатите и достатъчно ли е точен или не.
Трябва обаче да се има предвид, че ръчното тестване не трябва да се забравя. По този начин можем да бъдем сигурни какви точно входни данни са изпробвани и какви точно резултати получаваме. Също така по този начин е по-лесно да се анализират и резултатите.
От моя опит в кариерата на тестване на софтуер, бих искал да коментирам, че и за двата начина на тестване трябва да имаме добри познания за този тип инжекции. В противен случай би било трудно да се избере подходящ инструмент за автоматизация и да се анализират резултатите от него. Също така винаги се препоръчва да не забравяте да тествате ръчно, тъй като това просто ни прави по-сигурни за качеството.
Как да предотвратим HTML инжектирането?
Няма съмнения, че основната причина за тази атака е невниманието на разработчика и липсата на знания. Този тип инжекционна атака възниква, когато входът и изходът не са правилно валидирани. Следователно основното правило за предотвратяване на HTML атака е подходящата проверка на данните.
Всеки вход трябва да бъде проверен, ако съдържа код на скрипт или HTML код. Обикновено се проверява, ако кодът съдържа някакъв специален скрипт или HTML скоби -,.
Има много функции за проверка дали кодът съдържа някакви специални скоби. Изборът на функция за проверка зависи от езика за програмиране, който използвате.
Трябва да се помни, че добре тестване на сигурността също е част от превенцията. Бих искал да обърна внимание, че тъй като HTML Injection атаката е много рядка, има по-малко литература за това и по-малко скенер за избор за автоматично тестване. Тази част от тестовете за сигурност обаче наистина не трябва да се пропуска, тъй като никога не се знае кога може да се случи.
Също така и разработчикът, и тестващият трябва да имат добри познания за това как се извършва тази атака. Доброто разбиране на този процес на атака може да помогне за предотвратяването му.
какво е ключ за мрежова сигурност
Сравнение с други атаки
В сравнение с другите възможни атаки, тази атака определено няма да се счита за толкова рискована, колкото SQL инжекция или JavaScript инжекция атака или дори XSS може да бъде. Това няма да унищожи цялата база данни или да открадне всички данни от нея. Не бива обаче да се счита за незначителен.
Както бе споменато по-рано, основната цел на този тип инжекции е промяната на външния вид на показвания уебсайт със злонамерена цел, показвайки изпратената ви информация или данни на крайния потребител. Тези рискове могат да се считат за по-малко важни.
Промененият външен вид на уебсайта обаче може да коства репутацията на вашата компания. Ако злонамерен потребител би унищожил външния вид на вашия уебсайт, това може да промени мнението на посетителя за вашата компания.
Трябва да се помни, че друг риск, който тази атака към уебсайта носи, е кражба на самоличност на друг потребител.
Както споменахме, с HTML Injection злонамереният потребител може да инжектира цялата страница, която ще бъде показана за крайния потребител. Тогава, ако крайният потребител ще посочи данните си за вход на фалшивата страница за вход, те ще бъдат изпратени на злонамерения потребител. Този случай, разбира се, е по-рисковата част от тази атака.
Трябва да се спомене, че за кражба на данни на други потребители този тип атака се избира по-рядко, тъй като има много други възможни атаки.
Това обаче е много подобно на XSS атаката, която краде бисквитките на потребителя и самоличността на други потребители. Има и XSS атаки, които са базирани на HTML. Следователно тестването срещу XSS и HTML атака може да бъде много сходно и да се извършва заедно.
Заключение
Тъй като HTML Injection не е толкова популярен, колкото другите атаки, той може да се счита за по-малко рисков от другите атаки. Следователно тестването срещу този тип инжекции понякога се пропуска.
Също така е забележимо, че определено има по-малко литература и информация за HTML Injection. Следователно тестерите могат да решат да не извършват този тип тестване. В този случай обаче рисковете с HTML атака може би не са оценени достатъчно.
Както анализирахме в този урок, с този тип инжектиране целият дизайн на вашия уеб сайт може да бъде унищожен или дори данните за вход на потребителя да бъдат откраднати. Затова е силно препоръчително да включите HTML Injection за тестване на сигурността и да инвестирате добри знания.
Попадали ли сте на някакво типично HTML инжектиране? Чувствайте се свободни да споделите своя опит в раздела за коментари по-долу.
Препоръчително четене
- Уроци за задълбочено затъмнение за начинаещи
- Урок за тестване на SQL инжектиране (Пример и предотвратяване на атака на SQL инжектиране)
- Урок за Python DateTime с примери
- Урок за атаки с различни сайтове за скриптове (XSS) с примери, типове и предотвратяване
- Урок за инжектиране на JavaScript: Тествайте и предотвратявайте JS инжекционни атаки на уебсайта
- Урок за скриптове на Unix Shell с примери
- Намиране на елемент от селен чрез урок с текст с примери
- Урок за основната функция на Python с практически примери