> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-aplicaciones-web/protocolo-http/fundamentos-del-protocolo-http-s/laboratorio-basico-http.md).

# Laboratorio básico HTTP

## Inspeccionando la aplicación web.

Hay dos nuevos enlaces disponibles desde la página principal: el enlace de inicio de sesión en la barra de navegación y la entrada del blog. El enlace de inicio de sesión redirige a "login.php" y el enlace del blog a "post.php".

**Paso 1:** Seguir enlaces: Haga clic en el enlace de inicio de sesión.

URL: <http://demo.ine.local/login.php>

<figure><img src="/files/V96vMuaKsAiWQkWuu1xQ" alt=""><figcaption></figcaption></figure>

La página de inicio de sesión contiene un formulario.

**Paso 2:** Identifique el punto final que procesa los campos del formulario. Haga clic derecho en la página web y seleccione "Ver código fuente".

Los parámetros se pasan en una solicitud POST a la misma página "login.php".

<figure><img src="/files/PMk49XFK3nR0vENuFSQb" alt=""><figcaption></figcaption></figure>

**Paso 3:** Inicie sesión en la aplicación web con las credenciales proporcionadas.

**Nombre de usuario:** john **Contraseña:** password

<figure><img src="/files/eBVbPjms0QgwTrGKwi0P" alt=""><figcaption></figcaption></figure>

Después de iniciar sesión, en lugar del enlace de inicio de sesión se muestra el mensaje "Bienvenido John".

**Paso 4:** Sigue el enlace restante. Haz clic en la entrada del blog.

Las páginas web a las que se puede acceder siguiendo los enlaces son index.php, login.php y post.php.

<figure><img src="/files/jR4PM0ZOgHBrmD5BmoNA" alt=""><figcaption></figcaption></figure>

### Usando dirb para identificar directorios ocultos.

**Comandos:**

```
dirb http://demo.ine.local
```

<figure><img src="/files/UkIDyswJUfAhG9pBofYC" alt=""><figcaption></figcaption></figure>

Los directorios que están presentes en el servidor son css, img, js, mail, uploads y vendor.

### Interactuar con la página de inicio con CURL.

**Paso 1:** Envío de solicitud GET:

**Comandos:**

```
curl -X GET demo.ine.local
```

<figure><img src="/files/s0ZdfGKMRuAB3fAEOTPL" alt=""><figcaption></figcaption></figure>

**Paso 2:** Envío de la solicitud HEAD

**Comandos:**

```
curl -I demo.ine.local
```

<figure><img src="/files/mSwmnxUrrFelrWCRVSy8" alt=""><figcaption></figcaption></figure>

**Paso 3:** Envío de solicitud de OPCIONES.

**Comandos:**

```
curl -X OPTIONS demo.ine.local -v
```

<figure><img src="/files/qRn4sl7cjt3RTcdJON0M" alt=""><figcaption></figcaption></figure>

Los métodos admitidos son GET, HEAD y OPTIONS. Acceder a la página web debería generar un error.

**Paso 4:** Envío de solicitud POST.

**Comandos:**

```
curl -X POST demo.ine.local
```

<figure><img src="/files/0HNLTYUuhcaVJruh8k09" alt=""><figcaption></figcaption></figure>

**Paso 5:** Envío de solicitud PUT

**Comandos:**

```
curl -XPUT demo.ine.local
```

<figure><img src="/files/tFuNnKjheGji6bVh3CAS" alt=""><figcaption></figcaption></figure>

### Interactuar con la página login.php con CURL.

**Paso 1:** Envío de solicitud de OPCIONES

**Comandos:**

```
curl -X OPTIONS demo.ine.local/login.php -v
```

<figure><img src="/files/fY3yxCOjfUUJCraW4dy0" alt=""><figcaption></figcaption></figure>

Los métodos permitidos incluyen: GET, POST, HEAD, OPTIONS.

**Paso 2:** Envío de solicitud POST.

**Comandos:**

```
curl -X POST demo.ine.local/login.php
```

<figure><img src="/files/5MkMeHJWAQNJ4JaOd1LN" alt=""><figcaption></figcaption></figure>

A diferencia de la página de inicio (index.php), la página de inicio de sesión admite el método POST.

**Paso 3:** Pasar el nombre de usuario y la contraseña a la página login.php.

**Dominio:**

```
curl -X POST demo.ine.local/login.php -d "name=john&password=password" -v
```

La página de inicio de sesión devolvió una respuesta diferente a la anterior. Esta respuesta contiene redirecciones 302.

<figure><img src="/files/83y0q5EVaLLmix0Tdp7c" alt=""><figcaption></figcaption></figure>

### Interactuar con la página post.php con CURL.

**Paso 1:** Envío de solicitud de OPCIONES.

**Comandos:**

```
curl -X OPTIONS demo.ine.local/post.php -v
```

<figure><img src="/files/T2Gg4ILRFiEd5kZT9yE5" alt=""><figcaption></figcaption></figure>

Similar a login.php, post.php tiene habilitados los métodos GET, POST, HEAD y OPTIONS.

### Interactuar con el directorio de cargas

**Paso 1:** Verificar el contenido del directorio /uploads.

**URL:** <http://demo.ine.local/uploads>

<figure><img src="/files/XyYfcMfRD2C7pqrqKEJe" alt=""><figcaption></figcaption></figure>

**Paso 2:** Enviar solicitud OPCIONES al directorio /uploads.

**Comandos:**

```
curl -X OPTIONS demo.ine.local/uploads/
curl -X OPTIONS demo.ine.local/uploads/ -v
```

