Felhívjuk az Olvasók figyelmét arra, hogy ez a cikk azért született meg, hogy a saját fejlesztésű webes alkalmazások biztonságosabbak legyenek. Nem célunk, és határozottan elzárkózunk attól, hogy segítsünk bárkinek számítógépes bűncselekmények elkövetésében.
A "Command Injection" segítségével a támadónak lehetősége lesz arra, hogy a webes alkalmazás tárhelyén különböző parancsokat futtasson. Ennek segítségével különböző érzékeny adatokhoz juthat hozzá (alkalmazás elérési útvonala, tárhely tartalma, futó folyamatok nevei, stb), illetve átveheti akár a tárhely felett az iránytást is. Könnyen belátható tehát az, hogy ez a támadási módszer nagyon veszélyes, a webes alkalmazások fejlesztésénél minden lehetőséget ki kell zárni annak, hogy ez a módszer alkalmazható legyen.
De hogyan is tudjuk alkalmazni ezt a módszert? Ebben a cikkben ezt tekintjük át.
Indítsuk el azt a virtuális gépet, amelyik a tesztalkalmazásunkat, a DVWA-t hosztolja. Ennek az IP címe a 192.168.56.102. Ezután lépjünk be az alkalmazásba (admin/password), majd navigáljunk a következő URL-re.
http://192.168.56.102/DVWA-master/vulnerabilities/exec/#
Ezután pingeljünk meg egy olyan IP címet, amelynél a pingelés legális. Ilyen lehet akár a 8.8.8.8 vagy a "scanme.nmap.org". Az eredmény látható az első ábrán.
1. ábra Pingelés eredménye
Látható a pingelés eredményéből, hogy sikeresen alkalmaztuk az ICMP protokollt, és nem is történt csomagvesztés. Próbáljunk most más parancsokat futtatni. Ez önállóan nem tehető meg, a vizsgált tesztalkalmazás pingelést fogad csak el. Viszont ez az alkalmazás erre a támadási/tesztelési módra érzékeny, amelyet úgy tudunk megoldani, hogy a pingelés mellett egyéb parancsot, parancsokat is megadunk logikai operátor segítségével.
Pingeljük újra a tesztalkalmazással úgy, hogy "&&" logikai operátor alkalmazásával lekérjük annak a könyvtárnak a tartalmát, ahonnan a vzsgált alkalmazás a tárhelyen belül megtalálható. Linux parancsot adunk ki ("ls"). A operációs rendszer típusa, verziószáma egy másik OWASP esetből derül ki.
192.168.56.103 && ls
Aa futási eredmény látható a 2. ábrán.
2. ábra A pingelés eredménye mellett megtaláljuk a könyvtár tartalmát is
Adódik a kérdés, nekünk mindig meg kell adni érvényes IP címet a pingelés miatt? A válaszunk nem, próbáljuk ki a következő tesztesetet, ahol egy konstanst adunk át egy logikai VAGY operátorral, illetve megjelenítjük a tárhely adott könyvtárának a tartalmát.
1 | ls -l
Ennek a tesztesetnek az eredménye látható a harmadik ábrán.
3. ábra Az "1 | ls -l" futási eredménye
Adódik az a kérdés, hogy kell-e nekünk a pingelés eredménye, hiszen számunkra nem az a fontos, hogy egy adott IP elérhető-e az ICMP protokollal, hanem az, tudunk-e futtatni plusz parancsokat. Alkalmazzuk a következő tesztvektort, ahol a "&" logikai operátort.
1 & ls -l
Most már csak a számunkra fontos eredményt kapjuk, azaz a könyvtár tartalmát (4. ábra).
4. ábra A kérdéses könyvtár tartalma
Akár el is hagyható a konstans.
& ls -l
Ennek a tesztvektornak az alkalmazásával, ahol már nem alkalmazzuk a konstanst, ugyanazt az eredményt kapjuk.
5. ábra Elhagyható a konstans
Most futtassunk más parancsokat, például nézzük meg a futó processzek listáját, ehhez alkalmazzuk a következő tesztvektort.
1 | ps
A futó processzek listájának egy részét mutatja a 6. ábra.
6. ábra Futó processzek listájának részlete
Most alkalmazzuk a linuxos "pwd" parancsot.
1 | pwd
A vizsgált tesztalkalmazás teljes elérési útvonalát kapjuk meg ennek a parancsnak a hatására (7. ábra).
7. ábra Elérési útvonal megjelenítése
A különböző parancsok egyszerre is kiadhatók a logikai operátorok alkalmazásával. Nézzük meg példaként a következő tesztesetet.
1 | ps & pwd & whoami
Ennek hatására megjelenítjük a webes felhasználót, az elérési útvonalat, illetve a futó processzek listáját (8. ábra).
8. ábra Több utasítás is futtatható egyszerre
Nézzünk most meg újabb parancsokat, próbáljuk ki a következő tesztesetet.
1 | users &uname -a & id
Ennek az alkalmazásával a tárhelyről kapunk meg érzékeny adatokat (9. ábra).
9. ábra Tárhely néhány adata
Jelenítsük meg most a "passwd" file tartalmát a következő utasítással.
1 | cat /etc/passwd
Ennek segítségével megkapjuk a "passwd" file tartalmát (természetesen a hash-elt jelszavakat nem).
10. ábra A "passwd" file tartalma
Most mentsük el a megnyitott hálózati kapcsolatokat egy file-ba, és ezt tároljuk el a szerveren.
1 | netstat > eredmeny.txt
Enek a parancsnak a segítségével eltároljuk "eredmeny.txt" file-ba a megnyitott netes kapcsolatokat (11. ábra).
11. ábra Elmentjük file-ba az érzékeny adatokat
Most jelenítsük meg ennek a text file-nak a tartalmát. Ehhez meg kell adnunk a file-nak a teljes elérési útvonalát.
http://192.168.56.102/DVWA-master/vulnerabilities/exec/eredmeny.txt
Az "eredmeny.txt" file tartalma a böngészőn (12. ábra).
12. ábra Netkapcsolatok a böngészőben
Végül a "config.inc.php" file tartalmát másoljuk át a "config.txt" file-ba.
1 | cat /var/www/DVWA-master/config/config.inc.php > config.txt
Ezután jelenítsük meg ennek a file-nak a tartalmát is a következő URL segítségével.
http://192.168.56.102/DVWA-master/vulnerabilities/exec/config.txt
Érzékeny adatokat találunk most ebben a file-ban is, látható az adatbázis elérése, neve, felhasználója, illetve annak a jelszava is (13. ábra).
13. ábra Érzékeny adatok a böngészőben
Látható tehát az, hogy ennek a támadási módszernek komoly veszélyei vannak. Ha a vizsgált webes alkalmazás sérülékeny erre a támadási módszerre, akkor szinte bármi megtehető a tárhelyen, illetve a webes alkalmazásban. Adatokat törölhetünk, módosíthatunk, stb.
Ezért a webes alkalmazások fejlesztésénél erre a sérülékenységre különösen figyelni kell.
Még egyszer felhívjuk az Olvasók figyelmét arra, hogy ez a cikk azért született meg, hogy rámutassunk a filefeltöltés sérülékenység veszélyére, és az ellene való védekezés fontosságára. Határozottan elhatárolódunk bármilyen bűncselekmény elkövetésének a segítésében.
Az információs rendszer vagy adat megsértése bűncselekmény (423. §).
Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .
A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .
Bemutatjuk most a saját (!) Wifi-s hálózatunk tesztelésének az alapjait. Megnézzük, hogy hogyan lehet biztonságos jelszót választani. Feltörhetetlen rendszer nem létezik, de megismerve a tesztelés folyamatát, válaszokat kaphatunk arra vonatkozólag, h. . . .