Las funciones de los programas CGI son poderosas, pero precisamente por esto, si usted, como desarrollador CGI o administrador de sistemas, no presta atención a escribir y configurar programas CGI, su sistema estará plagado de agujeros. Este artículo analiza los problemas de seguridad de CGI.
3. Seguridad del CGI
La función del programa CGI es poderosa. No solo puede tener las funciones de los programas ordinarios, sino que también puede publicar los resultados del programa en la WEB. Pero precisamente porque las funciones de los programas CGI son tan poderosas, si usted, como desarrollador CGI o administrador de sistemas, no presta atención a escribir y configurar programas CGI, su sistema estará plagado de agujeros, lo que permitirá que algunos usuarios ilegales se aprovechen de ellos. de ellos.
La seguridad mencionada aquí no es causada por la especificación CGI, sino por una programación y configuración del sistema incorrectas. La especificación CGI permite a los usuarios aprovechar la potencia informática del servidor. Son los cálculos incorrectos en el servidor los que provocan vulnerabilidades de seguridad del sistema. A continuación presento una vulnerabilidad de seguridad CGI en sistemas UNIX. Esta vulnerabilidad es muy común.
# !/usr/local/bin/perl
#formmail.cgi
requiere "cgi.pl";
# Inicie la aplicación de correo electrónico "/bin/mail" con Asunto: encabezado desde el campo "nombre del formulario"
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# Agregar el campo de envío "formcontents" como cuerpo del mensaje
IMPRIMIR CORREO $entrada{"formcontents"};
cerrar(CORREO);
salir(0);
En este ejemplo, el programa CGI envía la información del formulario a /bin/mail y la envía al servidor webveave. En la mayoría de los casos, este programa CGI puede completar la tarea normalmente, pero este programa CGI no filtra la información ingresada por el usuario en el formulario WEB, lo que genera riesgos de seguridad. Cuando los usuarios o personas con motivos ocultos ingresan datos incorrectos, pueden causar errores en el sistema u obtener permisos indebidos.
Por ejemplo, el usuario completa el siguiente contenido en el "nombre del formulario" del formulario WEB:
"ls /etc/passwd '[email protected] #'
El contenido de /etc/passwd se mostrará en el navegador WEB del usuario. Si el archivo passwd de este sistema UNIX no tiene sombra, el usuario puede usar este contenido para intentar descifrar la contraseña usando crack jack o crack john.
Como se mencionó anteriormente, la seguridad CGI es responsabilidad tanto de los programadores como de los administradores del sistema. Ahora hablaré sobre cosas a las que ambos deben prestar atención:
Trabajo del administrador del sistema:
1. Coopere con los programadores para compartir información sobre la seguridad del servidor, verificar los códigos de cada uno al mismo tiempo y descubrir problemas de seguridad en el código de manera oportuna.
2. Utilice un buen software de servidor y visite con frecuencia el sitio WEB del software del servidor para obtener la información más reciente.
3. Restrinja los usuarios del servidor a hosts de red específicos, utilice la función de gestión de seguridad del servidor, establezca el control de acceso al enrutamiento, etc.
4. Restrinja las funciones CGI, restrinja algunos servicios avanzados a usuarios confiables, limite el uso de programas CGI probados a desarrolladores y proporcione solo programas CGI probados a los usuarios.
5. Cuando utilice programas CGI de otras personas, verifique cuidadosamente el código.
6. Limite el uso de programas CGI a un entorno protegido, configure el servidor para acceso de usuarios sin privilegios y configure una cuenta o grupo en ejecución específicamente para programas CGI.
7. Configure el servidor que ejecuta el programa CGI fuera del firewall. Debe tenerse en cuenta que el servidor que ejecuta el programa CGI debe configurarse fuera del firewall. Si se configura dentro del firewall, una vez que los usuarios ilegales encuentren la vulnerabilidad de seguridad. el servidor del programa CGI, podrán controlar todos los hosts dentro del firewall.
8. Reduzca la prioridad de ejecución de los programas CGI para evitar que los usuarios ejecuten maliciosamente una gran cantidad de programas CGI que provoquen una sobrecarga del servidor.
9. Suscríbase a correos electrónicos sobre seguridad de la red y participe en grupos de noticias sobre seguridad de la red.
Trabajos de programador CGI:
1. Coopere con el administrador del sistema para comprender la información de seguridad del sistema y verificar los códigos de cada uno.
2. Utilice programas de biblioteca confiables y verifique el código fuente de los programas de la biblioteca.
3. Obtenga el nombre del cliente de REMOTE_HOST y limite algunas funciones avanzadas a clientes confiables.
4. Si el servidor WEB proporciona confirmación de contraseña HTTP, utilice la contraseña HTTP para restringir el acceso.
5. Filtre la entrada del usuario y elimine los datos de entrada ilegales.
6. Limite el tamaño de los datos de entrada para evitar que usuarios malintencionados sobrecarguen el servidor ingresando grandes cantidades de datos.
7. Evite pasar datos del usuario a otras aplicaciones para evitar que los usuarios llamen al intérprete de comandos o aprovechen las vulnerabilidades de seguridad en otras aplicaciones.
8. Cuando descubra una vulnerabilidad en un programa CGI, no se lo diga a nadie, y mucho menos deje comentarios en el programa. Lo que debe hacer es parchear la vulnerabilidad inmediatamente.
9. Aprenda a ser un atacante y descubra las vulnerabilidades de seguridad de los programas CGI.