Спам через AjaxForm

Одолел спам на этой неделе, в логах «POST /assets/components/ajaxform/action.php HTTP/1.0».
Формы с шаблонов убрал сoвсем, но спам продолжает идти со старыми параметрами/input, которые также были заменены.
Похоже на взлом AjaxForm, единственное упоминание о данной проблеме нашел на community.modx.com. Сталкивался кто-нибудь? Или пришло время переписывать все сайты на FetchIt?
Сергей
20 марта 2024, 17:50
modx.pro
1
183
0

Комментарии: 7

Павел Романов
20 марта 2024, 20:08
+2
Они шлют прямыми запросами на assets/components/ajaxform/action.php.
Сделайте сниппет chkbot:
<?php
$_SESSION['afchk'] = 1;
return true;

Добавьте его в &preHooks:
[[!AjaxForm?
&preHooks=`chkbot`
&hooks=`spam,email`
...
]]

А в файле assets/components/ajaxform/action.php на 23 строке добавьте:
if($_SESSION['afchk'] != 1){
    echo  $AjaxForm->success('Сообщение успешно отправлено.');
    die();
}
unset($_SESSION['afchk']);
    Сергей
    21 марта 2024, 11:56
    0
    Благодарю, добавил проверку сессии, только сразу
    die('Сообщение успешно отправлено.');
    до этого ставил редирект на главную (спам проскакивал пару раз). Сейчас уже 3 часа полет нормальный.

    Насколько я понял (php со словарем:)) там изначально проверка только на то что есть запрос ajax или нет, который получается можно подделать?

    Прямые запросы на assets/components/ajaxform/action.php в логах остались, количество сократилось.

    Имена и телефоны подставляют реальные из слитых баз, клиент сначала звонил по ним, некоторые отвечали что им звонят уже не первый раз из разных контор.
      Арман
      25 марта 2024, 18:43
      0
      Сегодня началась новая спам атака на сайт. Накидали за день номеров 200 на почту через assets/components/FetchIt/action.php. Этот код помог (стоит FetchIt). Единственное что не пойму почему не сработал файл .htaccess который я вставил в assets/components/FetchIt и прописал там
      RewriteEngine On
      RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?vision-hotel.ru [NC]
      RewriteRule \.* - [F]
      Похоже что заголовок Referer тоже подделывали при спаме.

      SendIt пока что не хочется ставить. В общем и целом нравится FetchIt так же там готовая интеграция с AmoCRM которую легко и быстро настроил через FetchIt sucsess.

      Надеюсь автор допилит этот момент из коробки. А так всем спасибо)
        Арман
        27 марта 2024, 20:02
        0
        Ну в общем я поторопился с выводами. Это помогла от спама который напрямую отсылал через action. Но не помог от этих сообщения который до этого были.
        config_prefer_imagemagick: 0
        src: http
        f: php
        action: web/phpthumb
        useRawIMoutput: 1
        IMresizedData:
        phoneform:
        Похоже он отправляет не напрямую и создается сессия поэтому этот код в данном случаи не помог. При этом игнорирует hook spam а также required на поле phoneform. Похоже на некорректную работу плагина на сайте я хз…

        Логи совпадающие со временем отправки
        109.248.15.180 - - [27/Mar/2024:10:07:17 +0300] "POST /assets/components/fetchit/action.php HTTP/1.0" 200 320 "https://site.ru/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:23 +0300] "GET / HTTP/1.1" 301 173 "-" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:23 +0300] "GET / HTTP/1.0" 200 19134 "-" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:33 +0300] "POST /connectors/system/phpthumb.php HTTP/1.0" 200 158 "https://site.ru:443/" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:33 +0300] "POST /assets/components/gallery/connector.php HTTP/1.0" 404 19134 "https://site.ru:443/connectors/system/phpthumb.php" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:34 +0300] "GET /assets/components/gallery/cache/http.836565742893abde7371fbf19ddc8253.php HTTP/1.0" 404 19134 "https://site.ru:443/assets/components/gallery/connector.php" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"
        2a12:5940:12c5::2 - - [27/Mar/2024:10:07:41 +0300] "GET /assets/images/accesson.php HTTP/1.0" 404 19134 "https://site.ru:443/assets/components/gallery/cache/http.836565742893abde7371fbf19ddc8253.php" "Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"

        Это то что внутри &form=`callbackform`
        <form action="[[~[[*id]]]]" method="post" class="p-4 p-md-5 border rounded-3 bg-primary bg-gradient">
                  <input type="hidden" name="nospam" value="">
                  <div class="form-floating mb-3">
                    <input name="phoneform" type="tel" class="form-control" id="phoneform" placeholder="+7 (XXX) XXX-XX-XX" pattern="(\+7|8)\s?[\(]?(\d{3})[\)]?\s?[\-]?(\d{3})[\-]?(\d{2})[\-]?(\d{2})" required>
                    <label for="phoneform">Телефон</label>
                    <div class="invalid-feedback" data-error="phoneform">[[+fi.error.phoneform]]</div>
                  </div>
                  <button class="w-100 btn btn-lg btn-light bg-gradient" type="submit">Жду звонка</button>
                  <hr class="text-white my-4">
                  <small class="text-white text-center">Свяжемся с вами в течении 1 минуты</small>
        </form>

        Вызов
        [[!FetchIt?
          &form=`callbackform`
          &preHooks=`chkbot`
          &hooks=`spam, email`
          &emailSubject=`Обратный звонок`
          &emailTo=`marketing@site.ru`
          &validate=`nospam:blank, phoneform: required`
          &validationErrorMessage=`В форме содержатся ошибки!`
          &successMessage=`Сообщение успешно отправлено!`
        ]]
        Артур Шевченко
        20 марта 2024, 20:42
        0
        По словам автора FetchIt использует тот же бэк, что AjaxForm, поэтому вряд ли переход на него спасёт от спама. А вот SendIt может помочь.
          Сергей
          21 марта 2024, 12:13
          0
          В соседней теме как раз из той же области походу.

          Буду пробовать SendIt, на новых точно уже без AjaxForm.
          Сергей
          20 марта 2024, 20:54
          0
          Пока не могу проверить ни то, ни другое. Доберусь только завтра. Сайт вообще отключён уже, а спам идёт дальше!
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            7