UNIVERSIDAD AUTÓNOMA DE AGUASCALIENTES
CENTRO DE CIENCIAS BÁSICAS
DEPTO. SITEMAS ELECTRÓNICOS
Seguridad e Integridad de Sistemas
Ejercicio Pentesting a nivel de aplicación web.
Serena Aranda Jorge Abraham
ICI 9° A 14 de septiembre de 2019
P á g i n a 1 | 34
1. INDICE
Introducción Pág. 3
Objetivo Pág. 3
Conceptos Preliminares Pág. 4
Pentesting Pág. 4
Pruebas de exploración de vulnerabilidades Pág. 4
Black box test Pág. 5
White box test Pág. 5
Gray box test Pág. 5
Perfil del Pentester Pág. 6
Hackers Pág. 6
Hackers de sombreo blanco Pág. 6
Hackers de sombreo negro Pág. 7
Hackers de sombreo gris Pág. 7
Métodos de pentesting Pág. 7
Fases de pentesting Pág. 8
Fase de reconocimiento Pág. 8
Fase de enumeración Pág. 8
Fase de análisis Pág. 8
Fase de Explotación Pág. 9
Fase de Documentación Pág. 9
Herramientas de prueba de pentesting Pág. 10
Tipos de ataques más comunes Pág. 11
SQL injection Pág. 13
XSS Pág. 14
Realización de pentesting controlado Pág. 15
Ataque XSS Pág. 19
Ataque servidor apache Pág. 22
Ataque SQL injection Pág. 25
Ataque MySQL Login Pág. 28
Ataque subido de archivos Pág. 32
Conclusión Pág. 33
Bibliografía Pág. 34
P á g i n a 2 | 34
2. INTRODUCCIÓN
En este documento se describe el tema correspondiente a Pentesting (test de penetración
en español) el cual está dirigido a una aplicación web (BadStore), dicha aplicación web se
utiliza para hacer pruebas de pentesting, es una web que tiene vulnerabilidades que
permiten hacer pruebas de hacking realizando penetración en la web.
Se realizará la investigación correspondiente para conocer la teoría de los ataques de
penetración web, para al final concluir con el ejercicio práctico.
A través del documento se obtendrá conocimiento sobre el perfil del pentest, así como se
hablará un poco sobre los “Hackers”, los diferentes tipos de pruebas de pentesting aplicables
a la web, métodos de pentesting, las fases para las pruebas correspondientes, y hablaremos
un poco sobre las herramientas de prueba, un poco más específico sobre “OWASP Zed” que
es la herramienta que se utilizara durante el ejercicio.
2. OBJETVIO
El objetivo de esta actividad es conocer acerca del tema de pentesting, así como las
definiciones que lo rodean, para la parte práctica, se tiene como objetivo el conocer los tipos
de ataques que se pueden hacer a una aplicación web, detectar las vulnerabilidades, para así
saber cómo ejecutarlos para poder darles una solución y poder prevenirlos en futuras
aplicaciones.
P á g i n a 3 | 34
3. CONCEPTOS PRELIMINARES
3.1 Pentesting
El pentesting (teste de penetración, en español) se define como el proceso de medición,
auditorias y evaluación para redes o sistemas informáticos que prueba los mecanismos de
seguridad de las organizaciones o empresas al simular múltiples ataques en situaciones en
las que se agrega nueva infraestructura, se instala software, se aplican actualizaciones al
sistema, se instalan los parches de seguridad y se modifican las políticas de usuario, todo
esto por medio de un conjunto de técnicas que permiten probar o simular los ataques de los
ciber delincuentes, con el objetivo de incrementar la seguridad en la protección de los
activos, datos y servicios de información, así como identificar las vulnerabilidades, conocer
las brechas de seguridad a las que se puede estar expuesto para aplicar los controles
necesarios.
La seguridad de la información y las debilidades que se identifican en la prueba se consideran
confidenciales y no se divulgarán hasta la resolución completa de las fallas encontradas.
El pentesting es uno de los métodos más antiguos para evaluar la seguridad de un sistema
informático. A principios de la década de los 70’s, el Departamento de Defensa utilizó este
método para demostrar las debilidades de seguridad en los sistemas informáticos e iniciar el
desarrollo de programas para crear sistemas más seguros.
3.2 Pruebas de exploración de vulnerabilidades
En el área de seguridad se cuenta con distintos métodos de prueba de aplicaciones para
probar el software en medida de parchar problemas de seguridad y proteger los datos.
P á g i n a 4 | 34
3.2.1 Black box test
Black box test (prueba de caja negra en español) es una técnica que realiza una evaluación
de la seguridad, dichas pruebas no requieren el conocimiento sobre la estructura o
infraestructura del sistema, es decir, no es necesario conocer el funcionamiento del sistema.
Esta técnica tiene una gran aceptación debido a la facilidad de uso, la automatización y como
se ha dicho antes, a la independencia de la tecnología utilizada con la aplicación.
El objetivo de estas pruebas es que se realice las pruebas simulando un posible atacante
externo.
3.2.2 White box test
White box test (prueba de caja blanca en español), es una prueba en la cual se definen los
objetivos de manera clara, para analizar las tecnologías implantadas, usuarios y contraseñas,
direccionamiento IP y políticas de seguridad. Se debe tener un conocimiento pleno para
poder elaborar vectores de ataques más específicos.
Ésta prueba se realiza por un equipo interno el cual cuenta con acceso al código fuente, para
así poder revisar y reportar las vulnerabilidades encontradas.
3.2.3 Gray box test
Gray box test (prueba de caja gris en español), representa el término medio entre los test de
black box y White box, debido a que la información sobre el objetivo no está completa pero
tampoco es inexistente. Los pentester cuentan con el conocimiento de aspectos funcionales
e internos del sistema.
El objetivo de estas pruebas es simular un empleado para encontrar problemas o
vulnerabilidades que pueden aprovechar los usuarios internos.
P á g i n a 5 | 34
3.3 Perfil del Pentester
El perfil del pentester está basado en la famosa frase “Pensar como el atacante” , los
profesionales en pruebas de penetración tienen que pensar de manera maliciosa, pero de
forma profesión para parchar los problemas en las aplicaciones web a las que se le ejecuten
las pruebas de penetración. Estos profesionales requieren tener conocimientos sobre
tecnologías, aplicaciones, servicios y sistemas operativos. Normalmente a los encargados de
las pruebas de pentesting se les llaman Hacker.
3.4 Hackers
Según la RAE, Hackers se refiere a <<persona experta en el manejo de computadoras, que se
ocupa de la seguridad de los sistemas y de desarrollar técnicas de mejora.>>. Con el paso de
los tiempos el término hacker se fue deformando por la falta de información o inclusive por
la información errónea que se percibe de esta, dado a que los medios se han dedicado a
satanizar el término al asociarlo con delitos informáticos.
Comúnmente el término es asociado a todo aquel experto de las tecnologías de
comunicación e información que utiliza sus conocimientos técnicos en computación y
programación para superar un problema, normalmente asociado a la seguridad.
3.4.1 Hackers de sombre blanco
Son hacker con sentido ético, encargado de investigaciones de seguridad con fines no
maliciosos. Permiten encontrar vulnerabilidades para indicar y demostrar la falta de
seguridad presentada en una organización o para probar sus propios códigos.
P á g i n a 6 | 34
3.4.2 Hackers de sombre negro
Hackers de sombrero negro son de los que comúnmente se escucha hablar, Son hacker que
violan la seguridad para obtener provecho personal, se puede decir que son los causantes
de los virus malware, ransomware etc. Son expertos en seguridad que se aprovechan de las
vulnerabilidades para robar información, modificarla o secuestrarla.
3.4.3 Hackers de sombrero gris
Son hacker que pueden actuar impulsados con dos intenciones, una de ellas puede ser para
fines personales o también para ayudar en la seguridad de una organización y de acuerdo
con el objetivo de las pruebas de penetración, se presenta la clasificación del hacker.
4. MÉTODOS DE PENTESTING
Manual: Es llevada a cabo de manera directa para conocer y comprender el ataque. Se hace
uso de scripts sencillos y herramientas. Al ser un método manual es más lento comparado
con otros métodos.
Automático: Es un método que utiliza herramientas para llevar a cabo el escaneo de un sitio
y devolver las vulnerabilidades encontradas de una manera rápida y ágil sin mayor
intervención del usuario o pentester.
Híbrido: Con este método se integran los dos anteriores, utiliza métodos manuales y
automáticos. Utiliza herramientas para el escaneo de la aplicación y en paralelo se van
realizando revisiones manuales.
P á g i n a 7 | 34
5. FASES DE PENTESTING
5.1 Fase de reconocimiento
En esta fase se hace uso de herramientas de análisis para obtener toda la información del
objetivo. En esta fase se deben realizar las siguientes actividades:
• Se deben definir objetivos para las pruebas de pentesting.
• Recopilar toda la información de manera que pueda ser usada en las demás fases.
• La información consultada abarca: nombres, direcciones de correos, topología de
red, direcciones IP.
5.2 Fase de enumeración
En esta fase solo se realiza actividades de investigación, aun no se lleva a cabo ningún ataque.
Las actividades desarrolladas en esta fase son:
• Se debe hacer un checklist o inventario de los elementos existentes como: sistemas
operativos, servicios y aplicaciones.
• Se identifican las direcciones IP, usuarios y claves y tokens de sesión.
• Se debe comprender el flujo de la aplicación y cómo interactúan los demás
elementos.
5.3 Fase de análisis
En esta fase se inicia la interacción y análisis con los sistemas encontrados, El análisis se
realiza para encontrar vulnerabilidades, consultadas a nivel de la infraestructura, los sistemas
operativos, los servicios disponibles o las 25 aplicaciones existentes. El objetivo en esta fase
es llevar a cabo la planificación del ataque.
P á g i n a 8 | 34
5.4 Fase de Explotación
En esta fase se inicia la intrusión en el sistema para obtener evidencia de las actividades y
pasos ejecutados en las pruebas de intrusión realizada. Con la evidencia que soporta la
intrusión, posteriormente se debe generar toda la documentación. La explotación se realiza
sobre aquellas vulnerabilidades analizadas y detectadas en las fases anteriores.
5.5 Fase de Documentación
Las actividades de esta fase corresponden a realizar la documentación correspondiente al
ataque realizado, en la documentación se debe tener en cuenta lo siguiente:
• Documentar todos los descubrimientos encontrados en el sistema.
• Realizar informes de las intrusiones
• Diseñar presentación de los resultados.
• Indicar los puntos donde se generen los problemas más relevantes.
• Como buena práctica se debe documentar con cada intrusión realizada.
P á g i n a 9 | 34
6. HERRAMIENTAS DE PRUEBA DE PENTESTING
Nombre Funcionalidad
Herramienta que permite la explotación de vulnerabilidades como
SQLmap SQL Injection, esta vulnerabilidad sirve para extraer información
de las bases de datos.
Herramienta que permite realizar escañero para encontrar
Nessus vulnerabilidades, genera alertas y sugiere las posibles soluciones a
los problemas encontrados.
Herramienta para probar la seguridad de las aplicaciones web,
Burp Suite funciona como un servidor proxy que analiza las peticiones y hace
un test de intrusión.
Herramienta para monitorear la seguridad, es parte de los
OWASP Zed
proyectos OWASP.
Herramienta analítica y auditora de una red loca, con el objetivo
Wireshark
de encontrar vulnerabilidades.
Herramienta para descifrar o encontrar contraseñas, aplicando
Jhon TheRipper
ataques de fuerza bruta.
Herramientas que permite realizar acceso remoto a los sistemas
THC Hydra
por medio del uso de protocolos de red.
P á g i n a 10 | 34
7. TIPOS DE ATAQUES MÁS COMUNES
7.1 Inyección
Las fallas de inyección como SQL, NoSQL, OS o LDAP ocurren cuando se envían datos no
confiables a un intérprete, como parte de un comando o consulta.
7.2 Pérdida de Autenticación:
Las funciones relacionadas a autenticación y gestión de sesiones son implementadas
incorrectamente en las aplicaciones, permitiendo a los atacantes comprometer usuarios y
contraseñas.
7.3 Exposición de datos sensibles:
Muchas aplicaciones y API’s no protegen adecuadamente datos sensibles, tales como
información financiera, de salud o Información Personalmente Identificable (PII). Los datos
sensibles requieren métodos de protección adicionales, como el cifrado, así como tener
precauciones cuando se navega a través de los diferentes sitios web.
7.4 Entidades Externas XML (XXE):
Las entidades externas pueden utilizarse para revelar archivos internos mediante la URI o
archivos internos en servidores no actualizados, escanear puertos de la red de área local
(LAN), ejecutar código de forma remota y realizar ataques de denegación de servicio (DoS).
7.5 Pérdida de Control de Acceso:
Las restricciones sobre el conjunto de privilegios de los usuarios autenticados no se aplican
de manera adecuada.
P á g i n a 11 | 34
7.6 Configuración de Seguridad Incorrecta:
La configuración de seguridad incorrecta es un problema muy común y se debe en parte a
establecer la configuración de forma manual, ad hoc o por omisión (o directamente por la
falta de configuración).
7.7 Secuencia de Comandos en Sitios Cruzados (XSS):
Los XSS ocurren cuando una aplicación obtiene datos no confiables y los envía al navegador
web sin una validación y codificación apropiada. Permiten ejecutar comandos en el
navegador de la víctima y el atacante puede secuestrar una sesión, modificar los sitios web,
o redireccionar al usuario hacia un sitio malicioso.
7.8 Deserialización Insegura:
Estos defectos ocurren cuando una aplicación recibe objetos serializados dañinos y estos
objetos pueden ser manipulados o borrados por el atacante para realizar ataques de
repetición, inyecciones o elevar sus privilegios de ejecución.
7.9 Componentes con vulnerabilidades conocidas:
Los componentes como bibliotecas, framework’s y otros módulos se ejecutan con los
mismos privilegios que la aplicación. Si se explota un componente vulnerable, el ataque
puede provocar una pérdida de datos o tomar el control del servidor.
7.10 Registro y Monitoreo Insuficientes:
El registro y monitoreo insuficiente, junto a la falta de respuesta ante incidentes permiten a
los atacantes mantener el ataque en el tiempo, pivotar a otros sistemas y manipular, extraer
o destruir datos.
P á g i n a 12 | 34
8. SQL INJECTION.
SQL Injection (Inyección SQL), es una de las técnicas más comunes de web hacking, ésta es
una técnica de inyección de código que se aprovecha de una vulnerabilidad en el nivel de
validación de las entradas para las operaciones sobre una base de datos.
Esta vulnerabilidad radica en la incorrecta comprobación o filtrado de las variables utilizadas
en un programa que contiene, o bien genera, código SQL.
SQL injection puede ocurrir cuando se le pide al usuario que ingrese datos, cómo puede ser
Usuario/Id, y en vez de recibir nombre o id, el usuario da un SQL Statement que se ejecutara
en la base de datos sin que el propietario del sistema se percate.
Para ejemplificar esto, veamos el siguiente ejemplo:
En tu sitio web tienes un cuadro que pide al usuario su id, si no tienes código para prevenir
que se registre un mal id, el usuario puede hacer una inyección de código de la siguiente
manera;
160266 OR 1=1
De esta manera, la consulta se vera de la siguiente forma:
SELECT * FROM Usuarios WHERE UserId = 105 OR 1=1;
Esto retornará al usuario todas las filas de la tabla “Usuarios”, por la sencilla razón de que
tenemos un operador lógico, es decir, el usuario ingresa el id 160266, pero tiene un operador
lógico que dice entrégame el usuario con este id “O” todos porque 1 = 1 siempre es
verdadero.
P á g i n a 13 | 34
9. CROSS SITE SCRIPTING (XSS).
Cross-site scripting es uno de los tipos de vulnerabilidades informáticas que se pueden
encontrar en aplicaciones web, esta puede permitir a un tercero inyectar código JavaScript
o en otro lenguaje similar en páginas web.
XSS es un vector de ataque que puede ser utilizado para robar información delicada,
secuestrar sesiones de usuario, y comprometer el navegador, subyugando la integridad del
sistema. Esta situación es usualmente causada al no validar correctamente los datos de
entrada que son usados en cierta aplicación, o no sanear la salida adecuadamente para su
presentación como página web.
Esta vulnerabilidad puede estar presente de las siguientes formas:
• Directa (también llamada Persistente): este tipo de XSS comúnmente filtrado, y
consiste en insertar código HTML peligroso en sitios que lo permitan; incluyendo así
etiquetas como <script> o <iframe>.
• Indirecta (también llamada Reflejada): este tipo de XSS consiste en modificar valores
que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones
y sucede cuando hay un mensaje o una ruta en la URL del navegador, en una cookie,
o cualquier otra cabecera HTTP (en algunos navegadores y aplicaciones web, esto
podría extenderse al DOM del navegador).
Ejemplo:
La pagina cuenta con un formulario, y si no tiene las validaciones correctas, en el texto del
mensaje podrías mandar código JavaScript.
<script language=”javascript” type=”text/javascript”>alert(“Tienes un
problema en tu app web”);</script>
Esto mostrara un mensaje de alerta, además de que se guardara en la base de datos y se
ejecutara cada vez que se cargue esa sección de la página web.
P á g i n a 14 | 34
10. REALIZACIÓN DE PENTESTING CONTROLADO.
El primer paso es montar nuestra aplicación web a atacar, para esto usaremos BadStore, es
una aplicación web entrada sobra una distribución Linux llamada Trinux. Esta distribución
permite simular un servidor cono todos los servicios activos, así como una tienda de libros
instalada, esta aplicación web contiene varios fallos de seguridad para poder realizar pruebas
de hacking y penetración.
La plataforma BadStore se ejecuta con Perl, Apacahe y MySQL.
La instalación se hace en una máquina virtual en VirtualBox.
Ejecutamos la plataforma y se abrirá el sistema en modo consola.
P á g i n a 15 | 34
Debido a que no se cuenta con un dominio, utilizaremos la IP para realizar los ataques. Así
que el primer paso es averiguar la IP, en el servidor podemos consultarla con el comando.
bash# ifconfig
Para ver la página funcionado, podemos ver la dirección IP y podemos abrirla en el navegador
en cualquier otra máquina.
P á g i n a 16 | 34
Ahora iremos a la maquina con la que realizaremos los ataques.
Lo primero será correr el comando sudo nmap -sS -p 1 192.168.1-255 -T4 esto
para explorar la red y obtener información acerca de los servicios, sistemas operativos y
vulnerabilidades derivadas de dicha información.
Encontramos a nuestra victima en 192.168.1.65
Al encontrar a nuestro objetivo, procedemos a ejecutar unos comandos más para encontrar
puertos abiertos e información del sistema operativo.
P á g i n a 17 | 34
Conociendo los puertos que se tienen abiertos, podemos hacer uso de una técnica de
Fingerprinting mediante un escaneo que nos brinda más información acerca de las versiones
que escucha en los puertos, es decir, servidor ftp, versión de apache, MySQL, entre más
cosas.
Recapitulando, por el momento sabemos que la víctima está corriendo en un sistema
operativo Linux, corre un servicio de apache 1.3.28 en los puertos 80 y 443, así como el
servicio de MySQL Server 4.1.7-Estándar en el puerto 3306.
Se ejecuto una herramienta de análisis de web OWASP-ZAP la cual nos permite ver las
vulnerabilidades de la página web.
P á g i n a 18 | 34
10.1 ATAQUE XSS
La primera alerta que arrojo la aplicación OWASP-ZAP fue de Cross Site Scripting, por lo que
probando en algunos recuadros de texto pude dar con la vulnerabilidad.
Esto permite ejecutar código JavaScript.
Esto mismo pasa en otra sección de la pagina
P á g i n a 19 | 34
En esta sección la situación es la siguiente, en los recuadros de texto podemos incrustar
código JavaScript, y este se guardará en la base de datos y cada vez que se haga la petición
de entrar a “guestbook” dicho código se ejecutará.
P á g i n a 20 | 34
Sugerencia de Solución
Lo principal sería validar todos los datos que pueda ingresar el usuario, es decir, desconfiar
de todo lo que pueda enviar el usuario mediante una URL por GET o por un formulario por
POST. Lo esencial será restringir siempre las entradas de datos, desde HTML, pasando por
validación en JavaScript, después en nuestro lenguaje de Back-end, así como en la entrada a
la base de datos, esto resultará, en que la información que el usuario que enviar siempre sea
limpiada a través de varios filtros para que no logre hacer daño a la página.
P á g i n a 21 | 34
10.2 ATAQUE A SERVIDOR APACHE
Con el uso de la herramienta de nikto haremos un escaneo al servidor web, para detectar
malas configuraciones y vulnerabilidades en el servidor, cómo pueden ser ficheros de
instalaciones por defecto, listado de estructura del servidor, versiones, etc.
Como podemos observar, nikto nos brinda la versión del servidor y los módulos que operan
sobre este, podemos ver que esta herramienta detecto distintas carpetas que podemos
visualizar, como lo son: backup y supplier.
P á g i n a 22 | 34
Al momento de acceder mediante el navegador, vemos lo siguiente.
Vemos que es texto cifrado, así que procederemos a descifrarlo.
P á g i n a 23 | 34
Podemos observar que contiene información que puede ser importante
Sugerencia de Solución
Lo principal es crucial estar al tanto de las actualizaciones de software, ya que estas
contienen los parches para los problemas encontrados en versiones anteriores, pero no
únicamente sobre apache, sino se debe estar al tanto de los problemas y actualizaciones de
todo el software en su sistema. También sería de mucha utilidad ocultar la versión y sistema,
así como desactivar el listado de directorios, deshabilitar módulos que no sean necesarios,
así como permitir o denegar acceso a directivos, también debería funcionar el limitar tamaño
de peticiones al servidor.
P á g i n a 24 | 34
10.3 ATAQUE SQL INJECTION
Una vulnerabilidad que se encontró fue la posibilidad de hacer inyección SQL, cómo bien
sabemos que este tipo de ataque de SQL está basando en explotar la vulnerabilidad que se
conoce como 1=1 siempre va a ser verdadero, entonces con el uso de operadores lógicos,
podemos acceder a un usuario sin conocer su contraseña. Podemos hacerlo desde la página
web, como se muestra a continuación.
Cuando vamos a la sección de “What is new” podemos observar los siguientes ítems:
P á g i n a 25 | 34
Cuando aplicamos la inyección de código SQL de esta manera en el recuadro de buscar ítems
Podemos ver que se despliega la misma lista, pero con “TODOS” los elementos que existen
en la base de datos, inclusive los que no se muestran por defecto.
P á g i n a 26 | 34
Existe otra forma de hacerlo que es mediante el uso de una herramienta en Linux llamada
SQLMAP, y con una serie de comandos podemos llegar al mismo resultado.
Sugerencia de Solución
La sugerencia principal es no usar sentencias dinámicas ni funciones prestablecidas mysql, lo
recomendado es usar sentencias preparadas y consultas parametrizadas, también es
importante filtrar o sanar todos los datos que ingrese el usuario en distintos niveles para que
no pueda corromper el código, esto se puede lograr “escapando caracteres”, convertir los
caracteres especiales en entidades HTML, también podría servir el rechazar todas las
peticiones que contengan caracteres sospechosos.
P á g i n a 27 | 34
10.4 Ataque MySQL Login
Ya que sabemos que existe el servicio de MySQL y hemos visto que tienen muy poca
seguridad, vamos a tratar de hacer inicio de sesión por medio de fuerza bruta con el uso de
una herramienta metasploit.
Lo primero es configurar los archivos que contienen las posibles “contraseñas” y usuarios,
esto es como un diccionario, y al ser fuerza bruta probara con todas las opciones hasta
encontrar la correcta.
Tenemos éxito con el usuario root, y procedemos a acceder al servidor MySQL
P á g i n a 28 | 34
Navegamos por la base de datos hasta encontrar el objetivo, los controles de acceso a la
página.
Podemos observar que tenemos toda la información necesaria, sin embargo, la contraseña
esta almacenada como hash, entonces trataremos de averiguarla con fuera bruta, de la
siguiente manera.
Ejecutamos esta herramienta para saber qué tipo de hash puede ser, para poder
desencriptarla.
P á g i n a 29 | 34
Al tener la información necesaria, corremos un código de Python que nos permite descifrar
el hash por medio de fuerza bruta, utilizando el mismo directorio anterior.
Ahora que sabemos la contraseña probemos en el sitio.
P á g i n a 30 | 34
Como podemos ver, en la parte superior, nos dice el nombre de quien inicio sesión y nos
damos cuenta de que coincide con el nombre que viene en la base de datos que visualizamos
anteriormente.
Sugerencia de Solución
Lo principal es no tener un usuario predefinido en nuestro manejador de base de datos, así
como la contraseña también debe ser cambiada, de preferencia una que tenga números,
letras y una Mayúscula, todo esto para que no sea tan sencillo de hackear por medio de
fuerza bruta. Otra opción, un poco rudimentaria seria limitar los accesos por IP, que nadie se
pueda ingresar por medio de una IP que no este autorizada.
P á g i n a 31 | 34
10.5 Subida de Archivos
Notamos que podemos acceder a un portal por medio de la dirección URL que nos permite
subir un archivo, la vulnerabilidad se encuentra en que podemos subir cualquier tipo de
archivo y esto lo hace sumamente peligroso. Ya que un archivo malicioso puede
comprometer todo el sistema.
Sugerencia de Solución
Es importante nunca aceptar archivos que no pasen por el filtro de “archivos permitido”, es
por eso por lo que es necesario tener una lista de las extensiones permitidas. Una
recomendación que no debe faltar es limitar el tamaño del archivo, es decir el tamaño
máximo del nombre en el archivo más su extensión debe ser menor a 255 caracteres. Subir
una carpeta no debería tener ningún permiso de “ejecución”
P á g i n a 32 | 34
11. CONCLUSIÓN
Con el incremento de nuevas tecnologías y el gran uso que la sociedad le da al
internet, el gran uso que se le da a las aplicaciones web y todas las posibles funcionalidades
que podemos encontrar, es necesario crear aplicaciones que tengan un gran nivel de
seguridad, confidencialidad e integridad, de esta manera para proteger a todo costo la
información. La seguridad de aplicaciones nos abre un nuevo mundo en donde podemos
proteger los datos y la perdida de información la cual es el activo más importante en esta
década.
Las amenazas de seguridad evolucionan tan rápido como la tecnología, por esa razón
la importancia de realizar pentesting para encontrar vulnerabilidades a las que pueden estar
expuestas las aplicaciones web y conocer los motivos que llevan a realizar un ataque a un
sitio web, como puede estar el obtener información, alterar o fisgonear entre otros.
Entonces, siempre es importante tener en nuestra rutina analizar nuestros sistemas
y siempre mantenerlos actualizados para que no sea posible vulnerarlos de manera sencilla,
por eso siempre debemos de estar al tanto de las nuevas tecnologías que pueden abrir una
brecha a una posible explotación de vulnerabilidades y con esto, poder estudiarlas para
poder parcharlas en un futuro y dejen de ser un problema para todos.
P á g i n a 33 | 34
12. BIBLIOGRAFÍAS
Arnez Jimenez, J. (2019). PENTESTING (Doctoral dissertation).
Quintero Tamayo, J. F. Hardware malicioso como herramienta de Pentesting orientado al
puesto de trabajo.
Mayorga, A. F. M., & Solarte, S. A. P. Pentesting sobre aplicaciones web basado en la
metodología OWASP utilizando SBC de bajo costo.
Lopez Molina, A. D. P. Pentesting Web.
SQL Injection. (2019). Retrieved 5 September 2019, from
https://www.w3schools.com/sql/sql_injection.asp
Cross-site scripting. (2019). Retrieved 5 September 2019, from
https://es.wikipedia.org/wiki/Cross-site_scripting#targetText=Cross-
site%20scripting%20(XSS),CSP%20Política%20del%20mismo%20origen.
8 Consejos de seguridad servidores Apache. (2019). Retrieved 14 September 2019, from
https://openwebinars.net/blog/consejos-seguridad-servidores-apache/
P á g i n a 34 | 34