Немного неортодоксальный вопрос здесь:
Я в настоящее время пытаюсь повредить Apache с горсткой пользовательских модулей.
Что метало икру, тестирование состоит в том, что Apache внутренне передает запросы, в которых он считает слишком большим (например, мусор на 1 МБ) к модулям сцепленный соответственно, вынуждая их иметь дело с данными мусора - и отсутствие обработки в пользовательских модулях заставило Apache в целом повышаться в провокационных сообщениях. Ай, ай, ай.
Та конкретная проблема была, к счастью, устранена, но вопрос возник, могут ли быть другие подобные уязвимости.
Прямо сейчас у меня есть инструмент в моем распоряжении, который позволяет мне отправить необработанный Запрос HTTP на сервер (или скорее необработанные данные посредством установленного соединения TCP, которое могло быть интерпретировано как Запрос HTTP, если бы это следовало за формой одной, например, "ДОБИРАЮТСЯ..."), и я пытаюсь придумать другие идеи. (Нападения уровня TCP как Slowloris и Nkiller2 не являются моим фокусом в данный момент.)
У кого-либо есть несколько хороших идей, как перепутать пользовательские модули сервера на грани server-self-immolation?
Я не считаю меня очень хорошим тестером (я делаю это при необходимости и отсутствие рабочей силы; я, к сожалению, даже не имею больше, чем основное схватывание внутренностей Apache, которые способствовали бы мне), который является, почему я надеюсь на проницательный ответ или два или три. Возможно, некоторые из Вас сделали некоторое подобное тестирование на Ваши собственные проекты?
(Если stackoverflow не является правильным местом для этого вопроса, я приношу извинения. Не уверенный, куда еще поместить его.)
В зависимости от того, какие еще модули вы подключили и что еще их активирует (или это слишком большие запросы?), Вы можете попробовать следующее:
Apache - один из самых защищенных программных проектов на планете. Найти уязвимость в HTTPD Apache будет нелегким делом, и я рекомендую вам потренироваться на более легкой добыче. Для сравнения, чаще встречаются уязвимости в других HTTPD, например, в Nginx, которую я увидел сегодня (не шутка). Были и другие уязвимости раскрытия исходного кода, очень похожие, я бы посмотрел на эту и вот другую. lhttpd был заброшен на sf.net почти десять лет назад, и известны переполнения буфера, которые влияют на него, что делает его интересным приложением для тестирования.
При атаке на проект вы должны посмотреть, какие уязвимости были найдены в прошлом. Вероятно, программисты снова и снова совершают одни и те же ошибки, и часто возникают закономерности. Следуя этим закономерностям, можно найти больше недостатков. Попробуйте поискать в базах данных уязвимостей, таких как Nist's search for CVEs. Вы увидите, что чаще всего взламываются модули apache.
Такой проект, как Apache, подвергся сильному взлому. Существуют фреймворки для фаззинга, такие как Peach. Peach помогает в фаззинге разными способами, один из способов, которым он может помочь вам - это предоставить вам некоторые неприятные тестовые данные для работы. Фаззинг - не очень хороший подход для зрелых проектов, если вы пойдете этим путем, я бы выбрал модули apache с как можно меньшим количеством загрузок. (Внимание, проекты с действительно малым количеством загрузок могут быть сломаны или их трудно установить.)
Когда компания беспокоится о безопасности, она часто платит большие деньги за автоматизированный инструмент анализа исходного кода, такой как Coverity. Министерство национальной безопасности выделило Coverity кучу денег на тестирование проектов с открытым исходным кодом, и Apache - один из них. Я могу сказать вам из первых рук, что я нашел переполнение буфера с помощью фаззинга, которое Coverity не обнаружил. Coverity и другие инструменты анализа исходного кода, такие как open source Rats, дают много ложных срабатываний и ложных отрицаний, но они помогают сузить круг проблем, затрагивающих кодовую базу.
(Когда я впервые запустил RATS на ядре Linux, я чуть не упал со стула, потому что на моем экране были тысячи вызовов strcpy() и strcat(), но когда я покопался в коде, все вызовы работали со статическим текстом, что безопасно)
Поиск уязвимостей и разработка эксплойтов - это очень весело. Я рекомендую эксплуатировать приложения PHP/MySQL и исследовать The Whitebox. Этот проект важен, потому что он показывает, что в реальном мире существуют уязвимости, которые невозможно найти, если не читать код строка за строкой вручную. В нем также есть реальные приложения (блог и магазин), которые очень уязвимы для атак. На самом деле оба этих приложения были заброшены из-за проблем с безопасностью. Фаззер веб-приложений, такой как Wapiti или acuentix, изнасилует эти и подобные им приложения. Есть одна хитрость с блогом. Свежая установка не так уж и уязвима. Вам нужно немного поработать с приложением, попробуйте войти в систему как администратор, создать запись в блоге, а затем просканировать ее. При проверке веб-приложения на sql-инъекции убедитесь, что включено информирование об ошибках. В php вы можете установить display_errors=On
в вашем php.ini.
Удачи!