Cyber
TryHackMe
TryHackMe
  • crack the hash
  • Juice Shop
  • MrRobot CTF
  • Ninja Skills
  • Basic Pen Testing
  • bank_ctf
  • blaster
  • OWASP TOP 10
  • eternalblue
  • ice
  • easypeasy
  • pentesting completo
  • kenobi
  • Overpass
  • OWASP ZAP
  • Post Explotacion
  • Relevant
  • RootCTF
  • Stealth
  • Uso de SILK
  • Wreath
  • Clocky
  • Wifi Hacking 101
  • SQLMap
  • Kitty
  • Opacity
  • Bricks Heist
  • Carnage
  • Snort
  • Daily Bugle
  • Creative
  • CyberLens
  • Insecure Deserialisation
Powered by GitBook
On this page
  • SEVERITY 1
  • EJERCICIO 1
  • EJERCICIO 2
  • EJERCICIO 3
  • EJERCICIO 4
  • EJERCICIO 5
  • EJERCICIO 6
  • SEVERITY 2
  • EJERCICIO 1 y 2
  • SEVERITY 3
  • EJERCICIO 1
  • EJERCICIO 2
  • EJERCICIO 3 y 4
  • EJERCICIO 5
  • SEVERITY 4
  • EJERCICIO 1
  • EJERCICIO 2 y 3
  • SEVERITY 5
  • EJERCICIO 1
  • SEVERITY 6
  • EJERCICIO 1
  • SEVERITY 7
  • EJERCICIO 1
  • EJERCICIO 2
  • EJERCICIO 3
  • EJERCICIO 4
  • EJERCICIO 5
  • SEVERITY 8
  • EJERCICIO 1
  • EJERCICIO 2
  • EJERCICIO 3
  • SEVERITY 9
  • SEVERITY 10
  • EJERCICIO 1
  • EJERCICIO 2

OWASP TOP 10

PreviousblasterNexteternalblue

Last updated 1 year ago

Contenido

SEVERITY 1 3

EJERCICIO 1 4

EJERCICIO 2 4

EJERCICIO 3 5

EJERCICIO 4 5

EJERCICIO 5 6

EJERCICIO 6 6

SEVERITY 2 7

EJERCICIO 1 y 2 7

SEVERITY 3 8

EJERCICIO 1 8

EJERCICIO 2 9

EJERCICIO 3 y 4 9

EJERCICIO 5 10

SEVERITY 4 11

EJERCICIO 1 13

EJERCICIO 2 y 3 13

SEVERITY 5 13

EJERCICIO 1 14

SEVERITY 6 14

EJERCICIO 1 14

SEVERITY 7 15

EJERCICIO 1 16

EJERCICIO 2 16

EJERCICIO 3 16

EJERCICIO 4 17

EJERCICIO 5 17

SEVERITY 8 19

EJERCICIO 1 19

EJERCICIO 2 20

EJERCICIO 3 20

SEVERITY 9 23

SEVERITY 10 25

EJERCICIO 1 25

EJERCICIO 2 25

SEVERITY 1

En este primer caso tenemos un servidor que tiene el siguiente código ejecutándose:

En este código lo que introducimos en el campo input va a la variable commandString , acto seguido pasa al try y se ejecuta la función passthru que en php lo que hace es pasar directamente el comando introducido , lo ejecuta y te muestra la respuesta en el navegador.

Por lo que cualquier comando que ejecutemos en el campo de entrada nos devolverá la respuesta como si fuese una ventana de cmd.

EJERCICIO 1

Lo primero que nos preguntan es el nombre del archivo extraño en el directorio root , para esta respuesta simplemente ejecutamos un ls

R: drpepper.txt

EJERCICIO 2

Luego nos preguntan por el numero de non-users/non-services/non-daemons para ello ejecutaremos el siguiente comando:

cat /etc/passwd | cut -d: -f1

Este comando nos muestra el contenido el archivo passwd y lo corta por el primer campo delimitado por : y nos muestra lo siguiente:

Como podemos ver no hay nada que no sea usuario , servicio o demonio

R: 0

EJERCICIO 3

Ahora nos preguntan por el usuario que estamos utilizando , si hacemos un:

Whoami

R: www-data

EJERCICIO 4

Ahora preguntan por como esta el Shell nombrado , para ello volvemos al archivo /etc/passwd pero esta vez lo filtramos con grep por el nombre del usuario:

Cat /etc/passwd | grep www-data

R: /usr/sbin/nologin

EJERCICIO 5

Para el siguiente apartado nos piden la versión de Ubuntu que esta corriendo , para ello ejecutaremos el siguiente comando:

Lsb_release –a

R: 18.04.4

EJERCICIO 6

Por ultimo nos piden la bebida que aparece en el mensaje de MOTD (message of the day). Para ello debemos hacer un cat a la ubicación donde el archivo motd se encuentre , aunque antes se ubicaba en /etc/motd ahora su ubicación es /etc/update-motd.d :

