Задать вопрос

Как найти уязвимость на php сайте?

Всем привет!

Проблема такая, на сервере хостится куча сайтов клиентов, все на самописных движках.
В последнее время с сервера идет постоянная массовая рассылка спама (( Очевидно что используется какая то уязвимость в каком то сайте (примерно знаю в каком судя по домену в отправляемых email`ах),

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

Есть конечно вариант отключить на сервере sendmail, но он используется практически на всех сайтах (отправка всяких форм\сообщений и т.п.)

Может кто сталкивался? Подскажите в какую сторону копать?

PHP 5.3.3
  • Вопрос задан
  • 9203 просмотра
Подписаться 5 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 8
la0
@la0
Решал аналогичную задачу.
Подменить sendmail_path вот на такое:
#!/usr/bin/php
<?php
date_default_timezone_set('Europe/Moscow');
$dir='/var/www/system/htdocs/mail/list/';
$input = file_get_contents('php://stdin');
preg_match('|^To: (.*)|', $input, $matches);
if ($matches[1]){
$d=preg_replace('/[^a-z\d@\.-]+/','',$matches[1]);
$d=str_replace('@','_',$d);
} else $d='undef';
if (!is_dir($dir.$d)){
  mkdir($dir.$d,0770);
}
$input=explode("\n\n",$input,2);
$input[0].="\nX-PM-Origin:".getenv('PWD');
$input=implode("\n\n",$input);

$fn=date('Y-m-d.His_').'rand'.rand(1111,9999).'.txt';

file_put_contents($dir.$d.'/'.$fn, $input);

В моём примере скрипт только логирует отосланое письмо. Чтобы почта ходила, вам нужнo добавлять заголовок received и класть файлик в папку с очередью sendmail; Ну и логировать getenv('PWD');
Затем адресно прописать п**дюдей по этому самому getenv('PWD')

Альтернативно, целесообразно заменить sendmail на exim, он умеет писать pwd в лог(к сожалению, я не смог быстро найти как это сделать)..
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Хоспади. Ну и насоветовали)

На примере exim:
while :; do cat /var/spool/exim4/input/*-H | grep X-PHP-Originating-Script: | sort | uniq; done
через некоторое время нагрепается название скриптов и строчки, из которых происходит отправка писем.

Дальше find /home -iname script.php - найдем, где этот скрипт лежит. Ну а дальше сносим и думаем, как он мог туда попасть.

Само собой, в php ini должен быть включен mail.add_x_header (включен обычно по дефолту).

Если так не получается, то можно включить это:
; The path to a log file that will log all mail() calls. Log entries include
;mail.log =
(в дебианах wheezy - /etc/php5/apache2/php.ini , 979 строка).

И попарсить лог, чтобы найти скрипт.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
У клиента постоянно ломали WP. Когда в очередной раз меня задолбало смотреть mail лог (mail.add_x_header, mail.log) загнал сайт под git. Теперь при малейшем подозрении git status сразу показывает, куда же прописался зловред. Метод хорошо себя показывает если файлы сайта меняются не очень часто.
Ответ написан
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Как вариант переопределить функцию mail в PHP, чтобы та логировала название сайта и тему письма.

Как узнаете какой сайт отправляет - выяснить с какой страницы и каким запросом и искать уязвимость уже там.
Ответ написан
@bankapi
Можно начать со сканнера уязвимостей BurpSuite или w3af.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сменить все пароли, удалить неиспользуемых системных пользователей, порезать лишние права.
Сравнить информацию в письмах (время отправки) с логами почты и http, вычислить страницу, к которой обращаются. Если такой нету, то значит какой-то скрипт уже сидит на сервере и пакостит.
Проверить открытые порты, список запущенных процессов, прибить всё лишнее, настроить файрвол.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
В php легко включается(одной строкой в php.ini) логгирование отправки емайлов там вы увидите какой скрипт именно отправляет ну и уже от него копать
Ответ написан
loader777
@loader777
Python/django разработчик
Недавно столкнулся с такой же проблемой. Через что взломали не нашел, но вредоносы все вычистил с помощью вот этого скрипта - www.revisium.com/ai/. находит веб шелы и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы