zeroroot
Добрый день, подскажите пожалуйста как найти в коде бэкдоры, или конструкции в коде которые передают важные данные ?
И как обезопасить данные от базы данных и ftp доступа, чтобы н-ые лица не смогли ничего сделать.
ADSoft
молча…. просто берете и ищите, вникаете в то что написано, желательно на все 100%
zeroroot
А как примерно выглядят конструкции, просто есть всякие файлы даже обычных и известных библиотек, использующие непонятный код
Drunkenmunky
Как угодно.
Всё это сводится примерно к следующемуКод (Text):
if($command) { action(); }Пользуйтесь услугами проверенных исполнителей. Платите им задаток.
И не будет вам никаких бэкдоров в коде.
yanuzay
Часто вредоносный код зашифрован, какими нибудь алгоритмами шифрования, перед выполнением расшифровывается php функциями.
Например может быть , что то вроде:
PHP:
Функция eval() выполняет php код , который передан этой функции
musicman3
В первую очередь необходимо отфильтровать все входящие POST/GET/SERVER. Для этого есть разные варианты функций. Основной считается filter_input. Далее нужно фильтровать URL на присутствие XSS. Также от атак SQL-inject в наше время давно уже применяют PDO и подготовленные запросы. Этих трех пунктов хватит чтобы защититься от большей части проблем. Ну и настройки htaccess, сервера и т.п. Главное правило — не доверять всему что из вне, и проводить валидацию, фитльтрацию, хэширование важных данных и т.п.
mkramer
Раскройте, пожалуйста, чего мне там фильтровать в урле, какое к этому вообще сервер отношение имеет?
don.bidon
Человек путает всякий XSS и бэкдор )
musicman3
В формах/выводе фильтрация XSS, url не знаю чего приписал, видимо запарился в тот день. Конечно я ошибся. Спасибо что поправили. В моем проекте я фильтрую весь вывод из БД на XSS. И частично фильтрую некоторые входящие формы на htmlspecialchars. Обычно проще сделать это на выводе в районе обертки PDO ну или еще где-то. Филльтры XSS и LFI фильтруют у меня примерно это:
Код (Text):
«<script», «/script», «javascript:», «/.», «//»Если есть советы что еще кинуть, то буду рад. Я тестил по большим базам на бэкдоры (нашим и западным), но конечно могут быть еще какие то лазейки, и ключевые слова лучше знать. Хацкеры не сидят на месте, прогрессируют. Обычно этих фильтров уже достаточно на 99% XSS. Я перепробовал несколько тысяч типичных XSS и все закрыл на текущий момент по базам XSS атак. Но лучше быть на чеку всегда. Если есть советы, то это очень хорошо.
musicman3
Вот моя функция для фильтрация вывода из PDO. Она закрывает типичные атаки вроде XSS и LFI.
https://github.com/musicman3/eMarke…a6e2df78c0c4/model/eMarket/Core/Func.php#L399
Если есть советы как еще прокачать ее, то было бы замечательно.
don.bidon
XSS !== Backdoor
musicman3
Ок, я не хакер, вам виднее… выразился как смог, но суть думаю ясна. Приму во внимание замечание.
mkramer
Достаточно < и > заменить на < &qt; чтоб скрипт не выполнился. Но всё равно, естественно, я делаю htmlspecialchars (точнее, за меня фреймворк делает). Хотя, если нужно оставить какой-то html, тогда другой разговор. Но в таком случае я пользуюсь готовыми решениями, а не самописом, например HtmlPurifier
Дюран
Если вы хотите обезопаситься от предыдущих разработчиков, то тут без специалиста не обойтись.
И то, это будет не так просто.
Ведь любая ошибка, не полностью продуманная система прав доступа, намеренно опущенная хоть в одном случае защита от xss, может стать дополнительным входом на ваш сайт.
Плюс держите код в Git, чтобы изменения в файлах были видны.
musicman3
Этого оказывается не достаточно. Я сам столкнулся с этим, когда тестировал по базам XSS. Там такие хитрецы наделали кода что лучше быть к этому готовым.
Как пример атаки:
Код (Javascript):
+/v9 +ADw—script+AD4—alert(1)+ADw-/script+AD4—Если есть js фреймворки вроде VUE, Angullar и т.п., то есть и для них отличные дыры
Код (Text):
{{constructor.constructor(‘alert(1)’)()}}Познавательно походить по базам XSS методов.
Вот если на входе htmlspecialchars и еще выход фильтровать по другим параметрам, то мне удалось так все методы что я нашел в базах обезвредить. Но у меня js на ванили и нет js-фреймворков. У кого они есть, там еще нужно фильтровать. Но не факт что нет еще методов.
Также нужно экранировать одинарные кавычки и/или 2 слэша //, ибо может быть атака типа такой:
Код (Javascript):
‘;window[‘ale‘+’rt‘](window[‘doc‘+’ument‘][‘dom‘+’ain‘]);//или
Код (Javascript):
‘;this[/al/.source+/ert/.source](/XSS/.source);//
mkramer
И каким образом пользователь может мне подставить такое? Angular 100% не подставляет в eval содержимое строковых переменных
Опять же, это актуально, если я беру и вывожу эту хрень посреди js-кода, не пропуская через json_encode();
— Добавлено —А как эксплуатировать эту хрень? Вот я её подставил, она нифига не сработала
https://www.ideone.com/Uupy2Y
— Добавлено —
Поделитесь с сообществом сайты, где вы всё это взяли?
musicman3
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
https://owasp.org/www-community/xss-filter-evasion-cheatsheet
и т.п.Таких сайтов очень много. Там перечисляются методы, которые имеют место быть. Хорошие базы для тестирования по сути. Вставляем в форму обратной связи к примеру (или в другие места, где это актуально через DOM и т.п.) и тестируем. Что срабатывает то и прикрываем.