Gareth Heyes из PortSwigger показал: имя HTML-тега само по себе может стать JS-пэйлоадом. Браузер приводит имя тега к верхнему регистру, но свойство
localName отдает его обратно в нижнем — и дальше из этого собирается цепочка.Схема простая:
tabindex + autofocus триггерят onfocus, в хендлер пишется строка из localName, а new onfocus исполняет её как конструктор.<alert(1) onfocus="attributes[0].value=localName,new onfocus" autofocus tabindex=1>
<JAVASCRIPT:ALERT(1) onfocus=location=localName autofocus tabindex=1>
Что это даёт для байпаса WAF 👇
▪️ JS можно писать капсом —
localName всё равно вернёт нижний регистр▪️ Символы-разделители строк и абзацев браузер в имени тега не трогает, а JS считает их переводом строки
▪️ Если фильтр режет
attributes[0].value — есть .textContent, .nodeValue, getAttributeNode(...).value▪️ Через
part/classList имя тега уходит прямо в eval🔗 Полный набор пэйлоадов ждет тебя в ресерче





















