martes, mayo 29, 2012

Repositorios de código fuente: Protege tu software

En la pasada Ekoparty tuve el gusto de tomarme un buen asado rodeado de amigos. En esos entornos no se suele hablar, como mucho pueda pensar de fiestas y sexo, y las conversaciones suelen tender a las cosas más variopintas. En una de las conversaciones que tuve, con no quiero recordar quién, nos explicaban como estaban monitorizando los repositorios de proyectos Open Source, para detectar los cambios en código que pudieran ser bugs de seguridad.

Esto es algo que se supone que los malos en operaciones APT están haciendo desde hace tiempo ya que el poder detectar un parche que solucione un fallo del código fuente en el repositorio antes de que esté en la imagen compilada da una ventaja competitiva en tiempo que puede terminar en tener un exploit para un bug no parchado durante una ventana de tiempo. Esto puede significar un beneficio que haga que merezca la pena la monitorización constante. Por supuesto, el trabajo no es sencillo, ni cómodo, ni fácil, y obliga a revisar mucho código, pero... ¡qué la musa te pille trabajando!

Figura 1: Un repositorio de código público en /viewvc/

En un proceso de pentesting externo, o una auditoría de seguridad web, leer el código fuente de algún proyecto de la compañía y buscar un fallo para hacer un exploit suele quedar fuera de nuestro ámbito por cuestiones de tiempo y limitaciones económicas - salvo contadas excepciones -, pero aún así sigue siendo útil localizar los repositorios de código, que pueden estar llenos de información.

Figura 1: Panel de administración de BuildBot

De un repositorio de código como donde haya un Buildbot o un Subversion, o cualquier otro es posible descubrir usuarios, rutas internas, fechas e información táctica de la compañía que puede ser de mucha utilidad para lanzar ataques de fuerza bruta, descubrir ficheros "ocultos" o perdidos, o simplemente nuevas URLs de servidores web a analizar.

Figura 3: Rutas, usuarios y fechas en cada revisión del código

En el caso de los Subversion, los ficheros de log .svn/entries nos han dado ya bastantes éxitos en auditorías, no solo por el descubrimiento de usuarios que aprovechar en los diccionarios, sino por las rutas a "Juicy Files" que a veces nos sorprenden con sus propias webshells.

Figura 4: Plugin de FOCA SVN Extractor analizando rutas en el fichero .svn/entries descubierto

Al final, descubrir esos ficheros suele ser una tarea que se realiza con el WebFuzzer, usando un buen diccionario que se alimente con las rutas más comunes donde se suelen encontrar dichos repositorios. De esas listas de ficheros hay que ir coleccionando los valores más usuales para poder luego encontrarlos. Algunos que hemos ido coleccionando son: .svn, .svn/entries, viewvc, trunk, cvs, smartcvs, viewvc.cgi, viewvc.php, etc... Cualquiera que conozcas que sea de interés se agradecerá que lo compartas.

Fichero 5: Webshell en PHP publicada

Actualmente FOCA marca todos ellos como Juicy Files, y el próximo plugin que vamos a liberar es SVN Extractor, ul analizador de ficheros .svn/entries que parsea todas las rutas, extrae todos los usuarios, y mete las URLs al proyecto principal, para buscar en ellas todas las vulnerabilidades que ya busca FOCA.

Por tu seguridad, siempre que puedas, procura proteger el acceso a los paneles de administración o los repositorios del código fuente de tus proyectos. No sólo porque alguien te robe el código, sino por toda la información que pueda obtenerse de ellos, de que esa parte del servidor web también sea atacable.

Saludos Malignos!

1 comentario:

  1. Me parece que en la carpeta .svn/text-base/ se guardan copias en texto plano de archivos no si ya lo habías visto.

    Saludos.

    ResponderEliminar