Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Потенциальная дыра в netcat?

28.06.2016, 15:17
autocat

Зарегистрирован:
2015-04-12
Сообщений: 15

Потенциальная дыра в netcat?
файл netcat/admin/mailer.php
Код:
<?

// Parameters (GET): number (default: 20)

$NETCAT_FOLDER = join(strstr(__FILE__, "/") ? "/" : "\\", array_slice(preg_split("/[\/\\\]+/", __FILE__), 0, -3)).( strstr(__FILE__, "/") ? "/" : "\\" );
include_once ($NETCAT_FOLDER."vars.inc.php");
require_once ($ROOT_FOLDER."connect_io.php");
require_once ($INCLUDE_FOLDER."lib/Mail/Queue.php");

$number = $_GET['number'] ? $_GET['number'] : 20;

$db_options = array('type' => 'ezsql', 'mail_table' => 'Mail_Queue');
$mail_options = array('driver' => 'mail');

$mail_queue = new Mail_Queue($db_options, $mail_options);
$mail_queue->sendMailsInQueue($number);
?>


Передача парметра идет в эту функцию:
Код:

function sendMailsInQueue($limit = MAILQUEUE_ALL, $offset = MAILQUEUE_START,
$try = MAILQUEUE_TRY)
{
$this->container->setOption($limit, $offset, $try);
while ($mail = $this->get()) {
$this->container->countSend($mail);

$result = $this->sendMail($mail);

if (!PEAR::isError($result)) {
$this->container->setAsSent($mail);
if($mail->isDeleteAfterSend()) {
$this->deleteMail($mail->getId());
}
} else {
PEAR::raiseError(
'Error in sending mail: '.$result->getMessage(),
MAILQUEUE_ERROR_CANNOT_SEND_MAIL, PEAR_ERROR_TRIGGER,
E_USER_NOTICE);
}
}
return true;
}
03.07.2016, 16:46
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Вы имеете в виду, что злоумышленник может раньше расписания разослать письма в очереди или отправить их слишком много чтобы сайт-жертва попал в спамлисты?
В общем-то, действительно, нехорошо, можно насолить. Передам разработчикам.
11.10.2017, 17:34
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Проблему разработчики уже исправили. Теперь доступ к скрипту рассылки без указания cron_key со значением $nc_core->get_settings('SecretKey'); более невозможен.
198 196 2017-10-11 17:34:10 14556
Описание проекта