https://tildecreativa.com/wp-content/uploads/2023/05/modulo2.zip

'''1. Leer el siguiente post sobre la vulnerabilidad CVE-2021-41773: https://www.hackplayers.com/2021/10/path-traversal-apache-2-4-49.html
Programación Python para Machine Learning 2
2. Crear un script en Python que busque servidores web en Shodan que aparentemente son vulnerables a la vulnerabilidad de Path Transversal de Apache en su versión 2.4.49. El CVE de dicha vulnerabilidad se encuentra descrito en el siguiente enlace: https://nvd.nist.gov/vuln/detail/CVE-2021-41773
3. Partiendo de los resultados devueltos por Shodan en el script anterior, extraer las 5 primeras IPs de la lista y ejecutar un escaneo agresivo con Nmap (opción -A) contra los puertos 80 y 443. Enseñar en la terminal los detalles básicos de dicho escaneo (basta con indicar el puerto y su estado: abierto/cerrado/filtrado).'''

import shodan
import nmap
import sys

# Clave de la API de Shodan
shodan_clave = 'Ahd2V1QUIfXTy0Znk4HS0Qqkzm1mMVqp'

# Crear objeto de conexión a la API de Shodan
api = shodan.Shodan(shodan_clave)

# Buscar en Shodan
try:
    # Buscar en Shodan
    # solo buscar 5 resultados
    resultados = api.search('apache 2.4.49', limit=5)

    # Mostrar los resultados
    print('Cantidad de servidores encontrados: {}'.format(resultados['total']))
    for resultado in resultados['matches']:
        print('IP: {}'.format(resultado['ip_str']))
        print(resultado['data'])
        print('')
except shodan.APIError as e:
    print('Error: {}'.format(e))

# Escaneo con Nmap
nm = nmap.PortScanner()
nm.scan('IP', '80, 443', '-A')
print(nm.command_line())
print(nm['IP'].state())
print(nm['IP'].all_protocols())
print(nm['IP']['tcp'].keys())
print(nm['IP'].has_tcp(80))
print(nm['IP'].has_tcp(443))
print(nm['IP']['tcp'][80]['state'])
print(nm['IP']['tcp'][443]['state'])

# Fin del programa