Shocker
Инструмент для поиска и эксплуатации серверов, уязвимых для Shellshock
Ссылка: https://en.wikipedia.org/wiki/Shellshock_(software_bug)
Выпущен как open source компанией NCC Group Plc - https://www.nccgroup.trust/
Разработано:
- Tom Watson, tom [dot] watson [at] nccgroup [dot] trust
https://github.com/nccgroup/shocker
Выпущен под лицензией AGPL, см. LICENSE для получения дополнительной информации
Справочный текст
Использование:
shocker.py
-h, --help показать это справочное сообщение и выйти
--Host HOST, -H HOST Имя хоста или IP-адрес цели
--file FILE, -f FILE Файл, содержащий список целей
--port PORT, -p PORT Номер порта цели (по умолчанию=80)
--command COMMAND Команда для выполнения (по умолчанию=/bin/uname -a)
--cgi CGI, -c CGI Один CGI-скрипт для проверки (например, /cgi-bin/test.cgi)
--proxy PROXY СЕЙЧАС НЕМНОГО СЛОМАНО Прокси в формате 'ip:port'
--ssl, -s Использовать SSL (по умолчанию=False)
--threads THREADS, -t THREADS
Максимальное количество потоков (по умолчанию=10, макс=100)
--verbose, -v Подробный вывод
Примеры использования
./shocker.py -H 127.0.0.1 --command "/bin/cat /etc/passwd" -c /cgi-bin/test.cgi
Сканирует http://127.0.0.1/cgi-bin/test.cgi и, если найден, пытается выполнить cat для /etc/passwd
./shocker.py -H www.example.com -p 8001 -s
Сканирует www.example.com на порту 8001 с использованием SSL для всех скриптов из cgi_list и пытается выполнить стандартную эксплуатацию для любого найденного
./shocker.py -f ./hostlist
Сканирует все хосты из файла ./hostlist с параметрами по умолчанию
Зависимости
Python 2.7+
Журнал изменений
Изменения в версии 1.1 (июнь 2018)
- Добавлена дополнительная функциональность отладки и исправлен справочный текст
Изменения в версии 1.0 (март 2016)
- Добавлены некоторые дополнительные скрипты, обновлены комментарии, URL-адреса и контактные данные
Изменения в версии 0.72 (декабрь 2014)
- Незначительные исправления в логике и опечатки
Изменения в версии 0.71 (декабрь 2014)
- Добавлен тайм-аут для запросов urllib2.urlopen с использованием глобального 'TIMEOUT'
Изменения в версии 0.7 (ноябрь 2014)
- Добавлена интерактивная 'псевдо-консоль' для дальнейшей эксплуатации выбранного уязвимого сервера
- Попытка исправить проблемы с буферизацией вывода путём обёртывания sys.stdout в класс, который выполняет flush при каждом вызове write
- Добавлен индикатор прогресса для длительных задач, чтобы успокоить пользователей, не использующих подробный режим
Изменения в версии 0.6 (октябрь 2014)
- Предотвращение рассмотрения кодов возврата, отличных от 200, как успешных
- Добавлена возможность указать несколько целей в файле
- Перенесён список скриптов 'cgi_list', которые пытаются эксплуатировать, в файл
- Исправлены некоторые проблемы с форматированием вывода
- Исправлено регулярное выражение для проверки имени хоста/IP, чтобы допускать однословные имена хостов
Изменения в версии 0.5 (октябрь 2014)
- Добавлена возможность указать один скрипт для атаки вместо использования cgi_list
- Введён тайм-аут для операций с сокетами в host_check
- Добавлены примеры использования в заголовке скрипта
- Добавлен эпилог к справочному тексту, указывающий на наличие примеров
Изменения в версии 0.4 (октябрь 2014)
- Введён лимит количества потоков, по умолчанию 10
- Убрана поддержка цвета, пока не будет найдено решение, работающее одинаково хорошо как в Windows, так и в *nix
- Исправление орфографии
- Более полный cgi_list
- Удалён success_flag из вывода
До версии 0.4 (октябрь 2014)
TODO
- Определять и правильно реагировать на HTTP/200 ответ - ложные срабатывания - Низкий приоритет/хлопотно
- Реализовать curses для *nix систем - Для всего приложения или только для псевдо-терминала? - Низкий приоритет/красота
- Распараллелить начальную проверку хоста, теперь, когда поддерживается несколько целей (и это может сделать этот этап затратным по времени)
- Изменить verbose на целочисленное значение - quiet, normal, verbose, debug?
- Добавить опцию для пропуска начальной проверки хоста ради скорости?
- Добавить сводку результатов перед выходом
- Сохранять результаты в файл? Формат?
- Со временем планируется включить несколько возможных векторов, но сейчас проверяется только один.
- Добавить поддержку цвета в Windows и *nix - Низкий приоритет/красота
- Добавить тайм-аут в интерактивном режиме для команд, которые не завершаются, например, /bin/cat /dev/zero
- Приукрасить - Низкий приоритет/красота (очевидно)
- Добавить поддержку сканирования и эксплуатации SSH и SMTP? https://isc.sans.edu/diary/Shellshock+via+SMTP/18879
- Добавить поддержку SOCKS-прокси, возможно, с использованием https://github.com/rpicard/socksonsocks/ от Rober Picard
- Ещё что-нибудь. Вероятно.
Благодарности...
Anthony Caulfield @ NCC за время и усилия по рецензированию ранних версий
Brendan Coles @ NCC за его поддержку и вклад