![]() |
[Инпут] Здрасте. Данное писание посвящено обзору некоторых из способов обхода xss-фильтров. Уровень сложности материала ориентирован, в среднем, на пользователя имеющего понятие об XSS-атаках, но в то же время имеються доступные краткие объяснения для менее искушенного в этом плане читателя. Это моя первая статья, которая в силу моей неопытности в писательском деле, может иметь некоторые изъяны, так что держите свои помидорные пулеметы в боевой готовности. Так же хотелось бы напомнить, что сами XSS атаки имеют намного больший потенциал нежели кража cookies. С помощью XSS можно выполнять теже действия, что и администратор сайта, главное знать как правильно реализовать атаку. Но перед тем, как что-то делать, нужно убедиться в надежности, а в данном случае, в надежности xss-векторов перед системами фильтрации. Краткое содержание данного писания: [1] - Спасение кавычек. [2] - Использование атрибута. [3] - Добавление угловой скобки. [4] - Использование тега . [5] - Шифрование Base64. [6] - Использование Flash. [7] - Кодировка UTF-7. [8] - Озэръ. [1]-[Спасение кавычек] Часто встречается ситуация когда фильтр экранирует либо удаляет двойную (") и одинарную (') кавычки. В такой ситуации следует воспользоваться String.fromCharCode(), или unescape(), которые переводят все символы в цифровой код. Разница между ними, лишь, в использовании систем исчисления: String.fromCharCode() использует DEC-значения символов, а unescape() использует HEX-значения. Пример: Код:
Код:Пример: Код:
Код:Ещё одним методом, является использование, в качестве альтернативы кавычкам, конструкции / /.source Пример: Код:
Код:[2]-[Использование атрибута] Некоторые из атрибутов различных тегов имеют интересные свойства, благодаря которым вы можете использовать кодирование содержимого XSS-вектора. Кодировки, которые можно использовать, такие как, HTML Entities DEC Encode(имеет вид: ), Long HTML Entities DEC Encode(имеет вид: &#(0000)XXX), HTML Entities HEX(имеет вид: &#xXX),(X-цифра). LongHTMLEntities отличается от HTML Entities тем, что не использует точку с запятой для разделения значений символов, и использует дополнительные четыре цифры слева, что даёт возможность обойти фильтрацию -подобных значений, т.к. будет задействовано 7 цифр вместо 3-х. Пример (javascript:alert('xaknet.ru')) в HTML Entities DEC: Знак "!" перед применением удалить Код:
Код:Знак "!" перед применением удалить Код:
Код:Знак "!" перед применением удалить Код:
Код:Пример: Код:
Код:Пример: Код:
Код:Так же можно комбинированно использовать эти два способа, но главное соблюдать целостности HEX и DEC значений закодированных символов, т.е. их не стоит разрывать табуляцией, т.к. конструкция не будет работать. Пример HTML Entities DEC: Знак "!" перед применением удалить Код:
Код:[3]-[Добавление угловой скобки] Данный способ позволяет обойти фильтр, проверяющий сразу на присутствие соответствия открывающих и закрывающих угловых скобок, после обнаружения, которых, считает все, что в них находиться тегом и вырезает, либо видоизменяет до состояния неработоспособности. Избежать вмешательства фильтра можно путём добавления перед открывающим тегом второй открывающей угловой скобки. Особенность данного способа является обязательное наличие знака комментария //, который ставиться перед закрывающим тегом, дабы сделать вид прокомментированной посторонней закрывающей скобки, что бы не нарушить синтаксис и не вызвать ошибку. Пример: Код:
Код:Код:
Код:Так как тег , в большинстве случаев, находится в начале кода страницы, вы, путём добавления закрывающего можете добиться вырезания всего кода страницы между открывающим и закрывающим тегами TITLE, что может добавить шансы на срабатывание скрипта, который должен выполниться сразу после , если использовать данную конструкцию: Код:
Код:[5]-[Шифрование алгоритмом base64] Также является хорошим способом, если фильтрация направлена на список названий тегов или JS-кода. Пример: Код:
Код:[6]-[Использование Flash.] В качестве обфускации вектора, можно использовать ActionScript через Flash, путём использования переменных и присваивания им значений, которые являются частями xss-кода. Пример: Код:
Код:Заключается данный способ в изменении кодировки символов xss-вектора на UTF-7. Это может сработать в тех случаях, когда в странице не указывается кодировка, и атакующий может заставить страницу испольвоть UTF-7, тем самым, обойти фильтрацию, изменив некоторые из символов UTF-8 на UTF-7. Пример: Код:
Код:[8]-[Озэръ] Тут я привёл некоторые из альтернативных вариантов проведения xss-атак: Код:
">with(document)alert(cookie) - эквивалентен alert(document.cookie). prompt() - эквивалентен alert(). Внимание: некоторые из представленных способов работоспособны не во всех браузерах. [Оутпут] Как видно, это не все возможные способы обхода фильтрации, но основные их обличия я попытался описать. Мне хотелось бы увидеть только здравую и адекватную критику с вашей стороны... Зэ энд, товарищи! Спасибо за этеншен. |
каждое слово боян =/
|
Цитата:
В Mozilla до 3 версии работает точно, последующих версиях, кажется, это прикрыли. Надо посмотрел сделать. А так, данный вид атаки ориентирован преимущественно на оперу. Называется он не [Шифрование алгоритмом base64], а Самодостаточная XSS. 2. Стоит указывать первоисточник, и постить в разделе ЧУЖИЕ СТАТЬИ. http://vulnes.com/showthread.php?p=1051 http://forum.xaknet.ru/showthread.php?t=16290 http://forum.k0d.cc/showthread.php?t=6895& PS. Двух помидоров достаточно? |
Цитата:
|
Тему я запостил т.к. будет полезно иметь представлении вообще об методах обхода.
Тема естественно заезженная, но вроде-бы такой нету. Чтобы не придумывать велосипед, запостил наверно и практически все методы тут. Статья опять же расчитана на новичка в этом деле. |
Цитата:
афтар не ты ведь. |
Цитата:
Конечно не я. Уже всё придумано |
Цитата:
|
Цитата:
p.s. Его еще 11 дней терпеть. Там мб его загрузят =\ |
Оформление ужасное, информации по факту 0, такие методы уже не прокатят..
|
| Время: 09:04 |