DOM‑data manipulation
Что такое манипуляция DOM‑данными?
Уязвимости манипуляции DOM‑данными возникают, когда скрипт записывает контролируемые атакующим данные в поле внутри DOM, которое используется в видимом интерфейсе пользователя или в клиентской логике. Злоумышленник может использовать эту уязвимость, чтобы сконструировать URL, который при посещении изменит внешний вид или поведение клиентского интерфейса. Уязвимости манипуляции DOM‑данными могут эксплуатироваться как отражёнными, так и хранимыми атаками на основе DOM.
Каковы последствия манипуляций DOM‑данными?
В наименее тяжёлом случае атакующий может воспользоваться этой уязвимостью для виртуального дефейса сайта, например изменяя текст или изображения, отображаемые на странице. Однако атаки могут быть более серьёзными. Например, если злоумышленник сможет изменить свойство src элемента, он потенциально может склонить пользователя к выполнению непреднамеренных действий, импортировав вредоносный JavaScript‑файл.
Какие приёмники могут привести к уязвимостям манипуляции DOM‑данными?
Ниже приведены некоторые из основных приёмников, которые могут приводить к уязвимостям манипуляции DOM‑данными:
script.src
script.text
script.textContent
script.innerText
element.setAttribute()
element.search
element.text
element.textContent
element.innerText
element.outerText
element.value
element.name
element.target
element.method
element.type
element.backgroundImage
element.cssText
element.codebase
document.title
document.implementation.createHTMLDocument()
history.pushState()
history.replaceState()Как предотвратить манипуляцию DOM‑данными
В дополнение к общим мерам, описанным на странице DOM-based, следует избегать динамической записи данных из ненадежных источников в поля DOM‑данных. Обратите внимание, что Burp Suite автоматически выявляет эту проблему с помощью статического анализа кода, что может приводить к ложноположительным результатам, которые на самом деле нельзя эксплуатировать. Следует просматривать соответствующий код и пути выполнения, чтобы определить, действительно ли уязвимость присутствует, либо существуют меры, предотвращающие её эксплуатацию.
Last updated