Pregunta poco ortodoxa aquí:Solicitudes HTTP y módulos Apache: vectores de ataque creativos
Actualmente estoy tratando de romper un Apache con un puñado de módulos personalizados.
Lo que dio lugar a la prueba es que Apache solicita internamente hacia delante que considera demasiado grande (por ejemplo, 1 MB de basura) a los módulos conectados en forma adecuada, obligándolos a hacer frente a los datos de basura - y la falta de manejo de los módulos personalizados causado Apache en su totalidad para ir en llamas. Ay, ay, ay.
Afortunadamente, se solucionó ese problema en particular, pero surge la pregunta de si puede haber otras vulnerabilidades similares o no.
Ahora tengo una herramienta a mi disposición que me permite enviar una solicitud HTTP sin procesar al servidor (o más bien, datos brutos a través de una conexión TCP establecida que podría interpretarse como una solicitud HTTP si seguía la forma de uno , por ejemplo, "GET ...") y estoy tratando de encontrar otras ideas. (Ataques a nivel de TCP como Slowloris y Nkiller2 son no mi enfoque en este momento.)
¿Alguien tiene un par de buenas ideas de cómo confundir módulos personalizados del servidor hasta el punto de servidor-inmolación?
- Broken UTF-8? (Aunque dudo que Apache se preocupe por la codificación, imagino que solo hace malabares con los bytes crudos.)
- ¿Cosas que son apenas demasiado largas, seguidas de 0 bytes, seguidas de basura?
- etcétera
Yo no me considero un muy buen probador (que estoy haciendo esto por la necesidad y la falta de mano de obra; por desgracia no tienen ni siquiera una comprensión más básica del funcionamiento interno de Apache que me ayudaría), y es por eso que espero una respuesta perspicaz o dos o tres. ¿Tal vez algunos de ustedes han hecho algunas pruebas similares para sus propios proyectos?
(Si stackoverflow no es el lugar adecuado para esta pregunta, me disculpo. No estoy seguro de dónde si no ponerlo.)
¡Gracias por su respuesta! Esto suena * excelentemente * útil. Con respecto a tus dos últimos puntos: estamos buscando conseguir a alguien que pueda revisar el código, pero, por desgracia, ese es un mes, hasta ahora, y sin suerte. Pensarías que encontrar un C Code Auditer sería más fácil que esto. :) y pentesting se hará, solo un escalón más tarde; el desarrollo/prueba es un poco vertiginoso en esto, por lo que el desarrollo intenta empujar en algunas pruebas propias antes de que las cosas pasen a prueba. – pinkgothic
En la cascada/pentest, probablemente debería ser capaz de configurar un servidor de desarrollo, incluso para ejecutar un pentest/fuzz inicial limitado. Podría ser una pequeña duplicación de esfuerzos, pero he descubierto que a menudo vale la pena hacerlo lo más temprano posible, a menos que exista una política en torno a la propiedad y tal ... En cualquier caso, si está planeando una revisión del código de todos modos, es bien para empujar el pentest hasta después de eso de todos modos. – AviD
Pensé que aceptaría su respuesta ya que es más una * respuesta * que la de la Torre (ojalá hubiera una forma de dividir una recompensa). :) (PD: me pondría en contacto con usted a través de linkedin (al menos para despejar los comentarios de stackoverflow) pero no uso ese sitio y aparentemente tengo que pagar para hacerlo, lo cual parece excesivo para un sitio. Bien, no no se usa) – pinkgothic