loader
Foto

Command Injection a webes alkalmazásoknál

A Command Injection támadás sajnos szintén előfordulhat egy webes alkalmazásnál, ezért fontos megismernünk, hogy tudjunk ellene védekezni. Ennek a támadási módszernek a segítségével a vizsgált webes alkalmazás (illetve a tárhelye) felett az irányítás könnyedén átvehető. Ezért ebben a cikkben átnézzük ennek a módszernek a használatát, hogy az ellene való védekezés könnyebbé váljon.

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.

kep
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.

kep
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.

kep
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).

kep
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.

kep
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.

kep
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).

kep
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).

kep
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).

kep
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).

kep
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).

kep
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).

kep
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).

kep
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. §).



Egyéb cikkek

További cikkeink ebben a témakörben

Régebbi cikkeink

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. . . .