Linux ubuntu22 5.15.0-133-generic #144-Ubuntu SMP Fri Feb 7 20:47:38 UTC 2025 x86_64
nginx/1.18.0
: 128.199.27.159 | : 216.73.216.2
Cant Read [ /etc/named.conf ]
8.1.31
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
phpmyadmin /
libraries /
classes /
[ HOME SHELL ]
Name
Size
Permission
Action
Charsets
[ DIR ]
drwxr-xr-x
Command
[ DIR ]
drwxr-xr-x
Config
[ DIR ]
drwxr-xr-x
Controllers
[ DIR ]
drwxr-xr-x
Database
[ DIR ]
drwxr-xr-x
Dbal
[ DIR ]
drwxr-xr-x
Display
[ DIR ]
drwxr-xr-x
Engines
[ DIR ]
drwxr-xr-x
Exceptions
[ DIR ]
drwxr-xr-x
Export
[ DIR ]
drwxr-xr-x
Gis
[ DIR ]
drwxr-xr-x
Html
[ DIR ]
drwxr-xr-x
Import
[ DIR ]
drwxr-xr-x
Navigation
[ DIR ]
drwxr-xr-x
Plugins
[ DIR ]
drwxr-xr-x
Properties
[ DIR ]
drwxr-xr-x
Providers
[ DIR ]
drwxr-xr-x
Query
[ DIR ]
drwxr-xr-x
Server
[ DIR ]
drwxr-xr-x
Setup
[ DIR ]
drwxr-xr-x
Table
[ DIR ]
drwxr-xr-x
Twig
[ DIR ]
drwxr-xr-x
Utils
[ DIR ]
drwxr-xr-x
Advisor.php
12.22
KB
-rw-r--r--
Bookmark.php
10.69
KB
-rw-r--r--
BrowseForeigners.php
10.82
KB
-rw-r--r--
Charsets.php
7.1
KB
-rw-r--r--
CheckUserPrivileges.php
11.94
KB
-rw-r--r--
Config.php
45.37
KB
-rw-r--r--
Console.php
3.38
KB
-rw-r--r--
Core.php
42.33
KB
-rw-r--r--
CreateAddField.php
17.57
KB
-rw-r--r--
DatabaseInterface.php
75
KB
-rw-r--r--
DbTableExists.php
3.21
KB
-rw-r--r--
Encoding.php
8.51
KB
-rw-r--r--
Error.php
13.97
KB
-rw-r--r--
ErrorHandler.php
17.15
KB
-rw-r--r--
ErrorReport.php
9.14
KB
-rw-r--r--
Export.php
46.24
KB
-rw-r--r--
File.php
21.28
KB
-rw-r--r--
FileListing.php
2.85
KB
-rw-r--r--
Font.php
5.58
KB
-rw-r--r--
Footer.php
10.54
KB
-rw-r--r--
Git.php
17.95
KB
-rw-r--r--
Header.php
21.45
KB
-rw-r--r--
Import.php
57.46
KB
-rw-r--r--
Index.php
15.07
KB
-rw-r--r--
IndexColumn.php
4.23
KB
-rw-r--r--
InsertEdit.php
130.18
KB
-rw-r--r--
InternalRelations.php
17.31
KB
-rw-r--r--
IpAllowDeny.php
9.76
KB
-rw-r--r--
Language.php
4.46
KB
-rw-r--r--
LanguageManager.php
23.96
KB
-rw-r--r--
Linter.php
5.25
KB
-rw-r--r--
ListAbstract.php
1.77
KB
-rw-r--r--
ListDatabase.php
4.3
KB
-rw-r--r--
Logging.php
2.72
KB
-rw-r--r--
Menu.php
21.3
KB
-rw-r--r--
Message.php
19.09
KB
-rw-r--r--
Mime.php
916
B
-rw-r--r--
Normalization.php
41.48
KB
-rw-r--r--
OpenDocument.php
8.42
KB
-rw-r--r--
Operations.php
37.84
KB
-rw-r--r--
OutputBuffering.php
3.98
KB
-rw-r--r--
ParseAnalyze.php
2.37
KB
-rw-r--r--
Partition.php
7.17
KB
-rw-r--r--
Pdf.php
4.34
KB
-rw-r--r--
Plugins.php
25.18
KB
-rw-r--r--
Profiling.php
2.26
KB
-rw-r--r--
RecentFavoriteTable.php
12.01
KB
-rw-r--r--
Relation.php
77.39
KB
-rw-r--r--
RelationCleanup.php
14.7
KB
-rw-r--r--
Replication.php
4.73
KB
-rw-r--r--
ReplicationGui.php
21.52
KB
-rw-r--r--
ReplicationInfo.php
4.83
KB
-rw-r--r--
Response.php
16.47
KB
-rw-r--r--
Routing.php
5.71
KB
-rw-r--r--
Sanitize.php
12.13
KB
-rw-r--r--
SavedSearches.php
11.93
KB
-rw-r--r--
Scripts.php
3.64
KB
-rw-r--r--
Session.php
8.01
KB
-rw-r--r--
Sql.php
66.67
KB
-rw-r--r--
SqlQueryForm.php
7.12
KB
-rw-r--r--
StorageEngine.php
12.53
KB
-rw-r--r--
SubPartition.php
3.32
KB
-rw-r--r--
SystemDatabase.php
3.66
KB
-rw-r--r--
Table.php
95.67
KB
-rw-r--r--
TablePartitionDefinition.php
6.51
KB
-rw-r--r--
Template.php
3.87
KB
-rw-r--r--
Theme.php
8.76
KB
-rw-r--r--
ThemeManager.php
9.58
KB
-rw-r--r--
Tracker.php
29.78
KB
-rw-r--r--
Tracking.php
37.25
KB
-rw-r--r--
Transformations.php
16.29
KB
-rw-r--r--
TwoFactor.php
6.8
KB
-rw-r--r--
Types.php
25.2
KB
-rw-r--r--
Url.php
8.76
KB
-rw-r--r--
UserPassword.php
7.11
KB
-rw-r--r--
UserPreferences.php
8.45
KB
-rw-r--r--
Util.php
102.31
KB
-rw-r--r--
Version.php
533
B
-rw-r--r--
VersionInformation.php
7.15
KB
-rw-r--r--
ZipExtension.php
10.76
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : CheckUserPrivileges.php
<?php /** * Get user's global privileges and some db-specific privileges */ declare(strict_types=1); namespace PhpMyAdmin; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\Utils\SessionCache; use function mb_strpos; use function mb_substr; use function preg_match; use function preg_replace; use function strpos; /** * PhpMyAdmin\CheckUserPrivileges class */ class CheckUserPrivileges { /** @var DatabaseInterface */ private $dbi; /** * @param DatabaseInterface $dbi DatabaseInterface object */ public function __construct(DatabaseInterface $dbi) { $this->dbi = $dbi; } /** * Extracts details from a result row of a SHOW GRANT query * * @param string $row grant row * * @return array */ public function getItemsFromShowGrantsRow(string $row): array { $db_name_offset = mb_strpos($row, ' ON ') + 4; $tblname_end_offset = mb_strpos($row, ' TO '); $tblname_start_offset = false; $__tblname_start_offset = mb_strpos($row, '`.', $db_name_offset); if ($__tblname_start_offset && $__tblname_start_offset < $tblname_end_offset) { $tblname_start_offset = $__tblname_start_offset + 1; } if ($tblname_start_offset === false) { $tblname_start_offset = mb_strpos($row, '.', $db_name_offset); } $show_grants_dbname = mb_substr( $row, $db_name_offset, $tblname_start_offset - $db_name_offset ); $show_grants_dbname = Util::unQuote($show_grants_dbname, '`'); $show_grants_str = mb_substr( $row, 6, mb_strpos($row, ' ON ') - 6 ); $show_grants_tblname = mb_substr( $row, $tblname_start_offset + 1, $tblname_end_offset - $tblname_start_offset - 1 ); $show_grants_tblname = Util::unQuote($show_grants_tblname, '`'); return [ $show_grants_str, $show_grants_dbname, $show_grants_tblname, ]; } /** * Check if user has required privileges for * performing 'Adjust privileges' operations * * @param string $show_grants_str string containing grants for user * @param string $show_grants_dbname name of db extracted from grant string * @param string $show_grants_tblname name of table extracted from grant string */ public function checkRequiredPrivilegesForAdjust( string $show_grants_str, string $show_grants_dbname, string $show_grants_tblname ): void { // '... ALL PRIVILEGES ON *.* ...' OR '... ALL PRIVILEGES ON `mysql`.* ..' // OR // SELECT, INSERT, UPDATE, DELETE .... ON *.* OR `mysql`.* if ($show_grants_str !== 'ALL' && $show_grants_str !== 'ALL PRIVILEGES' && (mb_strpos( $show_grants_str, 'SELECT, INSERT, UPDATE, DELETE' ) === false) ) { return; } if ($show_grants_dbname === '*' && $show_grants_tblname === '*' ) { $GLOBALS['col_priv'] = true; $GLOBALS['db_priv'] = true; $GLOBALS['proc_priv'] = true; $GLOBALS['table_priv'] = true; if ($show_grants_str === 'ALL PRIVILEGES' || $show_grants_str === 'ALL' ) { $GLOBALS['is_reload_priv'] = true; } } // check for specific tables in `mysql` db // Ex. '... ALL PRIVILEGES on `mysql`.`columns_priv` .. ' if ($show_grants_dbname !== 'mysql') { return; } switch ($show_grants_tblname) { case 'columns_priv': $GLOBALS['col_priv'] = true; break; case 'db': $GLOBALS['db_priv'] = true; break; case 'procs_priv': $GLOBALS['proc_priv'] = true; break; case 'tables_priv': $GLOBALS['table_priv'] = true; break; case '*': $GLOBALS['col_priv'] = true; $GLOBALS['db_priv'] = true; $GLOBALS['proc_priv'] = true; $GLOBALS['table_priv'] = true; break; default: } } /** * sets privilege information extracted from SHOW GRANTS result * * Detection for some CREATE privilege. * * Since MySQL 4.1.2, we can easily detect current user's grants using $userlink * (no control user needed) and we don't have to try any other method for * detection * * @todo fix to get really all privileges, not only explicitly defined for this user * from MySQL manual: (https://dev.mysql.com/doc/refman/5.0/en/show-grants.html) * SHOW GRANTS displays only the privileges granted explicitly to the named * account. Other privileges might be available to the account, but they are not * displayed. For example, if an anonymous account exists, the named account * might be able to use its privileges, but SHOW GRANTS will not display them. */ private function analyseShowGrant(): void { if (SessionCache::has('is_create_db_priv')) { $GLOBALS['is_create_db_priv'] = SessionCache::get( 'is_create_db_priv' ); $GLOBALS['is_reload_priv'] = SessionCache::get( 'is_reload_priv' ); $GLOBALS['db_to_create'] = SessionCache::get( 'db_to_create' ); $GLOBALS['dbs_where_create_table_allowed'] = SessionCache::get( 'dbs_where_create_table_allowed' ); $GLOBALS['dbs_to_test'] = SessionCache::get( 'dbs_to_test' ); $GLOBALS['db_priv'] = SessionCache::get( 'db_priv' ); $GLOBALS['col_priv'] = SessionCache::get( 'col_priv' ); $GLOBALS['table_priv'] = SessionCache::get( 'table_priv' ); $GLOBALS['proc_priv'] = SessionCache::get( 'proc_priv' ); return; } // defaults $GLOBALS['is_create_db_priv'] = false; $GLOBALS['is_reload_priv'] = false; $GLOBALS['db_to_create'] = ''; $GLOBALS['dbs_where_create_table_allowed'] = []; $GLOBALS['dbs_to_test'] = Utilities::getSystemSchemas(); $GLOBALS['proc_priv'] = false; $GLOBALS['db_priv'] = false; $GLOBALS['col_priv'] = false; $GLOBALS['table_priv'] = false; $rs_usr = $this->dbi->tryQuery('SHOW GRANTS'); if (! $rs_usr) { return; } $re0 = '(^|(\\\\\\\\)+|[^\\\\])'; // non-escaped wildcards $re1 = '(^|[^\\\\])(\\\)+'; // escaped wildcards while ($row = $this->dbi->fetchRow($rs_usr)) { [ $show_grants_str, $show_grants_dbname, $show_grants_tblname, ] = $this->getItemsFromShowGrantsRow($row[0]); if ($show_grants_dbname === '*') { if ($show_grants_str !== 'USAGE') { $GLOBALS['dbs_to_test'] = false; } } elseif ($GLOBALS['dbs_to_test'] !== false) { $GLOBALS['dbs_to_test'][] = $show_grants_dbname; } if (mb_strpos($show_grants_str, 'RELOAD') !== false) { $GLOBALS['is_reload_priv'] = true; } // check for the required privileges for adjust $this->checkRequiredPrivilegesForAdjust( $show_grants_str, $show_grants_dbname, $show_grants_tblname ); /** * @todo if we find CREATE VIEW but not CREATE, do not offer * the create database dialog box */ if ($show_grants_str !== 'ALL' && $show_grants_str !== 'ALL PRIVILEGES' && $show_grants_str !== 'CREATE' && strpos($show_grants_str, 'CREATE,') === false ) { continue; } if ($show_grants_dbname === '*') { // a global CREATE privilege $GLOBALS['is_create_db_priv'] = true; $GLOBALS['is_reload_priv'] = true; $GLOBALS['db_to_create'] = ''; $GLOBALS['dbs_where_create_table_allowed'][] = '*'; // @todo we should not break here, cause GRANT ALL *.* // could be revoked by a later rule like GRANT SELECT ON db.* break; } // this array may contain wildcards $GLOBALS['dbs_where_create_table_allowed'][] = $show_grants_dbname; $dbname_to_test = Util::backquote($show_grants_dbname); if ($GLOBALS['is_create_db_priv']) { // no need for any more tests if we already know this continue; } // does this db exist? if ((! preg_match('/' . $re0 . '%|_/', $show_grants_dbname) || preg_match('/\\\\%|\\\\_/', $show_grants_dbname)) && ($this->dbi->tryQuery( 'USE ' . preg_replace( '/' . $re1 . '(%|_)/', '\\1\\3', $dbname_to_test ) ) || mb_substr((string) $this->dbi->getError(), 1, 4) == 1044) ) { continue; } /** * Do not handle the underscore wildcard * (this case must be rare anyway) */ $GLOBALS['db_to_create'] = preg_replace( '/' . $re0 . '%/', '\\1', $show_grants_dbname ); $GLOBALS['db_to_create'] = preg_replace( '/' . $re1 . '(%|_)/', '\\1\\3', $GLOBALS['db_to_create'] ); $GLOBALS['is_create_db_priv'] = true; /** * @todo collect $GLOBALS['db_to_create'] into an array, * to display a drop-down in the "Create database" dialog */ // we don't break, we want all possible databases //break; } $this->dbi->freeResult($rs_usr); // must also cacheUnset() them in // PhpMyAdmin\Plugins\Auth\AuthenticationCookie SessionCache::set('is_create_db_priv', $GLOBALS['is_create_db_priv']); SessionCache::set('is_reload_priv', $GLOBALS['is_reload_priv']); SessionCache::set('db_to_create', $GLOBALS['db_to_create']); SessionCache::set( 'dbs_where_create_table_allowed', $GLOBALS['dbs_where_create_table_allowed'] ); SessionCache::set('dbs_to_test', $GLOBALS['dbs_to_test']); SessionCache::set('proc_priv', $GLOBALS['proc_priv']); SessionCache::set('table_priv', $GLOBALS['table_priv']); SessionCache::set('col_priv', $GLOBALS['col_priv']); SessionCache::set('db_priv', $GLOBALS['db_priv']); } /** * Get user's global privileges and some db-specific privileges */ public function getPrivileges(): void { $username = ''; $current = $this->dbi->getCurrentUserAndHost(); if (! empty($current)) { [$username] = $current; } // If MySQL is started with --skip-grant-tables if ($username === '') { $GLOBALS['is_create_db_priv'] = true; $GLOBALS['is_reload_priv'] = true; $GLOBALS['db_to_create'] = ''; $GLOBALS['dbs_where_create_table_allowed'] = ['*']; $GLOBALS['dbs_to_test'] = false; $GLOBALS['db_priv'] = true; $GLOBALS['col_priv'] = true; $GLOBALS['table_priv'] = true; $GLOBALS['proc_priv'] = true; } else { $this->analyseShowGrant(); } } }
Close