WebElektronika

MySql adatbázis penetration tesztje az nmap segítségével

person access_time 2018.07.30.
Ebben a cikkben áttekintjük az nmap penetration alkalmazását. Egy MySql adatbázisról szeretnénk minél több információt megtudni, ehhez hívjuk segítségül az nmap-ot, illetve, a hydra-t. Látni fogjuk azt, hogy nagyon fontos a megfelelő, egyedi jelszó alkalmazása. Továbbá felhívjuk az Olvasó figyelmét arra, hogy ezeknek a programoknak a nem saját számítógépen (saját hálózaton) történő használata bűncselekménynek minősül!


Ez a cikk illeszkedik a korábban indult sorozatunkba, amelynek célja az, hogy az otthoni rendszerünk tesztelésének az alapjait megismerjük, hogy a saját számítógépünk, hálózatunk biztonságosabb legyen. Nem célunk tehát semmilyen segítséget nyújtani más rendszerek feltörésének a megismerésében!

Figyelem! Semmilyen felelősséget nem vállalunk a cikk tartalmáért!

 

Először indítsuk el a virtuális gépeinket, amelyek az Ubuntu Desktop operációs rendszert, illetve a Kali Linuxot tartalmazza. Ezurtán keressük meg a saját hálózatunkon az Ubuntu operációs rendszerünket, amelyen a MySql-t kívánjuk majd vizsgálni. Ehhez ki kell adnunk a következő parancsot:

nmap -sP 172.18.69.*

Ezután megkapjuk a hálózatunkban található eszközeink IP címeit (1. ábra).

kep
1. ábra   Az nmap alkalmazása a hálózatunk megismeréséért
 

Látjuk, hogy a vizsgálni kívánt számítógépünk (virtuális gép) a 172.18.69.154-es IP címen található (1. ábra). Alkalmazzuk újra az nmap-ot, de úgy, hogy csak ennek a számítógépnek a tulajdonságai érdekelnek minket. Ehhez a következő parancsra lesz szükségünk:

nmap 172.18.69.154

Az nmap parancsot nem paramétereztük fel, ezért nem kapunk részletes adatokat, de a nyitott portok láthatóvá váltak számunkra (2. ábra). Célunk most a MySql penetration tesztelése, ezért a többi (nyitott) porttal most nem foglalkozunk. (Akit érdekel, kipróbálhatja az nmap futtatásánál a "-sV", "-O", "-A" parancsokat is.)

kep
2. ábra   Az nmap futási eredménye a vizsgálandó IP címnél. Megkaptuk az összes nyitott portot
 

Látjuk, hogy ezen az IP címen több port is nyitva van. Nézzük most meg a 3306 portot részletesebben, hiszen ezen található szolgáltatás érdekel minket. Több lehetőség közül is választhatunk, használjunk most egy scriptet.

nmap -p 3306 --script mysql-info 172.18.69.154

Ennek a scriptnek az alkalmazásával a célgépen található MySql szolgáltatásról részletesebb információt kapunk (3. ábra).

kep
3. ábra   A mysql-info script alkalmazása
 

Szeretnénk most megtudni a tesztelendő számítógép MySql szerverének felhasználónév, jelszó párosát. Ezért a brute force módszert fogjuk alkalmazni. De ahhoz, hogy erre lehetőségünk legyen, szükséges nekünk két file. Az egyik file-ban a felhasználóneveket, a másikban pedig az általunk lehetségesnek ítélt jelszavakat írjuk be. Vegyük észre, ezért nem jó az, ha default jelszavakat használunk. Javasolt mindig az egyedi jelszavak alkalmazása!
A Linux operációs rendszerben több szövegszerkesztő is megtalálható, alkalmazzuk mi a nano-t. Adjuk ki a következő parancsot a felhasználói nevek listájának az elkészítéséhez:

nano users.txt

Létrehozásra került az "users.txt" file, írjunk bele néhány általunk lehetségesnek gondolt felhasználói nevet (4.. ábra), majd mentsük el.

kep
4. ábra   Létrehozzuk a nano-val a "users.txt" file-t
 

Készítsük most el a jelszavak listáját is egy külön file-ban, megint indítsuk el a nano-t:

nano jelszo.txt

Írjunk be néhány jelszót, köztük a telepítéskor megadott "123456"-ot is (5. ábra). Alkalmazhatjuk akár a korábban megismert crunch-ot is.

kep
5. ábra   A jelszavak listája

