В последнее время я все чаще понимаю насколько херово обстоят дела с безопасностью в небольших компаниях, где сервера расположены не в приватной сети а имеют белые адреса. Наличие приватной сети конечно ничего не гарантирует, всегда остаются другие способы ломануть тебя. Если твои программисты слабо понимают что такое SQL-injection, XSS и прочие - значит таких дыр у вас в избытке. Вы просто об этом пока не знаете. Но как только компания растет и становится более заметной - жди сюрпризов. В общем сегодня у меня вечер грустных историй.
История номер 1: Жила была форма загрузки документов, где-то в жопе админки. Написана хер знает когда и хер знает кем. Она была защищена паролем. Но потом добавили модный self-onboarding, и любой хмырь теперь может создать аккаунт и получить доступ к админке. Но ее конечно никто на уязвимости не проверял. Ей же только "свои" пользуются. Выяснилось что если через эту форму загрузить файл image.jpg.php то форма считает его картинкой, а веб сервер - выполняемым PHP файлом. А потом ты просто загружаешь вместо документа файл с одной единственной строчкой: <?=`$_POST[1]`?> И вуаля - remote code execution и сервер у тебя в кармане. Можешь делать с ним все что хочешь
История номер 2: мало кто знает/помнит, но у FPM протокола нет авторизации. И если вы ненароком написали в конфиге PHP-FPM listen=0.0.0.0:9000 или просто listen=9000 то это равнозначно:
- Держи все сервера за высоким забором/VPN. Иначе хер уследишь
- Проверяй что тебе загружают. Даже если форма доступна только для "своих"
- Держи то что загружено - на отдельном домене, где нет никакого выполнения PHP кода. Пусть на этом домене все отдается как статика. Это и для производительности не плохо, и для безопасности. В таком случае даже если к тебе загрузят гавно - они смогут его только обратно скачать и ничего более
Комментариев нет:
Отправить комментарий