Как этот пользователь изменил свой сервер [REMOTE_ADDR]?

За последние несколько дней я получаю сотни сообщений об ошибках, похоже, кто-то пытается взломать закрытую часть моего сайта. Одним из механизмов безопасности, который мы используем, является блокировка, основанная на количестве обращений на IP (т. Е. Если один IP-адрес посещает эту страницу чаще, чем x раз в неделю).

Сообщение об ошибке включает в себя дамп сервера, и я вижу, что хакер пытается войти, изменив свой IP-адрес.
И мне просто интересно … как же он это сделал ?!

Включая здесь соответствующие серверные переменные:

_SERVER dump:
Array
(
[CLIENTIP] => 10.0.1.92
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_X_FORWARDED_FOR] => -1' OR 2+819-819-1=0+0+0+1 --, 104.196.143.54
[HTTP_X_FORWARDED_PORT] => 443
[HTTP_X_FORWARDED_PROTO] => https
[REMOTE_ADDR] => -1' OR 2+819-819-1=0+0+0+1 --
//etc
)

0

Решение

Если вы посмотрите внимательно, пользователь вставил заголовок X-Forwarded-For ( HTTP_X_FORWARDED_FOR). Этот заголовок никогда не следует доверять, когда он приходит извне, особенно если он не копируется в REMOTE_ADDR (который обычно содержит IP-адрес хоста, напрямую подключающегося к вашему серверу).

Поэтому убедитесь, что ваш сервер выбрасывает этот заголовок и не копирует его в любое другое поле. Я не знаю ваших настроек, но кажется, что вы используете прокси (под вашим контролем) где-то в ландшафте. CLIENT_IP похоже, что прокси IP (но это спекуляция без знания вашей точной настройки).

Этот прокси (или, вернее, самая лучшая система — я назову это внешний интерфейс— принимает соединения из Интернета) должен нести ответственность за выбросив заголовок и добавив его снова с адресом своего прямого клиента-так как

  1. злоумышленник не может подделать его (так как ему нужно передать свой реальный IP на ваш сервер, чтобы получить ответ), и
  2. вы захотите зарегистрировать этот адрес в бэкэнде после 1 .. прыжков с внешнего сервера.

ТЛ; др: Злоумышленник передал заголовок, который обычно используется в доверенной установке для передачи информации о «пути запроса». Этот заголовок был принят вашей системой, из-за чего выяснилось, что запросы пришли с какого-то странного «IP».

Кроме того, они попробовали SQL-инъекцию, которую можно использовать для выполнения произвольных операторов в базе данных (если вы не разделяете команды и параметры должным образом). -1' OR 2+819-819-1=0+0+0+1 в определенном сценарии — приведет к тому, что запрос будет возвращать все результаты, так как он сводится к -1' OR 1=1, что всегда верно, если ваш запрос выглядит так: … WHERE foo = '-1' OR 1=1,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]