Въведение

И така, вие се опитвате да изпълните отразен XSS и ъглови скоби; единичните и двойните кавички са кодирани. Но забелязвате, че отражението се появява вътре в знак (`). Ако бяхте толкова невежи като мен, никога преди не бихте използвали този знак, но той е известен като обратна точка.

Какви са тези обратни точки (`), питате вие? Те са подобни на единичните кавички (‘) и двойните кавички (“), тъй като всеки текст вътре в обратната отметка би бил низ.

Но низовете в рамките на обратни отметки (известни също като шаблонни низове или шаблонни литерали) предлагат различна функционалност от обикновените низове.

Например, когато създавате нов ред с низови литерали, той ще изглежда така:

Въпреки това, с литералите на шаблона, почти всички знаци са разрешени
буквално, включително прекъсвания на редове и други знаци за интервали. Това означава, че кодът става много по-четлив в сравнение с низовите литерали. Например кодовият фрагмент по-долу е много по-лесен за четене от горния:

Друго предимство от използването на шаблонни литерали е, че те ви позволяват да използвате контейнери.

Ако искате да комбинирате изхода от изрази с низови литерали, ще трябва да ги свържете с помощта на оператора за добавяне, нещо подобно:

Но с използването на контейнери, този кодов фрагмент става по-поддържаем, тъй като разработчиците могат да се съсредоточат върху конкретния контейнер, който изисква актуализация, без да нарушава цялостната структура на низа. Използването на шаблонни низове също насърчава последователността чрез намаляване на вероятността от грешки при форматиране и подобряване на качеството на кода.

Пример за същия текст, използващ шаблонни низове:

Шаблонни литерали в XSS контекст

И така, как всичко това е свързано със скриптовете между сайтове, ще попитате?

Подобно на низовите литерали, шаблонните низове също могат да въведат уязвимости, ако се използват неправилно. Ако въведеното от потребителя не е дезинфекцирано правилно или е избягало, преди да бъде вмъкнато в шаблонен низ, злонамерените скриптове могат да бъдат инжектирани и изпълнени в контекста на уеб страницата.

За да ви покажем това, нека да разгледаме лабораторията на Portswigger «„Отразен XSS в шаблонен литерал с ъглови скоби, единични, двойни кавички, обратна наклонена черта и обратни отметки, избегнати от Unicode“.

Като начало искате да въведете някакъв текст в търсенето, за да видите къде низът за търсене се отразява обратно към нас в DOM.

Ако погледнете в тага на скрипта, забележете, че резултатът от търсенето е отразен в шаблонен литерал.
И така, от това, което наскоро научихме за шаблонните литерали е, че контейнерът може да оценява javascript изрази, използвайки ${}.

Следователно прост полезен товар би бил ${alert(1)} за решаване на тази лабораторна задача.

Моята цел с този блог е да обясня всичко, което намирам за готино в областта на киберсигурността, по най-разбираемия начин и без прекалено много жаргон.