Vamos a ver un ejemplo en Python 3
centrado en la web, se podría dirigir a otros servicios, como FTP, para ello se
tendría que adaptar el código, ya que la librería que se va a utilizar aquí es exclusiva de web.
Las tareas que realizar son:
- Un fichero con servicios y vulnerabilidades que
queremos comprobar
- Un script en Python que haga una petición a una
página web y comprueba si tiene un servicio de los del fichero
Os dejamos una captura del fichero
que vamos a utilizar:
A continuación, se muestra el código:
Primero importamos la
librería http.client que la vamos a usar para realizar la petición
web. En la línea 3 y 4 se define el host al que vamos a hacer la petición, y un
timeout para evitar una espera infinita en caso de no recibir contestación.
Después, se va a realizar una petición
de tipo HEAD (si la web no acepta este tipo de peticiones, se puede hacer uso
de GET), y a continuación, recogemos la respuesta (líneas 5 y 6). La respuesta tendrá la información que buscamos, siempre y cuando esté mal configurada y “hable”
más de lo que debe.
Acto seguido, en la línea 7 se abre
el fichero que tiene las vulnerabilidades en modo lectura, además, en la 8 nos
creamos una variable booleana, que se inicializa en False, esta variable, solo
nos sirve para mostrar al final una línea de texto si no se encuentran
vulnerabilidades.
En el for que se recorre cada línea
del fichero y se comprueba si el servicio se encuentra en la respuesta que nos
devolvió el servidor. Si se echa un vistazo al fichero que tenemos arriba, cada
línea viene con el servicio, un espacio en blanco, y el CVE, por ello se usa el
Split para conseguir partir la línea por el espacio en blanco, así se puede
comprobar el servicio y mostrar la información de la vulnerabilidad.
Si la comprobación es positiva, se
muestra la información por pantalla, tanto servicio (posición 0), como CVE
(posición 1), y se pone la variable booleana en True. Para finalizar, después
del bucle, se cierra el fichero y se comprueba la variable para ver si se han
encontrado vulnerabilidades.
El script mostrado no gestiona errores, por simplicidad, por ejemplo, si no encuentra el fichero que se le indica, verás
como salta una excepción. Ahora vamos a hacer la prueba contra
un servidor que tenemos en localhost, y que va a ser vulnerable.
Si no tuviera un servicio de los que
hemos puesto en el fichero, nos daría el mensaje de que no es vulnerable. Para
ver información sobre la vulnerabilidad podemos hacer uso de la página que
hemos puesto al inicio y buscar por el CVE.
El código se puede adaptar al gusto
de cada uno, por ejemplo, podemos evitar la creación de un fichero y que se
muestre solo el servicio por pantalla y en vez de buscar por CVE, buscamos ese
servicio en la BD a ver si es vulnerable.
Para ir terminando, también podemos
hacer uso de Telnet o Netcat para llevar a cabo esta tarea (mostrar el
servicio), en la siguiente imagen se puede comprobar:
Para evitar regalar información y
dar facilidades a posibles cibercriminales, la mejor opción es que nuestros
servicios no devuelvan esa información. Además, no olvidéis lo más importante, mantener los servicios actualizados y fortificados :).
¡Hasta la próxima!
¡Hasta la próxima!
No hay comentarios:
Publicar un comentario