Cualquier vulnerabilidad de seguridad en PHP fsocketopen

2

Estoy evaluando la seguridad de un portal web para un cliente y encontré una vulnerabilidad.

En el PHP, el código analiza la URL proporcionada por el usuario, encuentra el nombre de host y luego hace esto:

fsocketopen ("http: //" $ URL_HOST ", 80); fwrite ("GET /".$URL_URL);

Además de hacer que el servidor realice solicitudes HTTP (spam potencial o servidor para realizar solicitudes HTTP, etc.), ¿hay algún otro error potencial asociado a esto? Controlo la URL completa y puedo proporcionar un nombre de host arbitrario + URL + puerto (debido a su antiguo PHP, usa ":" después de la URL para el puerto en lugar de su puerto codificado)

    
pregunta GMX Rider 15.01.2018 - 20:26
fuente

1 respuesta

1

Ya que tiene control total sobre ambas variables y los puertos que se están abriendo, su mejor opción para hacer más con esta vulnerabilidad es tener en cuenta que muchos protocolos de Internet son simplemente comandos de texto simple enviados a través de un socket abierto. El significado de este hecho es que enviar una solicitud HTTP a un servidor SMTP abierto puede engañar al servidor SMTP para que envíe un correo electrónico. Chrome realmente bloquea cualquier intento de acceso al puerto 25 a través de su navegador como resultado. Aquí hay un buen resumen:

enlace

La importancia aquí es que puede usar el servidor vulnerable no solo para llamar a sitios HTTP arbitrarios, sino que también puede usarlo para servidores SMTP de correo no deseado (lo que resulta en el envío de correos electrónicos reales) y posiblemente otros servicios conectados a Internet.

Por supuesto, esto no es un gran salto desde donde ya estás, pero nunca sabes qué más divertido podría darte. Si, por ejemplo, este servidor es confiable para el envío de correos electrónicos, es posible que pueda enviar correos electrónicos como la empresa sin tener que filtrarlos como correo no deseado. Eso no es una cosa pequeña.

Es posible que el http codificado en la llamada fsocketopen sea suficiente para acabar con la idea de enviar correos electrónicos, pero definitivamente vale la pena intentarlo. Una vez más, realmente no hay nada "especial" para diferenciar las solicitudes http de las solicitudes SMTP, por lo que si puede encontrar y conectarse a un servidor a través del puerto adecuado, el hecho de que PHP considere que es una solicitud http no importa si el El servidor remoto acepta tu conexión.

    
respondido por el Conor Mancone 15.01.2018 - 21:10
fuente

Lea otras preguntas en las etiquetas