Первый вопрос ... какой веб-сервер или библиотека? IIS-6 работает интерпретатор сценариев ASP? ASP.NET за IIS-7? Apache Tomcat? Какая-то библиотека, например HTTPServer в Poco?
Чтобы использовать переполнение буфера, вы должны сначала найти определенное место в приложении, где может произойти переполнение, а затем выяснить, какие именно байты должны быть отправлены для перезаписи памяти правильными байтами, чтобы выбежать в стек, а затем выполнить машинный код, который вы отправили в переполнении (потому что вы переписали стек).
http://en.wikipedia.org/wiki/Buffer_overflow
http://seclists.org/fulldisclosure/2005/Apr/412
http://www.microsoft.com/technet/security/bulletin/MS06-034.mspx
http://www.owasp.org/index.php/Buffer_Overflow
http://www.windowsecurity.com/articles/Analysis_of_Buffer_Overflow_Attacks.html
Поднимите огонь, но я бы сказал, что любая кодовая база достаточного размера содержит потенциально уязвимые переполнения буфера независимо от среды выполнения или исходного языка. Конечно, некоторые языки и платформы позволяют разработчикам приложений «стрелять себе в ногу» легче, чем другие, но все это сводится к индивидуальному усердию, сложности проекта, использованию стороннего кода, а также всегда есть эксплойты для базовых реализаций.
Переполнение буфера здесь, чтобы остаться, это всего лишь вопрос уменьшения воздействия с помощью безопасных методов программирования и тщательного мониторинга новых эксплойтов, поскольку они обнаружены для управления риском.
Отличным примером является то, что для веб-приложения есть вероятность переполнения в сетевых реализациях всего оборудования и приложений, обрабатывающих доставку ваших байтов через Интернет.
Рассмотрим различие между клиентом, пытающимся сломать сервер, и одним клиентом, пытающимся покорить других клиентов, обращающихся к определенному серверу?
Помимо простых переполнений в стиле "C", когда разработчик не следовал правилам безопасного программирования, существуют скрытые драгоценные камни, такие как целочисленные переполнения.
Даже если известно, что определенная хост-среда сервера очень стабильна, она, без сомнения, использует базу данных и другие средства операционной системы, которые сами по себе могут быть использованы через веб-сервер.
Когда вы приступаете прямо к этому, ничто не является безопасным, и на самом деле это просто вопрос сложности.
Единственный способ обеспечить полную безопасность конкретного приложения или сервера - это тщательный мониторинг, поэтому проблемы могут быть исправлены при обнаружении сомнительного поведения. Я очень сомневаюсь, что Walmart, FedEx или любая другая крупная корпорация с радостью сообщат о нарушениях. Вместо этого они следят, исправляют и двигаются дальше.
Можно даже сказать, что SQL-инъекция является абстрактной формой переполнения буфера, но вы просто выбираете, где вы хотите, чтобы буфер заканчивался, используя определенные символы, а затем предоставляете код, который вы хотите выполнить в нужном месте.