<figure><img src="/files/cbryOUthfhnOczlUctR2" alt=""><figcaption></figcaption></figure>

El módulo Webdav está habilitado en el servidor Apache, el módulo Webdav permite la carga de archivos a través del método **PUT** .

**Paso 3:** Cargar un archivo con el método PUT.

**Comandos:**

```
echo "Hello World" > hello.txt
curl demo.ine.local/uploads/ --upload-file hello.txt
```

<figure><img src="/files/weVQHUOnKmc8fYrioTaH" alt=""><figcaption></figcaption></figure>

**Paso 4:** Verificar el contenido del directorio /uploads.

El archivo "hello.txt" se cargó exitosamente.

<figure><img src="/files/W0ldP4DcpeFuudYQHjUq" alt=""><figcaption></figcaption></figure>

**Paso 5:** Utilizar el método DELETE para eliminar el archivo.

**Dominio:**

```
curl -XDELETE demo.ine.local/uploads/hello.txt
```

<figure><img src="/files/jkgfuNGPxTbtPQcEuXPv" alt=""><figcaption></figcaption></figure>

**Paso 6:** Verificar el contenido del directorio /uploads.

El archivo fue eliminado exitosamente

<figure><img src="/files/AT9G4fJEs2tvyAfbRd2O" alt=""><figcaption></figcaption></figure>

### Interactuar con la página web con Burp Suite

**Paso 1:** Configure FoxyProxy para usar el proxy Burp. Haga clic en el icono de Fox y seleccione "Burp Suite".

<figure><img src="/files/mPzpqgUuQpF1LNjrx6nI" alt=""><figcaption></figcaption></figure>

**Paso 2:** Inicia burp suite. Recarga la página y la solicitud será interceptada.

<figure><img src="/files/xlJBgzgLuPxAPPxvMNng" alt=""><figcaption></figcaption></figure>

**Paso 3:** Envío de solicitud al repetidor

<figure><img src="/files/GUX9wVKg1y4wK7cYehTn" alt=""><figcaption></figcaption></figure>

Pestaña Repetidor:

<figure><img src="/files/6oOwKtFUrIs9NmxzOqeL" alt=""><figcaption></figcaption></figure>

**Paso 4:** Envío de solicitud GET.

Pestaña Repetidor:

<figure><img src="/files/kI7K0LKxLGYWCPiSDEUR" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/uNkm2RKLdWb0X0FkJMPm" alt=""><figcaption></figcaption></figure>

**Paso 5:** Envío de la solicitud HEAD

<figure><img src="/files/oYjOzPbTWQ5ZeKASBVEC" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/RyAkDW5okUFwDuAMTjBv" alt=""><figcaption></figcaption></figure>

**Paso 6:** Envío de solicitud de OPCIONES.

<figure><img src="/files/KNzss8xVXcLzpO63lQql" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/pNAubgwstO1sTnAFkTVy" alt=""><figcaption></figcaption></figure>

**Paso 7:** Envío de solicitud POST.

<figure><img src="/files/cyYkN8uDghSPveTfWyNp" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/vBaKW4ccvcMzscVWXndu" alt=""><figcaption></figcaption></figure>

El método POST no está permitido.

**Paso 8:** Enviar una solicitud POST a login.php con credenciales de inicio de sesión incorrectas.

<figure><img src="/files/og0Mv62UoSNzxbQcAeKC" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/AVdCKmzLx3D1tsokocgy" alt=""><figcaption></figcaption></figure>

Se recibieron 200 respuestas OK.

**Paso 9:** Enviar solicitud POST con credenciales de inicio de sesión válidas.

<figure><img src="/files/SlwCX7YmIuw5EU0YRJ8c" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/mKAxd5pZFgsNqYqlrJsM" alt=""><figcaption></figcaption></figure>

Las credenciales de inicio de sesión eran correctas y, como resultado, se recibieron 302 respuestas a index.php.

**Paso 10:** Cargar un archivo con el método PUT

<figure><img src="/files/8ek3NkXJNEkWcNLlLGzg" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/zuEZm5Gb2L4ia9qM7iLq" alt=""><figcaption></figcaption></figure>

El archivo se cargó exitosamente.

Verifique los archivos en el directorio /uploads.

<figure><img src="/files/9r1bu6tjSzhJRl6S9m6n" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/cWdjFVkSD7Bz9fB2Q3PR" alt=""><figcaption></figcaption></figure>

El archivo "hello.txt" se cargó exitosamente.

Comprobando el contenido del archivo cargado.

<figure><img src="/files/Z9UqjECXjIAI3d79cofQ" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/AD6icFKEYF97VzwXCzih" alt=""><figcaption></figcaption></figure>

**Paso 11:** Eliminar el archivo.

<figure><img src="/files/0Q1Be6r12z1B3jh3Qc7g" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/xq1fQrwDgxELK1YsaXof" alt=""><figcaption></figcaption></figure>

El archivo fue eliminado. Revisa los archivos en el directorio de subidas.

<figure><img src="/files/jTfhE5WR4IKBBtyxrToP" alt=""><figcaption></figcaption></figure>

Pestaña de respuesta:

<figure><img src="/files/yvTs1YbIwbqwlhvugvx3" alt=""><figcaption></figcaption></figure>

### Referencias:

* [Curl](https://linux.die.net/man/1/curl)
* [Burp Suite](https://portswigger.net/burp/documentation/desktop/getting-started)
* [Dirb](https://tools.kali.org/web-applications/dirb)
