Email beszúrás sebezhetőségek és elkerülésük
A php|architect és a Pro PHP legutóbbi közös podcast-jában érdekes dologról beszélt Chris Shiflett, ez pedig az email injection, melynek egyik legjellemzőbb példája a kéretlen levélküldés rosszul megírt kapcsolatfelvételi űrlap segítségével.
Ezt a levelet jobb esetben csak pár felhasználó kapja meg, rosszabb esetben akár titkos másolatként sok száz, illetve ezer felhasználóhoz juthat el. Ez lehetőséget biztosít a nem megfelelően feldolgozott űrlapok esetén különböző kéretlen üzenetek továbbítására, ráadásul úgy, hogy esetleg az üzemeltető nem is tud róla. Ráadásul az ő nevében, azaz email címéről mennek ki a levelek.
■ Az email injection lényege
Ha egy weboldalon van egy kapcsolatfelvételi - esetleg valamilyen más hasonló - űrlap, amivel levelet lehet küldeni egy előre meghatározott személynek, illetve egy, a felhasználó által megadott személynek, akkor ha az űrlap feldolgozása nem megfelelő, ezt kihasználva megfelelő utasítások kiadásával vissza lehet élni a szolgáltatással. Elérhető, hogy az e-mail az előre meghatározott célszemély helyett vagy mellett egy vagy több, a rosszindulatú felhasználó által megadott címre menjen el. Ha a levél szövegét is a felhasználó adja meg, akkor a kiküldendő levél tartalma is jelentős mértékben befolyásolható.Ezt a levelet jobb esetben csak pár felhasználó kapja meg, rosszabb esetben akár titkos másolatként sok száz, illetve ezer felhasználóhoz juthat el. Ez lehetőséget biztosít a nem megfelelően feldolgozott űrlapok esetén különböző kéretlen üzenetek továbbítására, ráadásul úgy, hogy esetleg az üzemeltető nem is tud róla. Ráadásul az ő nevében, azaz email címéről mennek ki a levelek.
Nemrég én is belefutottam
A címzett fix volt, viszont a feladót meg lehetett adni és azon kívül, hogy az e-mail cím legyen megadva rendesen, más ellenőrzést nem írtam mellé. Így a from inputtal módosítható volt a kimenő levél fejléce és cc, bcc-ben ki lehetett küldeni a kapcsolatfelvevő űrlap tartalmát másolatban másnak is.
Ami a kész megoldásban le van írva, azóta az összes mezőt olyan mintákkal ellenőrzőm \n és \r-t is beleértve. Ha pedig olyan karaktersort írtak be, ami nagy valószínűséggel ilyen spam próba, akkor küldetek saját magamnak egy e-mail injection report-ot. Névhez én még szigorúbbat használok, csak karakter és szóköz, bár lehet már túl paranoiás vagyok azóta. :)
- pint3r -
Egyetértek
(Drasztikus megoldás, de remélhetőleg jóhiszemű felhasználó nem fog vele találkozni...)
Egy link a témáról: http://securephp.damonkohler.com/index.php/Email_Injection
botnet
---
üdv.: arnyek
redsky.hu
Korlát nélkül
Üdv.: Laci
elkódolás
a magam részéről nem túl gyakran állítok elő ilyen script-eket, viszont olyankor (általában kényelmi okokból) más, külső levél-küldő kódokat használok fel, melyek viszont minden/legtöbb esetben kódolják a tárgy, feladó és másegyéb mezőket az RFC-nek megfelelően.
(szvsz) inkább figyelni kéne a levél megszerkesztésére és nemcsak továbbadni a bejövő változókat a levélküldő fügvénynek.
bbalint
más
db
A feladó és az üzenet korrekt megadása pedig azért lehet hasznos, mert ebben az esetben az e-mail kliensből azonnal lehet válaszolni a bejövő levelekre. Kényelmesebb, mint egy értesítő után belépni az adminisztrációs felületre, majd egy új levelet írni valamilyen módon.
Igaz ebből is látszik a kényelemnek ára van, de a leírásokban ismertetett módszerek használata után már nem hinném, hogy ezek a spammerek bármit is tudnának kezdeni, vagy rosszul gondolom?
- pint3r -