# \[M] Forms

### Общее описание

Используется для перебора методом грубой силы (bruteforce). В случае работы с сырым (raw) HTTP используется метод POST, в режиме selenium работа идёт согласно логике целевого сайта. В качестве источника паролей используется словарь.

Конфигурация перебора В работе с сырым (raw) HTTP конфигурацией является тело POST-запроса содержащее маркеры «^USER^» и «^PASS^» на места которых будут подставляться логин и пароль соответственно. Указывается в параметре «--conf-str». Примеры:

* login=^USER^\&password=^PASS^
* {"login":"^USER^","pwd":"^PASS^"}&#x20;

Если работа идёт в режиме selenium, то конфигурация перебора сохраняется в файле, путь к которому указывается в параметре «--conf-file». Он должен состоять из трёх строк, в начале которых располагается маркер, затем идёт символ табуляции (\t), после чего указывается CSS-селектор связанный с маркером. В этом режиме используются следующие маркеры:

* ^USER^ - поле в которое будет введён логин&#x20;
* ^PASS^ - поле в которое будет введён пароль&#x20;
* ^SUBMIT^ - элемент по которому нужно кликнуть для отправки формы&#x20;

Пример содержимого такого файла:

```
^USER^    #user
^PASS^    #pass
^SUBMIT^    #submit
```

Здесь логин будет вводиться в текстовое поле с id=user, пароль в текстовое поле с id=pass, и затем будет происходить клик по элементу с id=submit.

## Примеры

Простой брут POST формы:

```
./ws.py Forms --url http://simple.polygon.web-scout.online/admin.php --dict bases/demo/dict.txt --conf-str "login=^USER^&password=^PASS^" --false-re "User: " --login admin
```

Брут формы в selenium-режиме:

```
./ws.py Forms --url http://selenium.polygon.web-scout.online/admin.php --dict bases/demo/dict.txt --conf-file bases/demo/form-brute.conf --false-re "User: " --login admin --selenium 1 --browser-wait-re "checking"
```

### Опции (\* - обязательные)

{% hint style="info" %}
Для параметров «-conf-file», «--conf-str» обязательным является указание одного из них. Для «--true-phrase», «--false-phrase», «--false-size» аналогично.
{% endhint %}

{% hint style="info" %}
**R** - присутствует ли в raw режиме\
**S** - присутствует ли в selenium режиме.
{% endhint %}

| Имя                   | По умолчанию | R   | S   | Описание                                                                                                                                                                                                                                                                                                |
| --------------------- | ------------ | --- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --url \*              |              | Да  | Да  | Ссылка на страницу куда должен уходить запрос (в случае сырого HTTP), или где находится форма (selenium-режим)                                                                                                                                                                                          |
| --dict \*             |              | Да  | Да  | Путь к словарю паролей                                                                                                                                                                                                                                                                                  |
| --login \*            |              | Да  | Да  | Целевой логин                                                                                                                                                                                                                                                                                           |
| --conf-str \*         |              | Да  | Нет | Только для raw режима. Строка конфигурации перебора для режима работы с сырым HTTP                                                                                                                                                                                                                      |
| --conf-file \*        |              | Нет | Да  | Файл с конфигурацией перебора для selenium-режима                                                                                                                                                                                                                                                       |
| --true-re \*          |              | Да  | Да  | RegEx (python.re), при наличии совпадений в теле ответа свидетельствующая о положительном результате.                                                                                                                                                                                                   |
| --false-re \*         |              | Да  | Да  | RegEx (python.re), при наличии совпадений в теле ответа свидетельствующая об отрицательном результате.                                                                                                                                                                                                  |
| --false-size \*       |              | Да  | Да  | Размер тела отрицательного ответа. Помните что разные утилиты могут давать разный размер ответа. Используйте тестовый режим чтобы узнать нужное вам значение.                                                                                                                                           |
| --pass-max-len        |              | Да  | Да  | Пароли больше этой длины будут пропускаться                                                                                                                                                                                                                                                             |
| --pass-min-len        |              | Да  | Да  | Пароли меньше этой длины будут пропускаться                                                                                                                                                                                                                                                             |
| --first-stop          | 0            | Да  | Да  | Останавливать работу после первого найденного результата. Связано это с вероятностью ложных срабатываний.                                                                                                                                                                                               |
| --follow-redirects    | 1            | Да  | Нет | Следовать по редиректам отправляемым сервером. Только raw-режим. В selenium-режиме такое происходит автоматически.                                                                                                                                                                                      |
| --reload-form-page    | 0            | Нет | Да  | Только selenium-режим. Включение данного параметра приводит к тому, что целевая страница открывается заново после каждой попытки заполнения формы. Может пригодиться тогда, когда после неудачной попытки авторизации на итоговой странице не видно формы и пользователю нужно как-то вернуться на неё. |
| --bruterforce-method  | POST         | Да  | Нет | Метод перебора (GET/POST)                                                                                                                                                                                                                                                                               |
| --proxies             |              | Да  | Да  | Файл со списком http-proxy.                                                                                                                                                                                                                                                                             |
| --retest-re           |              | Да  | Да  | Регулярное выражение (python.re) для поиска в ответе сервера признака необходимости переотправить запрос. Например «Service Temporarily Unavailable».                                                                                                                                                   |
| --retest-codes        |              | Да  | Нет | Набор кодов (через запятую) указывающих на то, что запрос нужно отправить заново. Например «502,503».                                                                                                                                                                                                   |
| --headers-file        |              | Да  | Нет | Файл с http заголовками для включения в заголовки запроса.                                                                                                                                                                                                                                              |
| --delay               | 0            | Да  | Да  | Задержка между запросами (в секундах). Касается не всех рабочих потоков в целом, а каждого потока в частности.                                                                                                                                                                                          |
| --threads             | 10           | Да  | Да  | Количество рабочих потоков                                                                                                                                                                                                                                                                              |
| --parts               |              | Да  | Да  | На сколько частей разбить проверяемый список (словарь, маску)                                                                                                                                                                                                                                           |
| --part                |              | Да  | Да  | С какой из частей проверяемого списка работаем.                                                                                                                                                                                                                                                         |
| --test                | 0            | Да  | Да  | Включение тестового режима                                                                                                                                                                                                                                                                              |
| --xml-report          |              | Да  | Да  | Путь к xml-отчёту                                                                                                                                                                                                                                                                                       |
| --selenium            |              | Нет | Да  | Включение selenium-режима                                                                                                                                                                                                                                                                               |
| --browser-recreate-re |              | Нет | Да  | Регулярное выражение (python.re). При совпадении в ответе веб-сервера бразер будет закрыт и запущен заново. При этом будет сменён прокси, если они используются.                                                                                                                                        |
| --browser-wait-re     |              | Нет | Да  | Регулярное выражение (python.re). При совпадении в ответе веб-сервера браузер остановит работу и будет ждать пока совпадение не исчезнет. Может использоваться для ручного ввода captcha или обхода anti-ddos защит («wait 5 secs, we check your browser»).                                             |
