Уязвимость mail отправки на сайте WP

12 3
I8
На сайте с 12.02.2013
Offline
81
1897

Добрый день)

Суть проблемы:

Сайт на WP, используется форма обратной связи

При этом на некоторых страницах адреса получателя различные, то есть в настройках конкретной страницы есть поле для ввода маил-адреса конкретно для этой страницы – адрес получателя выражается переменной

Отправка писем идет через обычный phpmailer

Все настроено и работает корректно

Но из-за того, что адрес получателя выражается переменной, боты подставляют рандомные адреса и отправляют на них письма с формы обратной связи. По факту происходит спам на рандомные, даже не существующие маил адреса.

Пример из логов mail.log:

mail() on [/var/www/u0123***/data/www/site.su/wp-includes/cl ass-phpmailer.php:698]: To: kdannyn@aol.com — Headers: Date: Thu, 6 Dec 2018 17:41:56 +0000 From: Mikhail <myname@r-service.com> Message-ID: <a92faaf5bb2422bab914a2a8ba2c0f02@site.su> X-Mailer: PHPMailer 5.2.22 (github.com/PHPMailer/PHPM... MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit

В данном примере отправка идет на непонятный адрес kdannyn@aol.com, все остальные записи имеют схожий вид – меняются только адреса маил

Примеры из логов access.log:

173.249.31.49 – - [06/Dec/2018:20:08:47 +0300] "GET / HTTP/1.0" 200 24577 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"

173.249.31.49 – - [06/Dec/2018:20:08:49 +0300] "POST / HTTP/1.0" 302 – "site.su/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"

Здесь видно как бот зашел и оставил заявку, подставив маил адрес получателя, который указан выше.

Может у кого то есть решение)

Как видно из обращения бот отправляет запрос post, может есть возможность как то его граничить, не нарушая при этом функции отправки для реальных людей

Спасибо за внимание

S
На сайте с 30.09.2016
Offline
469
#1
intell88:
в настройках конкретной страницы есть поле для ввода маил-адреса конкретно для этой страницы

И при чём здесь боты, если речь о настройках? У Вас есть список конкретных адресов?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
SeVlad
На сайте с 03.11.2008
Offline
1609
#2
intell88:
используется форма обратной связи

Самописная дырявая кривуля?

intell88:
есть поле для ввода маил-адреса конкретно для этой страницы

Адреса ПОЛУЧАТЕЛЯ?

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Gerga
На сайте с 02.08.2015
Offline
94
#3

intell88, интересно взглянуть как у вас определяется адрес получателя для страницы. Как я могу представить, в вашей форме есть input, в котором вписывается адрес получателя из произвольного поля, это нужно исправить.

I8
На сайте с 12.02.2013
Offline
81
#4
SeVlad:
Самописная дырявая кривуля?

Адреса ПОЛУЧАТЕЛЯ?

Да адрес получателя.

В функциях темы:

if(isset($_POST['send_message'])):

$capkey = get_query_var( 'capkey' );

session_start();

if ( $_SESSION["code"] != $_POST["captcha"]) {

wp_redirect( '?status=error' );

exit;

}

Redux::init( 'redux_opt' );

// global $redux_opt;

$phone = $_POST['phone'];

$region = $_POST['name_region'];

$page = $_POST['page'];

$email_to = $_POST['email_to'];

$message .= '<p><b>имя: </b>нет</p>';

$message .= '<p><b>телефон: </b>'.$phone.'</p>';

$message .= '<p><b>содержание: </b>'.$region.'</p>';

$headers = 'From: Mikhail <myname@r-service.com>' . "\r\n";

if( isset($_POST['name']) && !empty($_POST['name']) ){

$message .= '<p><b>Имя: </b>'.$_POST['name'].'</p>';

}

add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));

wp_mail($email_to, 'Заявка от #4268119', $message, $headers);

wp_redirect( '?status=success' );

exit;

endif;

if(isset($_POST['send_message1'])):

Redux::init( 'redux_opt' );

// global $redux_opt;

$phone = $_POST['phone'];

$region = $_POST['name_region'];

$page = $_POST['page'];

$email_to = $_POST['email_to'];

$message .= '<p><b>имя: </b>нет</p>';

$message .= '<p><b>телефон: </b>'.$phone.'</p>';

$message .= '<p><b>содержание: </b>'.$region.'</p>';

$headers = 'From: Mikhail <myname@r-service.com>' . "\r\n";

add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));

wp_mail($email_to, 'Заявка от #4268119', $message, $headers);

wp_redirect( '?status=success' );

exit;

endif;

там две формы на сайте

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
intell88:
Да адрес получателя.

О, ужас.

Поставь плагин и не ищи приключений на седалище.

I8
На сайте с 12.02.2013
Offline
81
#6
Gerga:
intell88, интересно взглянуть как у вас определяется адрес получателя для страницы. Как я могу представить, в вашей форме есть input, в котором вписывается адрес получателя из произвольного поля, это нужно исправить.

Добрый день [ATTACH]179707[/ATTACH]

Это как я понял через redux идет

png 179707.png
I8
На сайте с 12.02.2013
Offline
81
#7
SeVlad:
О, ужас.

Поставь плагин и не ищи приключений на седалище.

Добрый день, а плагин позволяет задавать адрес получателя на каждую страницу?

Gerga
На сайте с 02.08.2015
Offline
94
#8

intell88, покажи код формы.

---------- Добавлено 07.12.2018 в 10:57 ----------

intell88:
плагин позволяет задавать адрес получателя на каждую страницу?

Можно сделать, чтобы он это позволял. Но в твоем случае можно обойтись малой правкой, чтобы не переделывать структуру.

I8
На сайте с 12.02.2013
Offline
81
#9
Gerga:
intell88, покажи код формы.

---------- Добавлено 07.12.2018 в 10:57 ----------


Можно сделать, чтобы он это позволял.

Код формы:

<form action="" method="POST" class="default-form">

<h3 class="default-description">

Просто укажите ваш телефон, мастер

перезвонит вам в течении 3-х минут </h3>

<input type="hidden" name="name_region" value="" />

<input type="hidden" name="page" value="site.su/">

<input type="hidden" name="email_to" value="shaky-m@yandex.ru, dfg@yandex.ru.ru" />

<input type="number" name="phone" class="text-input" placeholder="+7 (---) --- -- --" required="required">

<img src="http://site.su/wp-content/themes/rsm/captcha.php" class="captcha-image" />

<input type="text" class="captcha-input" name="captcha" placeholder="Введите код" required="required" />

<input type="submit" name="send_message" class="submit-btn" value="Оставьте заявку">

</form>

SeVlad
На сайте с 03.11.2008
Offline
1609
#10
intell88:
а плагин позволяет задавать адрес получателя на каждую страницу?

Есть масса вариантов как отправлять почту кому надо, даже не засвечивая их адреса.

Самое простое - отдельная форма на каждую страницу. (сами формы просто копируются)

Более элегантное - форма с условиями. (тот же CF7+аддон.)

В крайнем случае вообще можно отправлять на один "ничейный" адрес и делать пересылку кому надо уже почтовым сервером по условиям (напр. по теме).

А заголовок топика-то.. В лучших традициях желтушной прессы.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий