ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Статьи (https://forum.antichat.xyz/forumdisplay.php?f=30)
-   -   Методы обхода XSS фильтрации (https://forum.antichat.xyz/showthread.php?t=224582)

ArT-I-ShocK 19.08.2010 03:05

[Инпут]

Здрасте. Данное писание посвящено обзору некоторых из способов обхода 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-значения.

Пример:

Код:

Код:

alert(String.fromCharCode(120,97,107,110,101,116,46,114,117))

, где цифры это десятичные коды(DEC) символов.

Пример:

Код:

Код:

alert(unescape(/%78%61%6b%6e%65%74%2e%72%75/.source))

, где "/%78%61%6b%6e%65%74%2e%72%75/" - это шеснадцатиричные коды (HEX) символов.

Ещё одним методом, является использование, в качестве альтернативы кавычкам, конструкции / /.source

Пример:

Код:

Код:

alert(/message/.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:

Знак "!" перед применением удалить

Код:

Код:
Пример (javascript:alert('xaknet.ru')) в Long HTML Entities DEC:

Знак "!" перед применением удалить

Код:

Код:
Пример (javascript:alert('xaknet.ru')) в HTML Entities HEX:

Знак "!" перед применением удалить

Код:

Код:
Использование атрибутов имеет такую особенность, благодаря которой можно использовать табуляцию, которая будет разделять вектор на части, и это даст вам ещё одну возможность обойти фильтрацию по названиям функций и методов JavaScript. Схожим методом является изменение регистра букв, но существенным недостатком данного способа является отсутствие возможности изменять регистр букв в названии метода.

Пример:

Код:

Код:
- такая конструкция работает.

Пример:

Код:

Код:
- такая конструкция работать не будет из-за aLeRt(), вызвавшего ошибку.

Так же можно комбинированно использовать эти два способа, но главное соблюдать целостности HEX и DEC значений закодированных символов, т.е. их не стоит разрывать табуляцией, т.к. конструкция не будет работать.

Пример HTML Entities DEC:

Знак "!" перед применением удалить

Код:

Код:
Всех атрибутов в которых реализована такая возможность я не нашел, да и не искал, т.к. временами случаются приступы вселенской лени, но как мне кажется, это атрибуты, которые имеют характер указателя на объект, либо атрибуты тегов указывающих на объект (страница, рисунок, аплет, и т.д.).

[3]-[Добавление угловой скобки]

Данный способ позволяет обойти фильтр, проверяющий сразу на присутствие соответствия открывающих и закрывающих угловых скобок, после обнаружения, которых, считает все, что в них находиться тегом и вырезает, либо видоизменяет до состояния неработоспособности. Избежать вмешательства фильтра можно путём добавления перед открывающим тегом второй открывающей угловой скобки. Особенность данного способа является обязательное наличие знака комментария //, который ставиться перед закрывающим тегом, дабы сделать вид прокомментированной посторонней закрывающей скобки, что бы не нарушить синтаксис и не вызвать ошибку.

Пример:

Код:

Код:

alert('message')//

Пример:

Код:

Код:
[4]-[Использование тега ]

Так как тег , в большинстве случаев, находится в начале кода страницы, вы, путём добавления закрывающего можете добиться вырезания всего кода страницы между открывающим и закрывающим тегами TITLE, что может добавить шансы на срабатывание скрипта, который должен выполниться сразу после , если использовать данную конструкцию:

Код:

Код:

alert("message");

- закрывает все, что находиться между страницы и векторным (вводимым вами) , после чего выполняет alert().

[5]-[Шифрование алгоритмом base64]

Также является хорошим способом, если фильтрация направлена на список названий тегов или JS-кода.

Пример:

Код:

Код:
PHNjcmlwdD5hbGVydCgneGFrbmV0LnJ1Jyk8L3NjcmlwdD4= - это зашифрованный вектор alert(xaknet.ru).

[6]-[Использование Flash.]

В качестве обфускации вектора, можно использовать ActionScript через Flash, путём использования переменных и присваивания им значений, которые являются частями xss-кода.

Пример:

Код:

Код:

a="get";
b="URL(\"";
c="javascript:";
d="alert('message');\")";
eval(a+b+c+d);

[7]-[Использование UTF-7]

Заключается данный способ в изменении кодировки символов xss-вектора на UTF-7. Это может сработать в тех случаях, когда в странице не указывается кодировка, и атакующий может заставить страницу испольвоть UTF-7, тем самым, обойти фильтрацию, изменив некоторые из символов UTF-8 на UTF-7.

Пример:

Код:

Код:

+ADw-SCRIPT+AD4-alert('message');+ADw-/SCRIPT+AD4-

В примере угловы кавычки представлены в кодировке UTF-7.

[8]-[Озэръ]

Тут я привёл некоторые из альтернативных вариантов проведения xss-атак:

Код:

">
- вызывается ошибка в атрибуте SRC=, из-за чего срабатывает alert().

with(document)alert(cookie) - эквивалентен alert(document.cookie).

prompt() - эквивалентен alert().

Внимание: некоторые из представленных способов работоспособны не во всех браузерах.

[Оутпут]

Как видно, это не все возможные способы обхода фильтрации, но основные их обличия я попытался описать. Мне хотелось бы увидеть только здравую и адекватную критику с вашей стороны...

Зэ энд, товарищи! Спасибо за этеншен.

[Feldmarschall] 19.08.2010 03:41

каждое слово боян =/

satana-fu 19.08.2010 03:54

Цитата:

Сообщение от ArT-I-ShocK
[5]-[Шифрование алгоритмом base64]
Также является хорошим способом, если фильтрация направлена на список названий тегов или JS-кода.
Пример:
Код:

Код:
PHNjcmlwdD5hbGVydCgneGFrbmV0LnJ1Jyk8L3NjcmlwdD4= - это зашифрованный вектор alert(xaknet.ru).
Внимание: некоторые из представленных способов работоспособны не во всех браузерах.

1.Не работает в IE начиная с 6 версии.

В 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. Двух помидоров достаточно?

Godfather Bulan 19.08.2010 12:04

Цитата:

Сообщение от satana-fu
PS.
Двух помидоров достаточно?

Удаляйте, товарищ Берия!

ArT-I-ShocK 19.08.2010 12:44

Тему я запостил т.к. будет полезно иметь представлении вообще об методах обхода.

Тема естественно заезженная, но вроде-бы такой нету.

Чтобы не придумывать велосипед, запостил наверно и практически все методы тут.

Статья опять же расчитана на новичка в этом деле.

Lilo 19.08.2010 12:48

Цитата:

Сообщение от ArT-I-ShocK
Тему я запостил т.к. будет полезно иметь представлении вообще об методах обхода.
Тема естественно заезженная, но вроде-бы такой нету.
Чтобы не придумывать велосипед, запостил наверно и практически все методы тут.
Статья опять же расчитана на новичка в этом деле.

ну ты не указал первоисточник.

афтар не ты ведь.

ArT-I-ShocK 19.08.2010 13:17

Цитата:

Сообщение от Lilo
ну ты не указал первоисточник.
афтар не ты ведь.

забыл, но он уже указан.

Конечно не я. Уже всё придумано

[Feldmarschall] 19.08.2010 17:56

Цитата:

Сообщение от ArT-I-ShocK
Мне хотелось бы увидеть только здравую и адекватную критику с вашей стороны...

еще и наглеет что ему хочется видеть....../../ -.-

Godfather Bulan 20.08.2010 04:29

Цитата:

Сообщение от ArT-I-ShocK
забыл, но он уже указан.
Конечно не я. Уже всё придумано

Таких тем на ачате дохера.

p.s. Его еще 11 дней терпеть. Там мб его загрузят =\

legaljo 20.08.2010 04:36

Оформление ужасное, информации по факту 0, такие методы уже не прокатят..

Godfather Bulan 20.08.2010 04:45

http://ha.ckers.org/xss.html

Самое четкое место, в котором все о различных xss (ну или почти все) и браузерах, в которых они работают

ArT-I-ShocK 20.08.2010 10:53

Трите темку эту.

2Godfather Bulan. Почему 11 дней и почему терпеть? Поставить в игнор тяжело раз не нравится?

P.S.

Цитата:

Сообщение от None
+1 Методы обхода XSS фильт... 19.08.2010 20:40 so_newbie а мне нравится


C#Lane 23.08.2010 00:12

Цитата:

Сообщение от ICEW!
Школьные дни для тебя скоро начнутся!

нуну кул хац, давай умник напиши обходы XSS фильтров? хмм думаю слабо. Статья не твоя, но раз ее оставили гуру ачата, значит посчитали нужной.

Добавь в заголовке - ретро методы обхода))

ICEW! 23.08.2010 00:22

Данный пост является оффтопиком, если пост будет мешать-потрите.

Цитата:

Сообщение от C#Lane
нуну кул хац, давай умник напиши обходы XSS фильтров? хмм думаю слабо. Статья не твоя, но раз ее оставили гуру ачата, значит посчитали нужной.
Добавь в заголовке - ретро методы обхода))

Я не занимаюсь взломами. Я на данный момент в теме кардинга. Так что прикрой пожалуйста свой ротик и набивай посты дальше!

Решил что он школьник-по его постам и темам. Что в этом сложного?

Если какие то проблемы пиши в пм- разберемся думаю быстро.

DeluxeS 23.08.2010 00:54

Цитата:

Сообщение от ICEW!
Я не занимаюсь взломами. Я на данный момент в теме кардинга. Так что прикрой пожалуйста свой ротик и набивай посты дальше!
Решил что он школьник-по его постам и темам. Что в этом сложного?
Если какие то проблемы пиши в пм- разберемся думаю быстро.

Суровый кардер епта :baa:

п\с: высокомерный школяр)

C#Lane 24.08.2010 01:09

Цитата:

Сообщение от DeluxeS
Суровый кардер епта :baa:
п\с: высокомерный школяр)

поддерживаю, ща карда ip пробьем и пизОосс тебе чел)

А раз не занимаешься взломами, то ты ваще не в теме мэн, школота -

Цитата:

Сообщение от ICEW!
Если какие то проблемы пиши в пм- разберемся думаю быстро.



Время: 13:43