Tras hacer un ls vemos diferentes script , vamos a printear el primero el 00-header ya que los dos primeros números indican el orden y lo que le sigue es la descripción del script.

cat /etc/update-motd.d/00-header

R: DR PEPPER

SEVERITY 2

En este apartado simplemente se habla de la importancia de la authentificacion. El tema del usuario y la contraseña, para mitigar este tipo de ataques :

  • Tener buena política de contraseñas seguras

  • Utilizar la doble autentificación

  • Y para evitar ataques de fuerza bruta , cada cierto numero de intentos de logear que se bloquee la webapp

EJERCICIO 1 y 2

Simplemente hay que registrarse como el usuario que te dice pero con un espacio delante del nombre , asi la web se cree que es el mismo usuario , y al acceder ves la flag.

SEVERITY 3

En este apartado se habla de la importancia de tener bien protegida tu base de datos. En este caso no habla de tener tu base de datos instalada en un servidor sino directamente en un archivo. Ej: database.db

Para acceder al contenido de dicho archivo en kalo se utiliza el paquete sqlite3

EJ: sqlite3 database.db

Y ya una vez dentro puedes ejecutar cualquier consulta sql.

Luego te dice como romper hashes md5 con crackstation nada nuevo.

EJERCICIO 1

Hay que encontrar un directorio oculto en el login para ello vamos a mirar el código fuente:

R: /assets

EJERCICIO 2

Vamos a ese directorio y nos preguntan que archivo parece que tiene información sensible

R: webapp.db

EJERCICIO 3 y 4

Para este ejercicio nos piden el hash md5 del usuario admin , para ello primero nos descargamos la base de datos y la ejecutamos con sqlite3:

Primero hacemos un .tables para ver las tablas y luego un SELECT * de esa tabla. Como podemos ver la contraseña es el 3º campo.

R:

EJERCICIO 5

Nos logueamos como el admin y vemos la flag

R:

SEVERITY 4

Un ataque XML External Entity (XXE) es un típico de ataque que se aprovecha del XML parser y te permite interectuar con dispositivos del backend u otra parte de la red. Esto te permite acceder a cierta información que la aplicación web tiene acceso ,también puedes provocar denegación de servicio DOS o SSRF (ataque de petición en el lado del servidor).

Hay dos tipos de ataques :

In-band: recibes respuesta inmediata del payload

Out-of-band: debes guardar la respuesta del servidor en por ejemplo un archivo

De xml estaría bien decir que es un tipo de lenguaje diseñado para que tanto persona como maquina puedan entenderlo.

Ademas es independiente de la plataforma y del lenguaje utilizado en la plataforma.

Un documento xml suele empezar asi:

Y luego todo archivo xml debe tener un root:

En este caso es el mail. Comentar también que xml es case sensitive , es decir cuidado con las mayusculas.Y como html también tiene atributos en sus etiquetas.

Las siglas de xml

R: extensible markup language

Para entender xml también hay que hablar de DTD (document type definition) en un tipo de documento que establece la estructura y los atributos de un archivo xml.

Suele tener esta estructura:

  • Con !doctype determinas el elemento ROOT

  • Con !element añades un elemento al archivo

  • Con !entity añades una nueva entidad

Luego suele añadirse al xml de esta manera:

En cuanto al payload tiene esta pinta:

Aquí estamos creando una nueva entidad con el nombre read que lo que hace es mediante el atributo system ir a buscar la ruta que le hemos especificado dándote el archivo.

Si lo ejecutamos en la maquina objetivo:

EJERCICIO 1

Nos piden el usuario que se muestra en etc/passwd como los usuarios no genéricos están al final nos fijamos en la captura anterior y vemos que es falcon

R: falcon

EJERCICIO 2 y 3

Nos piden donde esta almacenada la clave ssh privada de falcon , normalmente las claves ssh suelen estar en /home/usuario/.ssh/id_rsa asi que lo añadimos a nuestro payload y :

Y sus primeros 18 digitos:

SEVERITY 5

Aquí estaría bien hablar del tema del IDOR (Insecure Direct Object Reference) que es el hecho de poder acceder a recursos que no deberías poder acceder sin ciertos privilegios. Como por ejemplo al acceder a tu banco mediante la siguiente url :

Y cambiar el 1234 por otro numero y acceder a la cuenta bancaria de otra persona.

EJERCICIO 1

Nos piden la flag de la maquina objetivo , accedemos con las credenciales que nos indican :

Si seguimos el consejo de antes vamos a cambiar el note=1 por otro valor como por ejemplo el 0:

R: flag{fivefourthree}´

SEVERITY 6

Esto se suele dar cuando hacen una configuración de seguridad errónea cuando se pudo configurar de forma correcta.

EJERCICIO 1

Te piden que hackees la maquina , al acceder vemos esto:

Si buscamos las credenciales por defecto en internet de pensive notes:

Si utilizamos estas credenciales:

SEVERITY 7

Aquí hablamos de XSS (cross site scripting) que es ejecutar scripts (código malicioso) en la maquina de la victima. Para ejecutar XSS se puede utilizar Javascript , css , flash y VBScript.

