Cómo escribir un informe de pentest (con plantilla para la OSCP)
Estructura de un informe de pentest profesional, cómo tomar notas, qué capturas hacen falta y cómo generar el PDF de la OSCP con Markdown y Pandoc.
El informe es lo único que ve el cliente de un pentest y lo único que corrige OffSec de tu examen. Puedes comprometer todas las máquinas y suspender por el informe: si falta una captura o un paso no se puede reproducir, esos puntos no cuentan. Esta guía explica qué lleva un buen informe, cómo tomar notas para que escribirlo sea copiar y pegar, y cómo convertir Markdown en un PDF limpio.
Qué tiene que conseguir un informe
Lo leen dos personas distintas y tiene que servir a las dos:
- Dirección quiere saber, en una página y sin jerga, qué riesgo hay y qué hacer primero.
- El equipo técnico quiere reproducir cada fallo y saber exactamente cómo arreglarlo.
Por eso todos los informes profesionales tienen la misma forma: un resumen ejecutivo corto y, después, un hallazgo por sección con pasos que cualquiera pueda repetir.
La estructura
| Sección | Qué contiene |
|---|---|
| Portada | Cliente, fechas, versión del documento y clasificación (confidencial) |
| Resumen ejecutivo | 3-5 párrafos: alcance, resultado global, los riesgos más graves y las 3 recomendaciones prioritarias |
| Alcance y metodología | IP o dominios incluidos y excluidos, fechas, tipo de prueba (caja negra, assumed breach...) y fases seguidas |
| Resumen de hallazgos | Tabla con cada fallo, su gravedad y el equipo afectado |
| Hallazgos detallados | Uno por sección (ver abajo) |
| Anexos | Credenciales encontradas, ficheros subidos que hay que borrar, salida completa de herramientas |
Cómo escribir un hallazgo
Cada hallazgo responde a las mismas preguntas, siempre en el mismo orden:
### 3.2 Inyección SQL en el parámetro `id` de /products.php
**Gravedad:** Crítica (CVSS 3.1: 9.8)
**Equipo afectado:** 10.10.10.5 (web01)
**Descripción.** El parámetro `id` se concatena en una consulta SQL sin
parametrizar, lo que permite leer toda la base de datos.
**Impacto.** Un atacante sin credenciales obtiene los hashes de todos los
usuarios de la aplicación, incluido el administrador.
**Pasos para reproducirlo.**
1. Abrir `http://10.10.10.5/products.php?id=1'` → error de MySQL (figura 4).
2. Ejecutar: `sqlmap -u "http://10.10.10.5/products.php?id=1" --dump -T users`
3. Resultado: tabla `users` con 12 hashes (figura 5).
**Recomendación.** Usar consultas preparadas (*prepared statements*) en todas
las consultas y revisar el resto de parámetros de la aplicación.
**Referencias.** OWASP: SQL Injection Prevention Cheat Sheet.
Tres reglas que marcan la diferencia:
- Comandos copiables. El comando exacto que ejecutaste, con sus parámetros, en un bloque de código. Nada de "se usó sqlmap".
- Una captura por paso importante, con la IP o el nombre del equipo visibles, y numerada para citarla en el texto.
- Recomendaciones concretas. "Aplicar el parche KB5005033" sirve; "mejorar la seguridad" no.
Para la gravedad, usa la calculadora CVSS 3.1 del NVD o una escala simple (crítica, alta, media, baja, informativa) que expliques en la metodología.
Tomar notas durante la prueba (o el examen)
El informe se escribe mientras atacas, no después. Si a las 3 de la mañana no apuntas un comando, a las 10 no lo vas a recordar.
- Una carpeta por máquina, con la salida de las herramientas guardada en ficheros (
nmap -oA,tee). Lo explica la guía de nmap. - Una nota por máquina (Obsidian, CherryTree, Joplin o un
.md) con estas secciones: puertos, enumeración, acceso inicial, escalada, credenciales y flags. - Registra la terminal para no perder nada:
script -a -f ~/examen/terminal.logal empezar cada sesión. - Haz la captura en el momento en que consigues algo: la shell, el
whoamiy el contenido de la flag en la misma imagen.
En el examen de la OSCP la captura de cada flag tiene que mostrar el contenido de local.txt o proof.txt y la IP de la máquina, desde una shell interactiva en la víctima:
# Linux
hostname && whoami && cat /root/proof.txt && ip a
# Windows
hostname; whoami; type C:\Users\Administrator\Desktop\proof.txt; ipconfig
Cuidado
Una flag mostrada a través de una web shell o leída sin shell interactiva puede no ser válida. Revisa siempre las normas de la guía del examen de OffSec antes de empezar: cambian de vez en cuando y son las que valen.
Del Markdown al PDF con Pandoc
Escribir en Word con capturas es lento. Lo más cómodo es escribir el informe en Markdown y convertirlo a PDF. Necesitas Pandoc, LaTeX y la plantilla Eisvogel:
sudo apt install pandoc texlive-latex-recommended texlive-latex-extra texlive-fonts-extra
mkdir -p ~/.local/share/pandoc/templates
# Descarga el .tar.gz de la última versión desde
# https://github.com/Wandmalfarbe/pandoc-latex-template/releases y, en la carpeta de descargas:
tar -xzf Eisvogel*.tar.gz
find . -name eisvogel.latex -exec cp {} ~/.local/share/pandoc/templates/ \;
Al principio del fichero informe.md pon la cabecera:
---
title: "Informe de pruebas de penetración"
author: ["[email protected]", "OSID: OS-XXXXX"]
date: "2026-11-03"
lang: "es"
titlepage: true
toc: true
toc-own-page: true
---
Y genera el PDF:
pandoc informe.md -o OSCP-OS-XXXXX-Exam-Report.pdf \
--from markdown --template eisvogel --listings --number-sections
Las imágenes se insertan como  y el texto entre corchetes sale como pie de figura.
Truco
El repositorio de noraj OSCP-Exam-Report-Template-Markdown trae plantillas para el examen ya hechas con esta estructura. Haz un informe de prueba con una máquina de HTB antes del examen: así descubres los problemas de Pandoc con tiempo.
La entrega de la OSCP
Después del examen tienes 24 horas para enviar el informe. Comprueba lo que pida la guía oficial en ese momento; normalmente:
- Un PDF con el nombre
OSCP-OS-XXXXX-Exam-Report.pdf(tu OSID). - Comprimido en
.7zsin contraseña, con el mismo nombre:7z a OSCP-OS-XXXXX-Exam-Report.7z OSCP-OS-XXXXX-Exam-Report.pdf. - Subido en la web de entrega de OffSec, comprobando el MD5 que te muestra:
md5sum OSCP-OS-XXXXX-Exam-Report.7z.
Errores típicos
- Pasos que no se pueden repetir: falta un comando intermedio (un
chmod, una conexión de escucha connc). Pide a alguien que siga tus pasos o repítelos tú en una máquina de HTB. - Capturas ilegibles: recorta a la terminal y usa un tamaño de letra grande. Una captura de toda la pantalla a 4K no se lee en un PDF.
- Exploits sin explicar: si modificaste un exploit público, di de dónde lo sacaste (enlace a Exploit-DB) y qué líneas cambiaste. Lo cuenta la guía de cómo explotar un CVE público.
- Datos sensibles sin censurar en un informe real: contraseñas en claro de usuarios reales se ocultan parcialmente (
Ve***23). - Dejarlo para el final: escribe cada hallazgo en cuanto lo confirmes. Las últimas horas del examen no son para redactar.
Y después
Practica el ciclo completo con las máquinas de HTB para preparar la OSCP: resuelve una sin ayuda y escribe su hallazgo con la plantilla de arriba. La ruta De cero a OSCP termina con un simulacro de examen en el que el informe forma parte del ejercicio.