
OWASP Foundation Web Respository
WWWGrep — это механизм быстрого поиска («грепа»), который анализирует HTML-элементы по типу и позволяет выполнять целенаправленный (одиночный), множественный (по URL-адресам из файла) и рекурсивный (с учётом корневого домена или без него) поиск. Имена и значения заголовков также могут рекурсивно искаться таким же образом. WWWGrep был разработан для помощи как специалистам по взлому, так и разработчикам в быстром анализе проверяемой кодовой базы; некоторые варианты использования и примеры приведены ниже.
Установка
git clone
pip3 install -r requirements.txt
python3 wwwgrep.py <аргументы и параметры>
Зависимости (pip3 install -r requirements.txt)
- Python 3.5+
- BeautifulSoup 4
- UrlLib.parse
- requests_html
- argparse
- requests
- re
- os.path
wwwgrep.py [цель/файл] [строка_поиска] [параметры_поиска/критерии/рекурсия_и_т.д.]
Search Inputs
search_string Указывает строку для поиска, или альтернативно «»
для всех объектов типа, указанного в параметрах поиска
-t --target Указывает один URL в качестве цели для поиска
-f --file Указывает файл, содержащий список URL-адресов для поиска
Recursion
-rr --recurse-root Ограничивает рекурсию URL-адресов доменом, указанным в цели
-ra --recurse-any Разрешает рекурсию за пределами домена цели
Matching Criteria
-i --ignore-case Выполняет поиск без учёта регистра (по умолчанию учитывается регистр)
-d --dedupe Разрешает дублирование находок на странице (по умолчанию дубликаты удаляются)
-r --no-redirects Не разрешает перенаправления (по умолчанию перенаправления разрешены)
-b --no-base-url Опускает URL совпадения из вывода (по умолчанию URL включается)
-x --regex Разрешает использование регулярных выражений (search_string обрабатывается как RegEX, по умолчанию выключено)
-e --separator Указывает разделитель вывода (по умолчанию : )
-j --java-render Включает рендеринг объектов и текста страницы с помощью JavaScript (по умолчанию выключено)
-p --linked-js-on Включает поиск по подключённым (script src теги) JavaScript (по умолчанию выключено)
Request Parameters
-ps --https-proxy Указывает прокси для протокола HTTPS в формате https://<ip>:<port>
-pp --http-proxy Указывает прокси для протокола HTTP в формате http://<ip>:<port>
-hu --user-agent Указывает строку для использования в качестве User-Agent в запросе
-ha --auth-header Указывает Bearer-токен или другую строку аутентификации для использования в заголовке запроса
Search Parameters
-s --all Ищет по всему HTML и скриптам страницы термины, соответствующие спецификации поиска
-sr --relative Ищет ссылки на странице, соответствующие спецификации поиска, как относительные URL
-sa --absolute Ищет ссылки на странице, соответствующие спецификации поиска, как абсолютные URL
-si --input-fields Ищет поля ввода на странице, соответствующие спецификации поиска
-ss --scripts Ищет теги скриптов, соответствующие спецификации поиска
-st --text Ищет видимый текст на странице, соответствующий спецификации поиска
-sc --comments Ищет комментарии на странице, соответствующие спецификации поиска
-sm --meta Ищет в метаданных страницы совпадения со спецификацией поиска
-sf --hidden Ищет в скрытых полях конкретные совпадения со спецификацией поиска
-sh --header-name Ищет в заголовках ответа конкретные совпадения со спецификацией поиска
-sv --header-value Ищет значения заголовков ответа для конкретных совпадений со спецификацией поиска
Найти все поля ввода с именем login на сайте рекурсивно, не покидая корневой домен, без учёта регистра в совпадении
wwwgrep.py -t https://www.target.com -i -si “login” -rr
Найти все комментарии, содержащие термин «to do» на всех страницах сайта
wwwgrep.py -t https://www.target.com -i -sc “to do” -rr
Найти все комментарии на конкретной веб-странице
wwwgrep.py -t https://www.target.com/some_page -i -sc “”
Найти все скрытые поля в списке веб-приложений, содержащихся в файле input.txt, используя рекурсию сайта
wwwgrep.py -f input.txt -sf “” -rr