Az e- mail beillesztés egy támadási technika , amellyel kihasználják azokat a levelezőszervereket és levelezőalkalmazásokat, amelyek IMAP/SMTP-kifejezéseket hoznak létre a nem megfelelően érvényesített felhasználói bevitelből. A támadó által használt operátorok típusától függően kétféle injekció létezik: IMAP injekció és SMTP injekció .
Az IMAP / SMTP injekciók olyan levelezőszerverhez való hozzáférést tesznek lehetővé, amely korábban nem volt elérhető. Egyes esetekben ezek a belső rendszerek nem rendelkeznek olyan biztonsági szinttel, mint az infrastruktúra többi része. Ily módon a támadók azt tapasztalhatják, hogy a levelezőszerver adja a legjobb eredményeket a kihasználás szempontjából. Ez a módszer elkerüli az alkalmazás szintjén esetlegesen létező korlátozásokat ( CAPTCHA , maximális találatok száma stb.).
Az IMAP/SMTP injekció tipikus felépítése a következő:
Fejléc: a várt parancs vége Test: új parancsok beadása Lábléc: a várt parancs kezdeteFontos megjegyezni, hogy az IMAP/SMTP parancsok végrehajtásához az előző parancsokat a CRLF (%0d%0a) szekvenciával kell lezárni.
Néhány példa az IMAP/SMTP injekciós technikát használó támadásokra:
IMAP-befecskendezés Mivel a beillesztés IMAP-kiszolgálón történik, ennek a protokollnak a formátumát és specifikációit tiszteletben kell tartani. A levelezőalkalmazások általában azért lépnek kapcsolatba az IMAP-kiszolgálóval, hogy a legtöbb esetben elláthassák funkcióikat, és ezért sebezhetőbbek az ilyen típusú támadásokkal szemben.
Nézzünk egy példát az üzenetolvasási funkciót használó IMAP-injektálásra. Tegyük fel, hogy egy alkalmazás a "message_id" webmail paramétert használja a felhasználó által elolvasni kívánt üzenetek azonosítójának tárolásához. Amikor üzenetazonosítót tartalmazó kérést küldenek, az így fog kinézni:
http://<webmail>/read_email.php? üzenetazonosító = <szám>Tegyük fel, hogy a hozzá tartozó üzenet megjelenítéséért felelős "read_email.php" php szkript kérést küld az IMAP szervernek anélkül, hogy ellenőrizné a felhasználó által megadott <szám> értéket. A levelezőszervernek küldött parancs így fog kinézni:
FETCH <number> BODY[HEADER]
Emiatt a támadó megkísérelhet egy IMAP-injekciós támadást az alkalmazás által a szerverrel való kommunikációhoz használt "message_id" paraméteren keresztül. Például a "CAPABILITY" IMAP parancs a következő sorrendben adható meg:
http://<webmail>/read_email.php?message_id=1 BODY[HEADER]%0d%0aV001 KÉPESSÉG%0d%0aV002 FETCH 1Ez a következő IMAP-parancsok sorozatát adja ki a kiszolgálón:
???? 1 BODY KERESÉS BE [FEJLÉJ] V001 KÉPESSÉG V002 FETCH 1 BODY[HEADER]ahol:
Fejléc = 1 BODY[HEADER] Test = %0d%0aV100 KÉPESSÉG%0d%0a Lábléc = V101 FETCH 1SMTP-injektálás Mivel a parancsinjektálás SMTP-kiszolgáló alatt történik, ennek a protokollnak a formátumát és specifikációit tiszteletben kell tartani. Az SMTP protokollt használó alkalmazások működési korlátai miatt elsősorban e-mail küldésre szorítkozunk. Az SMTP injekció használatához a felhasználót előzetesen hitelesíteni kell, ezért szükséges, hogy a támadó érvényes webmail-címmel rendelkezzen.
Tegyük fel, hogy egy e-mail alkalmazás korlátozza a kiválasztott időszakban elküldött e-mailek számát. Az SMTP injekció lehetővé teszi , hogy megkerülje ezt a korlátozást úgy, hogy egyszerűen RCPT-parancsokat ad hozzá útmutatásként, a támadó által kívánt mennyiségben:
POST http://<webmail>/compose.php HTTP/1.1 -----------------------------134475172700422922879687252 Tartalom-Dispozíció: forma-adat; name="tárgy" teszt . LEVELEZÉS: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] Adat Ez egy példa az SMTP Injection támadásra . -----------------------------134475172700422922879687252 ...Ez a következő SMTP-parancssorozatot generálja, amely elküldésre kerül a levelezőszervernek:
LEVÉL FÓL: <posta> RCPT TO: <rcptto> ADAT Tárgy: teszt . LEVELEK: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] ADAT Ez egy példa az SMTP Injection támadásra . ...