Hay 3 tipos de XSS:

  • Stored XSS: Es el mas peligroso , esto se da cuando el input no esta sanitizado y ejecuta strings en la base de datos directamente

  • Reflected XSS: El payload es parte del request a la web , se suele dar cuando clickas en una url maliciosa.

  • DOM-based XSS: Es decir ejecutar código dentro del archivo dom que puede camiar la estructura de la base de datos. Hace de link entre xml y http.

EJERCICIO 1

Accede a la maquina y logra logearte ejecutando un payload. Vamos a ejecutar el típico payload de <script>alert(“Hello”)</script>:

R: ThereIsMoreXSSThanYouThink

EJERCICIO 2

Averigua la ip de la maquina , para ello nos serviremos del siguiente comando

<script>alert(window.location.hostname)</script>

Ya que el window.location.hostname usualmente el nombre de dominio , pero en este caso coincide con la ip

R: ReflectiveXss4TheWin

EJERCICIO 3

Ahora tenemos unos ejercicios de stored XSS , en este ejercicio nos piden que intentemos colar código html en el blog:

Simplemente hacemos un <h1> Hola </h1>

R: HTML_T4gs

EJERCICIO 4

Para este ejercicio nos piden que hagamos un alert que nos diga las cookies del sitio:

<script> alert(document.cookie)</script>

El document.cookie de javascript nos imprime las cookies del sitio directamente.

R: W3LL_D0N3_LVL2

EJERCICIO 5

Ahora tenemos que cambiar el titulo de la web por la de “im a hacker” usando js. Para ello utilizaremos el siguiente comando:

<script>document.querySelector('#thm-title').textContent = 'I am a hacker'</script>

Vamos a explicar un poco este comando:

  • Document.querySelector(‘#thm-title’) = Esta parte selecciona de la web un elemento con el id thm-title que en este caso es en el que esta ubicado el titulo de la web como vemos en la siguiente imagen:

  • .textContent = ‘I am a hacker’ 🡪 Esta parte coge el texto seleccionado y lo cambia en este caso por “I am a hacker”

R: websites_can_be_easily_defaced_with_xss

SEVERITY 8

EJERCICIO 1

En este primer ejercicio nos piden que una vez nos registremos en la maquina miremos las cookies:

Hacemos click derecho en la web 🡪 inspect – storage

En la web de tryhackme nos dicen que todas las campos de la cookie están en texto plano , y que nuestra primera flag esta en base 64. Asi que cojemos el texto que aparece en el campo sessionid y lo pasamos por el cyberchef:

R: THM{good_old_base64_huh}

EJERCICIO 2

R: THM{heres_the_admin_flag}

EJERCICIO 3

En este ultimo ejercicio de este apartado pondremos junto lo que hemos aprendido. Primero miraremos el código de la cookie de cuando en nuestro perfil clickamos en refresh vim:

En la primera línea que dice replaceme meteremos nuestro código malicioso , y luego lo codificara mediante base64.

Una vez que hemos codificado nuestro código , cuando accedemos al formulario de feedback , nuestra cookie es descodificada y ejecutada. Asi que podremos hacer lo que queramos. Este proceso de desceliarizacion es hecho por el modulo pickle.load de Python.

Lo siguiente será descargar el archivo Python con el script proporcionado por tryhackme y modificarlo añadiendo la IP de nuestra vpn de tryhackme:

Una vez hecho esto lo ejecutamos:

Y nos aseguramos de copiar solo lo que esta entre comillas simples.

Luego una vez en el formulario de feedback vamos a cambiar el valor de encodedpayload por el que nos dio el script:

Recargamos :

Y ya tenemos nuestro reverse Shell:

R: 4a69a7ff9fd68

SEVERITY 9

Para este apartado vamos a explotar una maquina utilizando exploit-db , vamos primero a acceder a ella:

Parece que tenemos una bookstore creada con php y mysql. Vamos a ir a exploitdb y buscar “unauthenticated bookstore rce (reverse comand execution)”

Nos vamos al segundo script , lo descargamos y vemos que tiene:

Si lo ejecutamos tal cual en consola con el argumento –h podemos ver la ayuda para ver como ejecutar el script:

Como podemos ver nos falta la url al final :

Asi que ya estaríamos dentro de la maquina , ahora solo nos faltaría saber el numero de caracteres que hay en el archivo /etc/passwd:

R: 1611

SEVERITY 10

En esta ultima severidad vamos a analizar un archivo log para identificar al hacker:

EJERCICIO 1

Cual es la ip del atacante ? , pues como podemos ver seguramente sea la ip que ha intentado entrar 4 veces en 20 segundos con diferentes nombres de usuarios siendo rechazados por la app.

R: 49.99.13.16

EJERCICIO 2

En este caso se esta haciendo un ataque de fuerza bruta

R: brute force

Para ello simplemente vamos a escribir

Para este segundo ejercicio nos piden que cambiemos el valor del campo “usertype” por admin , lo hacemos , acutalizamos y

👍
👍