Az nmap "mysql-brute" scriptjének az alkalmazása helyett hívjuk segítségül a hydra-t! Írjuk be a következő parancsot, majd indítsuk el.

hydra 172.18.69.154 -L users.txt -P jelszo.txt -t 5 -f mysql

A hydra első paramétereként megadtuk azt az IP címet, ahol a tesztelendő szolgáltatásunk fut, ezután a "-L" segítségével adjuk meg a lehetségesnek gondolt felhasználók listáját, a "-P"-vel a jelszavakat tartalmazó file-t, a "-t 5"-tel állítjuk be azt, hogy a tesztelés öt szálon fusson.
A "-f" segítségével állítjuk le a hydra-t, amikor az adott felhasználónévhez megtalálta a jelszót, végül pedig a "mysql" segítségével állítjuk be azt, hogy a hydra mysql-t brute force-oljon (6. ábra).

kep
6. ábra   Megkerestük a hydra segítségével a root felhasználóhoz tartozó jelszót
 

Látjuk a 6. ábrán, hogy a root-hoz tartozó jelszót a hydra megtalálta. Látható tehát az, hogy az egyszerűbb felhasználónevek és jelszavak alkalmazása meggyengíti a rendszerünket, hiszen az előbb tapasztalhattuk azt, hogy ezek a jelszavak könnyen, valós időben "kipörgethetők". Használjunk tehát olyan jelszavakat, amelyeknek a brute force-olása nagyon hosszú időbe kerül, amelyek a különböző szótárfile-okban nem találhatók meg.
Ezután, ezeknek az érzékeny adatoknak az ismeretében különböző adatokat tudunk megszerezni a tesztelendő IP címen található MySql szolgáltatásról. Először nézzük meg, milyen adatbázisok találhatók az adott IP címen.
Ehhez alkalmaznunk kell az nmap "mysql-databases" scriptjét, és itt meg is kell adnunk az előbb megszerzett felhasználói nevet, illetve jelszót.

nmap -p 3306 --script mysql-databases --script-args mysqluser=root,mysqlpass=123456 172.18.69.154

Futtassuk ezt az nmap parancsot, és megkapjuk az adatbázisok listáját (7. ábra).

kep
7. ábra  Az nmap script segítségével megkaptuk a tesztgépen található mysql adatbázisokat
 

Most nézzük meg azt, hogy a MySql szervernek milyen felhasználói vannak (a root-on kívül). Ehhez paraméterezzük fel így az nmap-ot:

nmap -p 3306 --script mysql-users --script-args mysqluser=root,mysqlpass=123456 172.18.69.154

A "mysql-users" script alkalmazásához megint szükség van az előbb megszerzett jelszóra. Futtassuk az nmap-ot, és megkapjuk a felhasználók listáját (8. ábra).

kep
8. ábra   Az nmap segítségével megkaptuk a felhasználók listáját
 

Ha szeretnénk megkapni a különböző felhasználókhoz tartozó jelszavakat, akkor a korábban létrehozott "users.txt" file tartalmát kell módosítani, vagy a hydra paraméterezését kell megváltoztatni úgy, hogy nem a felhasználók listáját adjuk meg, hanem csak az adott felhasználó nevét.

Nézzük most meg azt a lehetőséget, amelynek segítségével a MySql "változóit" kapjuk meg. Ehhez így paraméterezzük fel az nmap-ot:

nmap -p 3306 --script mysql-variables --script-args mysqluser=root,mysqlpass=123456 172.18.69.154

Ennek az nmap lehetőségnek a futási eredményének részletét látjuk a 9. ábrán.

kep
9. ábra   MySql "változók"

Végül annak az nmap scriptnek a használatát nézzük meg, amelynek segítségével enumeration-t tudunk alkalmazni. Az enumeration segítségével megkapjuk az összes felhasználót.

nmap -p 3306 --script mysql-enum --script-args mysqluser=root,mysqlpass=123456 172.18.69.154

Az enumeration script futási eredménye látható a 10. ábrán.

kep
10. ábra   Az nmap enumeration script futási eredménye
 

Ebből a rövid bemutatóból már látható, hogy mindig kerüljük el a default nevek, illetve jelszavak alkalmazását. Megjegyezzük továbbá azt, hogy további script-eket is tudunk futtatni az nmap-pal, illetve file-okat is tudunk letölteni, de a cikkünk nem a teljes penetration tesztről szól.