
CLI-инструмент для обнаружения уязвимостей HTTP Request Smuggling с использованием анализа временных задержек и встроенными полезными нагрузками CL.TE и TE.CL для автоматизированного тестирования безопасности.
Контрабанда HTTP-запросов — это уязвимость высокой степени серьезности, представляющая собой технику, при которой злоумышленник провозит неоднозначный HTTP-запрос в обход средств безопасности и получает несанкционированный доступ для выполнения вредоносных действий. Уязвимость была обнаружена еще в 2005 году watchfire, а позднее, в августе 2019 года, переоткрыта Джеймсом Кеттлом - (albinowax) и представлена на DEF CON 27 и Black-Hat USA. Чтобы узнать больше об этой уязвимости, вы можете обратиться к его хорошо документированным исследовательским блогам на сайте Portswigger. Итак, идея этого инструмента безопасности заключается в обнаружении уязвимости HRS для заданного хоста, причем обнаружение основано на технике временной задержки с заданными перестановками. Чтобы узнать больше об этом инструменте, я настоятельно рекомендую прочитать мой пост в блоге об этом инструменте.
Инструмент написан на Python, и для его использования на вашем локальном компьютере должна быть установлена версия Python 3.x. На вход подается либо один URL, либо список URL-адресов, которые необходимо указать в текстовом файле. Следуя методике обнаружения уязвимости HRS, инструмент содержит встроенные полезные нагрузки (перестановки), включающие около 37 перестановок и детектирующих полезных нагрузок как для CL.TE, так и для TE.CL. Для каждого заданного хоста он формирует объект атакующего запроса, используя эти полезные нагрузки, вычисляет затраченное время после получения ответа на каждый запрос и принимает решение об уязвимости. Однако в большинстве случаев высока вероятность ложноположительного срабатывания, поэтому для подтверждения уязвимости можно использовать Burp Suite Turbo Intruder и опробовать свои полезные нагрузки.
Прежде чем сканировать какие-либо цели, важно знать некоторые юридические оговорки. У вас должно быть соответствующее разрешение на сканирование любой цели; в противном случае я рекомендую не использовать этот инструмент для сканирования несанкционированных целей. Для обнаружения уязвимости он отправляет несколько полезных нагрузок несколько раз с помощью опции (--retry). Это означает, что если что-то пойдет не так, существует вероятность, что бэкенд-сокет будет отравлен этими полезными нагрузками, и любой реальный посетитель этого сайта может увидеть отравленную полезную нагрузку вместо actual-содержимого сайта. Поэтому я настоятельно рекомендую принять надлежащие меры предосторожности перед сканированием любого целевого сайта, иначе вы можете столкнуться с юридическими проблемами.
git clone https://github.com/anshumanpattnaik/http-request-smuggling.git
cd http-request-smuggling
pip3 install -r requirements.txt
usage: smuggle.py [-h] [-u URL] [-urls URLS] [-t TIMEOUT] [-m METHOD]
[-r RETRY]
HTTP Request Smuggling vulnerability detection tool
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL set the target url
-urls URLS, --urls URLS
set list of target urls, i.e (urls.txt)
-t TIMEOUT, --timeout TIMEOUT
set socket timeout, default - 10
-m METHOD, --method METHOD
set HTTP Methods, i.e (GET or POST), default - POST
-r RETRY, --retry RETRY
set the retry count to re-execute the payload, default
- 2
python3 smuggle.py -u <URL>
python3 smuggle.py -urls <URLs.txt>
Если вы считаете, что детектирующую полезную нагрузку необходимо изменить для повышения точности, вы можете обновить полезную нагрузку в файле payloads.json в массиве detection.
"detection": [
{
"type": "CL.TE",
"payload": "\r\n1\r\nZ\r\nQ\r\n\r\n",
"content_length": 5
},
{
"type": "TE.CL",
"payload": "\r\n0\r\n\r\n\r\nG",
"content_length": 6
}
]
Этот проект лицензирован в соответствии с лицензией MIT.