Sa mail server nga gihimo sa proyekto sa OpenBSD
Duha ka kapilian sa pag-atake ang gisugyot. Ang una nga kapilian nagtrabaho sa default nga pag-configure sa OpenSMTPD (pagdawat mga hangyo lamang gikan sa localhost) ug gitugotan ka nga pahimuslan ang problema sa lokal, kung ang tig-atake maka-access sa interface sa lokal nga network (loopback) sa server (pananglitan, sa mga sistema sa pag-host) . Ang ikaduha nga kapilian mahitabo kung ang OpenSMTPD gi-configure aron makadawat sa mga hangyo sa gawas sa network (usa ka mail server nga modawat sa ikatulo nga partido nga mail). Ang mga tigdukiduki nag-andam ug usa ka prototype sa usa ka pagpahimulos nga malampuson nga nagtrabaho pareho sa OpenSMTPD nga bersyon nga gilakip sa OpenBSD 6.6 ug adunay usa ka portable nga bersyon alang sa ubang mga operating system (gipahigayon sa Debian Testing).
Ang problema tungod sa usa ka sayup sa smtp_mailaddr() function, nga gitawag aron masusi ang pagkahusto sa mga kantidad sa "MAIL FROM" ug "RCPT TO" nga mga natad nga nagpaila sa nagpadala / nakadawat ug gipasa sa panahon sa koneksyon uban sa mail server. Aron masusi ang bahin sa email address nga moabut sa wala pa ang "@" nga simbolo, ang smtp_mailaddr() function gitawag
valid_localpart(), nga midawat (MAILADDR_ALLOWED) sa mga karakter nga "!#$%&'*/?^`{|}~+-=_", sumala sa gikinahanglan sa RFC 5322.
Niini nga kaso, ang direktang pag-eskapo sa hilo gihimo sa mda_expand_token() function, nga nagpuli lamang sa mga karakter nga “!#$%&’*?`{|}~” (MAILADDR_ESCAPE). Pagkahuman, ang linya nga giandam sa mda_expand_token() gigamit sa pagtawag sa ahente sa pagpadala (MDA) gamit ang command 'execle("/bin/sh", "/bin/sh", "-c", mda_command,...' . Sa kaso sa pagbutang sa mga letra sa mbox pinaagi sa /bin/sh, ang linya nga “/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}” gilusad, diin ang bili “% {mbox.from}” naglakip sa naka-eskapo nga datos gikan sa parameter nga "MAIL FROM".
Ang esensya sa pagkahuyang mao nga ang smtp_mailaddr() adunay usa ka lohikal nga sayup, tungod niini, kung ang usa ka walay sulod nga domain ipadala sa email, ang function nagbalik usa ka malampuson nga verification code, bisan kung ang bahin sa adres sa wala pa ang "@" adunay dili balido nga mga karakter. . Dugang pa, kung nag-andam ug usa ka hilo, ang function sa mda_expand_token() dili makaikyas sa tanan nga posible nga mga espesyal nga karakter sa shell, apan mga espesyal nga karakter lamang ang gitugotan sa email address. Sa ingon, aron madala ang imong mando, igo na nga gamiton ang simbolo nga ";" sa lokal nga bahin sa email. ug luna, nga wala maapil sa MAILADDR_ESCAPE set ug dili makaikyas. Pananglitan:
$nc 127.0.0.1 25
HELO propesor.falken
MAIL GIKAN:
RCPT SA:
data
.
MOHUNONG
Pagkahuman niini nga sesyon, ang OpenSMTPD, kung ipadala sa mbox, maglansad sa mando pinaagi sa kabhang
/usr/libexec/mail.local -f ;pagkatulog 66; gamut
Sa samang higayon, ang mga posibilidad sa pag-atake limitado sa kamatuoran nga ang lokal nga bahin sa adres dili molapas sa 64 ka karakter, ug ang mga espesyal nga karakter nga ‘$’ ug ‘|’ gipulihan ug “:” sa dihang moikyas. Aron malaktawan kini nga limitasyon, gigamit namon ang kamatuoran nga ang lawas sa sulat gipasa pagkahuman sa pagdagan /usr/libexec/mail.local pinaagi sa input stream, i.e. Pinaagi sa pagmaniobra sa adres, mahimo ka lang maglansad sa sh command interpreter ug gamiton ang lawas sa sulat ingon usa ka hugpong sa mga panudlo. Tungod kay ang mga ulohan sa SMTP sa serbisyo gipakita sa sinugdanan sa sulat, gisugyot nga gamiton ang read command sa usa ka loop aron laktawan kini. Ang usa ka nagtrabaho nga pagpahimulos ingon niini:
$nc 192.168.56.143 25
HELO propesor.falken
MAIL GIKAN:
RCPT SA:<[protektado sa email]>
data
#0
#1
...
#d
kay i sa W O P R; buhata
echo -n "($i) " && id || buwag
nahuman > /root/x."`id -u`.""$$"
.
MOHUNONG
Source: opennet.ru