Five — обфускация кода пятью символами
В JavaSript коммьюнити Мартин Клеппе считается одним из самых известных исследователей в области обфускации JS-кода. Несколько лет назад он представил проект JSFuck — подмножество JavaScript, использующее шесть символов []()!+
, с помощью которых можно представить и выполнить любой JavaScript-код. В 2016-ом году была совершена атака на пользователей eBay, в ней был использован этот метод обфускации.
Недавно Мартин рассказал представил свой новый небольшой проект — Five. Five — это развитие идей JSFuck, использующее пять символов для представления кода — $+=[]
. Это подмножество работает только в браузерах и на тех страницах, где есть jQuery UI.
Довольно сложно в нескольких словах объяснить как работает Five, но его суть заключается в следующем. С помощью символов $+=[]
можно получить доступ к исходному коду функции $.find()
. Полученный исходный код работает как алфавит, из которого по кусочкам можно сформировать любой JavaScript-код. Для выполнения кода используется ссылка на document.body
, которая достаётся из $.datepicker.dpDiv[0].ownerDocument.body
. То есть если сайт использует jQuery UI (таких сайтов много) и если он не экранирует $+=[]
в пользовательских данных, это может открыть возможность для XSS-атак.