Exim мэйл сервер дээр
Анхдагч тохиргоонд гадны хаягийн нэмэлт шалгалтыг хийдэг "шалгах = хүлээн авагч" ACL ашигладаг тул халдлагыг орон нутгийн хэрэглэгч шаардлагагүй хүндрэлгүйгээр хийж болно. Өөр домэйны хоёрдогч MX үүрэг гүйцэтгэх, "шалгах=хүлээн авагч" ACL-г устгах, эсвэл local_part_suffix-д тодорхой өөрчлөлт оруулах гэх мэт тохиргоог өөрчлөх үед алсын халдлага тохиолдож болно. Халдагчид сервертэй холбогдох холболтыг 7 хоногийн турш нээлттэй байлгах боломжтой бол алсаас халдлага үйлдэх боломжтой (жишээ нь, завсарлага авахын тулд минут тутамд нэг байт илгээх). Үүний зэрэгцээ асуудлыг алсаас ашиглах илүү хялбар халдлагын векторууд байж магадгүй юм.
Эмзэг байдал нь /src/deliver.c файлд тодорхойлсон teslim_message() функцэд хүлээн авагчийн хаягийг буруу шалгаснаас үүдэлтэй. Хаягийн форматыг өөрчилснөөр халдагчид өгөгдлөө root эрхтэй execv() функцээр дуудагдсан командын аргументуудад орлуулах боломжтой. Үйл ажиллагаа нь буфер хэт ихсэх эсвэл санах ойн эвдрэлд ашигладаг нарийн төвөгтэй техникийг ашиглах шаардлагагүй бөгөөд энгийн тэмдэгтийг орлуулахад хангалттай.
Асуудал нь хаягийг хөрвүүлэхэд зориулж бүтцийг ашиглахтай холбоотой:
хүргэх_орон нутгийн хэсэг = өргөтгөх_мөр(
string_sprintf("${орон нутгийн_хэсэг:%s}", шинэ->хаяг));
хүргэх_домэйн = тэлэх_мөр(
string_sprintf("${домайн:%s}", шинэ->хаяг));
Expand_string() функц нь "${run{command arguments}" командыг таних зэрэг хэт төвөгтэй хослуулагч бөгөөд энэ нь гадаад зохицуулагчийг ажиллуулахад хүргэдэг. Тиймээс, SMTP сесс дотор халдлага хийхийн тулд локал хэрэглэгч зөвхөн 'RCPT TO “username+${run{...}}@localhost” гэх мэт командыг илгээх шаардлагатай бөгөөд localhost нь local_domains жагсаалтын хостуудын нэг юм. хэрэглэгчийн нэр нь одоо байгаа локал хэрэглэгчийн нэр юм.
Хэрэв сервер шуудангийн дамжуулагчаар ажилладаг бол 'RCPT TO "${run{...}}@relaydomain.com"' командыг алсаас илгээхэд хангалттай бөгөөд relaydomain.com нь relay_to_domains-д жагсаасан хостуудын нэг юм. тохиргооны хэсэг. Exim нь тусгай зөвшөөрлийн горимыг орхигдуулдаггүй (deliver_drop_privilege = худал) тул "${run{...}}"-ээр дамжуулсан командуудыг root хэлбэрээр гүйцэтгэнэ.
Энэ нь эмзэг байдал байсан нь анхаарал татаж байна
Түгээлтэд үргэлжлүүлэн ашиглагдаж байсан өмнөх хувилбаруудын засварыг одоогоор зөвхөн байдлаар ашиглах боломжтой
Эх сурвалж: opennet.ru