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