Реализация: создание новых правил
Описываемый сканер уязвимостей - один из тех, которые можно легко и быстро обновлять вручную. Arirang содержит около 18 баз сканирования, хранимых в файлах с расширением *.uxe. По умолчанию положение этих баз данных определяется в момент компиляции программы. В OpenBSD, *.uxe файлы размещаются в директории /usr/local/share/arirang.
Отдельные правила определяются параметром -r. Ниже показано, как проверить вашу сеть на наличие червя Code Red или его потенциальных целей.
$ arirang -G -s 192.168.0.1 -e 192.168.3.255 \
> -P 20 -r /usr/local/share/arirang/codered.uxe
На первый взгляд, правила arirang могут показаться сложными для понимания, но все они следуют простой схеме. Рассмотрим несколько правил для примера.
200 OK- HEAD :/index.html.bak^Backup index.html file;
Remove backup and test files
from the web document root;
403- GET :/admin/^/admin/ directory;;
200 OK- HEAD :/include/^/include/ directory;Disable directory listings;
200 OK- GET :/msadc/..%255c..%255c..%255c../winnt/system32/cmd.exe?
/c+dir^IIS Superfluous Decode;MS01-026;
Правила разделяются на семь полей, при этом первое поле не обязательно. В таблице 8.3 описываются составные части правила для arirang.
Таблица
8.3.
"Правила сканирования" arirang
Поле |
Описание |
Receive code Код получения [OOB | PEEK | ALL]
|
(Необязательный.) Arirang может обработать сообщение Out-Of-Band (OOB) или Peek (залезть) в его содержимое. Это редко используется, но включено, чтобы средство поддерживало любой тип проверки уязвимости. ALL используется для ожидания ответа с сервера. Несколько проверок вынуждают сервер зависать или не возвращать никаких данных, включая заголовки. |
Response code Код ответа |
Обычно это числовой ответ с Web-сервера. 404 означает - не найдено, а 200 означает ОК, что подтверждает существование файла. Заметьте, что arirang требует от вас представлять 200 как 200 ОК. Другие коды ответов могут быть числовыми, т.е. 403. Это не обязательно должно быть кодом ответа HTTP, но может быть строкой длиной до 50 байтов (символов), чтобы искать в ней ответ HTML. |
--> |
Разделитель между кодом ответа и методом запроса. |
HTTP request method Метод запроса HTTP |
Любой метод запроса HTTP, обозначенный как HTTP/1.0 или HTTP/1.1 RFC. GET, HEAD, и POST используются большую часть времени, но arirang поддерживает такую технику как TRACE и OPTIONS. Метод OPTIONS показывает, какие возможности WebDAV поддерживает сервер. |
:<URI> |
Файл для проверки. Arirang также поддерживает строку запроса URI, т.е. login.asp? user=test>pass=test. Заставьте правило обратиться к определенному порту с помощью синтаксиса ::<port><URL>. Например, ::8080/ admin/docs/default.cfg запускает на порте 8080. Все другие опции остаются такими же. |
^<explanation> |
Короткое описание уязвимости. |
;<information;> |
Дальнейшее объяснение уязвимости, ссылка на совет или информацию по отладке. |
Поясняющие и информационные поля позволяют вам осуществлять вывод в сокращенной или расширенной форме.
Многоцелевые средства
Описываемые ниже инструментальные средства - это рабочие лошадки, используемые для осуществления соединений поверх HTTP или HTTPS. Соответственно, они не производят поиск уязвимостей или тестирование безопасности систем, но их функциональность может послужить основой для расширения возможностей сканеров уязвимости, обеспечивая поддержку SSL-трафика, или шифрование с целью защиты от прослушивания.
Curl
В то время как Netcat называют суперутилитой для сети, curl можно назвать суперутилитой для протоколов. Curl - это утилита командной строки, которая может поддерживать DICT, File, FTP, Gopher, HTTP, HTTPS, LDAP и Telnet. Она также поддерживает HTTP-прокси. Поскольку эта лекции сосредоточена на средствах Web-аудита, мы ограничимся протоколами HTTP и HTTPS.
Реализация
Для соединения с Web-сайтом задайте в командной строке URL
$ curl https://www.victim.com
Автоматизированный скрипт, который просматривает Web-сайт или осуществляет подбор паролей, в лучшем виде демонстрирует мощь программы curl. В таблице 8.4 представлены некоторые наиболее часто употребляемые параметры программы.
Таблица
8.4.
Наиболее употребляемые параметры Curl
Опция |
Описание |
-H/--header |
Устанавливает заголовок со стороны клиента. Используйте заголовок HTTP, чтобы имитировать несколько типов соединений.User-Agent: Mozilla/4.0. Имитирует конкретный броузер.
Referer: http://localhost/admin. Обходит слабую авторизацию,
которая проверяет страницу ссылок.
Basic Auth: xxxxx. Задает имя пользователя и пароль.
Host: localhost. Специфицирует виртуальные хосты
|
-b/--cookie -c/--cookie-jar |
-b использует файл, который содержит cookies, чтобы послать их на сервер. Например, -b cookie.txt включает содержимое cookie.txt во все запросы HTTP. Cookies также могут быть специфицированы в командной строке в форме -b ASPSESSIONID=INEIGNJCNDEECMNPCPOEEMNC. -c использует файл, который хранит cookies так, как они заданы сервером. Например, -c cookies.txt держит каждый cookie с сервера. Cookies важны для обхождения сессий формальной идентификации и обмана. |
-d/--data |
Предоставляет данные по запросу POST. Это включает данные формы или любые другие данные, генерированные Web-приложением. Например, чтобы задать поле формы для страницы логина, используйте -d login=arbogoth&passwd=p4ssw0rd. Эта опция полезна для написания сценариев подбора пароля. Ее реальное преимущество в том, что запросы делаются с POST, что значительно сложнее обмануть с помощью средства типа Netcat. |
-G/--get |
Изменяет метод POST так, что он использует GET. Применяется только, когда вы специфицируете опцию -d. |
-u/--user -U/--proxy-user |
Задает имя пользователя и пароль, использованные для базовой идентификации или proxy. Чтобы получить доступ к сайту с базовой идентификацией, используйте -u user:password. Чтобы получить доступ к защищенному паролем proxy, используйте U user: password. Это не имеет смысла, если опция -X не задана. |
--url |
Устанавливает URL на выборку. Это не обязательный параметр, но вносит ясность, когда используется много опций командной строки. Например, -url https://www.victim .com/admin/menu.php?menu=adduser. Curl дает быструю оптимизацию, когда множественные URL задаются в командной строке, потому что он пытается установить устойчивые соединения. Это означает, что все запросы будут производиться поверх первоначального соединения, вместо установки нового соединения для каждого запроса. |
-x/--proxy |
Задает HTTP proxy. Например, -x http://intraweb:80/. |
-K/--config |
Задает файл конфигурации, который включает последовательные опции командной строки. Например, -K www.victim.com.curl. |