У меня есть httpd, работающий на RHEL8, с одним сервером, на котором размещено несколько разных сайтов, связанных с одной и той же кодовой базой. На нем размещен наш основной сайт, содержащий код из ветки master. На нем также размещаются сайты разработчиков в качестве поддоменов и серверы для просмотра приложений. Поскольку мы используем один подстановочный сертификат практически для всей нашей организации, сайты разработчиков и обзорных приложений в настоящее время не обслуживаются через https.
Недавно во время некоторого тестирования я обнаружил (
) страницы, на которой POST был введен произвольный текст пользователя о том, что запрос не выполнен с помощью net::ERR_CONNECTION_RESET в консоли браузера. Ключевым моментом здесь является то, что запрос должен содержать очень конкретную полезную нагрузку. Он отправляется с помощью x-www-form-urlencoded, а незакодированное содержимое — ;ls. Таким образом, полная необработанная полезная нагрузка равна prov_comm_notes=%3Cp%3E%3Bls%3C%2Fp%3E. В логах сервера я вообще ничего не нашел. Ничего в httpd или php-fpm. Запрос даже не запускал процесс php. Через ряд событий я решил попробовать страницу с https, хотя наш сертификат недействителен для поддомена, и, о чудо, POST сработал! Мне не удалось воспроизвести это на наших рабочих, тестовых или основных экземплярах разработки, поскольку все они обслуживаются через https.
Что может быть причиной этого? Я думаю, что это должно быть что-то с httpd (или даже с firewalld?), который проверяет полезную нагрузку запроса и останавливает его. Единственное, что я могу предположить, это то, что наличие команды ОС ls не проходит какую-то проверку. Как ни странно, я попробовал множество других команд ОС в полезной нагрузке и не смог найти другую комбинацию, вызывающую сбой. Открыт для всех предложений для проверки. Спасибо!
Подробнее здесь:
https://stackoverflow.com/questions/788 ... over-https