Remote code execution что это

Хакеры активно эксплуатируют RCE-уязвимость GitLab

Remote code execution что это. image loader. Remote code execution что это фото. Remote code execution что это-image loader. картинка Remote code execution что это. картинка image loader

Исследователи кибербезопасности предупреждают, что пропатченная уязвимость удаленного выполнения кода (RCE) в веб-интерфейсе GitLab по-прежнему активно эксплуатируется злоумышленниками, подвергая опасности большое число экземпляров сервиса.

Эта дыра, получившая код CVE-2021-22205, относится к неверной валидации предоставленных пользователем изображений, что позволяет выполнять содержащийся в них произвольный код. Угрозе подвержены как версии GitLab Enterprise Edition (EE), так и GitLab Community Edition (CE), начиная с 11.9. Заплатку же выпустили 14 апреля 2021 года для версий 13.8.8, 13.9.6 и 13.10.3.

В одной из реальных атак, описанных HN Security в прошлом месяце, на общедоступном сервере GitLab, принадлежащем неназванному клиенту, были зарегистрированы два аккаунта, получившие права администратора. Повышение их привилегий было произведено путем удаленного выполнения команд полезной нагрузки, содержащейся в загруженных через эту дыру зараженных изображениях.

Remote code execution что это. image loader. Remote code execution что это фото. Remote code execution что это-image loader. картинка Remote code execution что это. картинка image loader

«Изменение в показателе CVSS, конечно, оказалось незначительным, но тот факт, что уязвимость могут эксплуатировать и неаутентифицированные лица, имеет большое значение для защитников», — сообщил специалист по кибербезопасности из Rapid7 в предупреждении, опубликованном в понедельник.

Несмотря на то, что патчи доступны уже более полугода, из 60,000 экземпляров GitLab полноценно против RCE-атак защитились только 21%, а около 50% все еще остаются для них уязвимыми.

Ввиду возможности именно неаутентифицированной эксплуатации уязвимости ожидается дальнейший рост активности злоумышленников, что говорит о желательно скорейшем обновлении пользователями GitLab до последней версии.

«Кроме того, в идеале сервис GitLab лучше не раскрывать для интернета», — рекомендуют исследователи. – «Если же вам нужен доступ к своему экземпляру через интернет, то рассмотрите возможность его ограждения посредством VPN».

Подробный технический анализ описанной уязвимости можно найти здесь.

Источник

RCE в Android-приложениях через сторонние сервисы

Совсем недавно компания MWR опубликовала интересную запись «WebView addJavascriptInterface Remote Code Execution» в своем блоге. Запись касается безопасности мобильных приложений. Не хочется полностью пересказывать исследование наших английских коллег — советуем обратиться к первоисточнику. Но если коротко, то при использовании сторонней библиотеки в своем мобильном приложении под Android можно легко поймать RCE (remote code execution) атаку. Произвольное выполнение кода в Android-приложении возможно благодаря рефлексии Java-объекта, который вставляется в WebView.

Итак, для того чтобы данный вектор работал:

1) Во-первых, код должен быть собран с помощью SDK старше 17 версии.
2) Во-вторых, в приложении должно быть разрешено выполнение JavaScript-кода. То есть должен присутствовать метод setJavaScriptEnabled() с параметром true – по умолчанию он отключен.
3) В-третьих, должна использоваться функция addJavascriptInterface().
4) В-четвертых, при получении данных с сервера должен отсутствовать или некорректно использоваться HTTPS.

Вроде бы много условий, но, как показывает наша практика, все это очень часто встречается, особенно в каких-нибудь сторонних фреймворках.
Уже с начала года в наших презентациях и исследованиях безопасности мобильного банкинга говорится, что при разработке таких критичных приложений стоит руководствоваться принципом использования только нужных библиотек. Ведь в системы ДБО никто не интегрирует взаимодействие с новостями, соцсетями и другими сервисами, нужно избегать этого и в мобильном банкинге.

Remote code execution что это. image loader. Remote code execution что это фото. Remote code execution что это-image loader. картинка Remote code execution что это. картинка image loader

В российских приложениях для мобильного банкинга под Android мы видели взаимодействие с большим количеством сторонних сервисов, что повышает риск компрометации приложения при неправильном использовании. Очень часто встречается взаимодействие с новостным сервером банка, и очень часто это взаимодействие идет по HTTP. Все это значительно расширяет область атаки (attack surface) на банковское приложение.

Атака:

1) Производим MitM.
2) Инъектим в трафик вредоносный JavaScript-код, который вызывает метод Java-объекта getClass(). Например:

Можно представить вариант атаки и без MitM: например, через взлом сайта и вставку своего JavaScript-кода или через хранимую XSS на сайте. В общем, возможно и такое развитие ситуации.

А тем временем Joshua J. Drake, один из самых активных контрибьюторов Metasploit, уже написал специально под это дело модуль add_js_interface_mitm. Модуль пока не доступен и проходит бета-тестирование. На картинке – успешная атака на Fruit Ninja, использующую уязвимый MoPub.

Remote code execution что это. image loader. Remote code execution что это фото. Remote code execution что это-image loader. картинка Remote code execution что это. картинка image loader

Возможные последствия для пользователя:

1) Полная компрометация данных уязвимого приложения. Если устройство не рутовано, то наш код будет выполняться в рамках sandbox уязвимого Android-приложения, то есть делать все, что может делать это приложение.
2) Полная компрометация мобильного устройства (всех данных на телефоне). Если устройство рутовано или имеет уязвимую версию Android, то наш код может провести LPE (Local Privilege Escalation) атаку и уже работать от пользователя root. Делаем на устройстве все что хотим.

1) Отказаться от вызова Java-объекта из JavaScript, если в этом нет необходимости.
2) Использовать SDK младше 17 версии – для этого необходимо добавить аннотацию @JavaScriptInterface, так как все методы Java-объекта, начиная с версии 17, по умолчанию недоступны.
3) Вместо addJavaScriptInterface использовать другой способ вызова Java-методов через создание своей URI-схемы и использование метода shouldOverrideUrlLoading. При этом следует применить валидацию входящих данных и кодирование исходящих данных для предотвращения инъекции.

Источник

Удалённое выполнение кода в InterSystems Caché (RCE)

Remote code execution что это. ebd9444b812041de84ae7adfcabd85e0. Remote code execution что это фото. Remote code execution что это-ebd9444b812041de84ae7adfcabd85e0. картинка Remote code execution что это. картинка ebd9444b812041de84ae7adfcabd85e0

Введение

В том случае, если вы управляете более чем одним сервером Caché может возникнуть задача выполнения произвольного кода из одного сервера Caché на другом. Кроме того, может потребоваться выполнение произвольного кода на удалённом сервере Caché, например, для нужд сисадмина… Для решения этих задач была разработана утилита RCE.

Какие вообще есть варианты решения подобных задач, и что предлагает RCE (Remote Code Execution) – под катом.

Что уже есть?

» Локальные команды ОС

» Удалённое выполнение COS кода

Возможно с помощью класса %Net.RemoteConnection, где доступна следующая функциональность:

В данном коде происходит:

Отдельно следует упомянуть о технологии ECP, о которой писали на Хабре, и которая позволяет вызывать удаленные JOB процессы со стороны сервера приложений на сервере БД.

В результате, комбинируя два предложенных выше подхода, в принципе, возможно достижение поставленной в начале этой статьи цели, однако, мне хотелось достичь простого процесса создания нового выполняемого скрипта пользователем, что представляется затруднительным при использовании существующих подходов.

Таким образом, перед проектом были поставлены следующие цели:

Remote code execution что это. image loader. Remote code execution что это фото. Remote code execution что это-image loader. картинка Remote code execution что это. картинка image loader

Иерархия Машина – ОС – Инстанс служит для хранения информации, необходимой для доступа к удалённым серверам.
Для хранения команд служит класс RCE.Script, который содержит последовательный список – объектов класса RCE.Command, которые могут быть как командами ОС так и COS кодом.

Первый аргумент – текст команды, второй – уровень выполнения: 0 – ОС, 1 – Cache.

Пример создания нового скрипта:

Здесь на уровне ОС будут выполнены 1-я и 4-я команда, а 2-я и 3-я будут выполнены в Caché, причём процесс переключения уровня выполнения абсолютно прозрачен для пользователя.

» Механизмы выполнения

Сейчас поддерживаются следующие пути исполнения:

СерверКлиент
LinuxLinux, Windows (требуется установка SSH сервера на клиенте)
WindowsLinux, Windows (требуется установка SSH сервера на клиенте или psexec на сервере)

В том случае, если есть поддержка ssh на клиенте, сервер генерирует ssh команду и выполняет её на клиенте с помощью стандартного класса %Net.SSH.Session.

В случае же, если и сервер и клиент – под управлением ОС Windows, происходит генерация bat-файла, который потом отправляется на клиент и выполняется с помощью утилиты psexec.

» Добавление сервера

Загрузите классы из репозитория в любую область. В случае, если у вас Windows сервер и вы хотите управлять другими Windows серверами, установите значение глобала ^settings(«exec») равное пути к утилите psexec. На этом настройка завершена!

» Добавление клиента

Состоит в сохранении всех необходимых для аутентификации данных.

» Выполнение скрипта

Выводы

RCE предоставляет удобный механизм удалённого выполнения кода из InterSystems Caché. Так как скрипты хранимые, вам необходимо написать скрипт только один раз, потом он может выполнятся когда угодно и на любом числе клиентов.

Источник

Что такое удаленное выполнение кода. Уроки хакинга — глава 12.

Удаленное выполнение кода возникает из-за внедренного кода, который интерпретируется и выполняется уязвимым приложением. Причиной данной уязвимости является пользовательский ввод, который приложение использует без надлежащей фильтрации и обработки.

Remote code execution что это. crazyrabbit 2. Remote code execution что это фото. Remote code execution что это-crazyrabbit 2. картинка Remote code execution что это. картинка crazyrabbit 2

Это может выглядить следующим образом:

Здесь уязвимое приложение может использовать url index.php?page=1, однако, если пользователь введёт index.php?page=1;phpinfo(), приложение выполнит функцию phpinfo() и вернёт приложению её результат.

Также RCE иногда используется для обозначения Command Injection, которые OWASP различает. С помощью Command Injection, в соответствии с OWASP, уязвимое приложение выполняет произвольные команды в принимающей их операционной системе. Опять же, это становится возможным благодаря недостаточной обработке и проверки пользовательского ввода, что приводит к тому, что пользовательский ввод выпоняется операционной системой, как команда.

В PHP, к примеру, это может быть из-за того, что пользовательский ввод будет вставлен в функцию system().

Примеры удаленного выполнения кода.

1. Polyvore ImageMagick

Сложность: Высокая
Ссылка на отчёт: http://nahamsec.com/exploiting-imagemagick-on-yahoo/46
Дата отчёта: Май 5, 2016

Описание:

ImageMagick представляет собой программный пакет, обычно используемый для обработки изображений, например кадрирование, масштабирование, и так далее. Imagick в PHP, rmagick и paperclip в Ruby, а также imagemagick в NodeJS используют этот пакет, и в апреле 2016 в нем было обнаружено множество уязвимостей, одна из которых могла быть использована атакующими, чтобы выполнить удаленный код, на чём я и сосредоточился.

В двух словах, ImageMagick не фильтровал надлежащим образом получаемые имена файлов и в результате использовался для выполнения системного вызова system(). В итоге атакующий мог вставлять команды вроде https://example.com”|ls “-la, и при получении они были исполнены. Пример с ImageMagick будет выглядеть так:

Что интересно, ImageMagick определяет свой собственный синтаксис для файлов Magick Vector Graphics (MVG), а значит, атакующий мог создать файл exploit.mvg со следующим кодом:

Потом это будет передано библиотеке и, если сайт уязвим, код выполнится и отобразит перечень файлов в директории.

Зная это, Бен Садежепур протестировал купленный Yahoo сервис Polyvore на эту уязвимость. Как сказано в его блоге, Бен сначала протестировал уязвимость на локальной машине к которой он имел доступ, чтобы подтвердить, что mvg файл работает правильно. Вот код, который он использовал:

Здесь вы можете видеть, что он использовал библиотеку cURL, чтобы сделать обратиться к SOMEIPADDRESS (измените это на IP адрес уязвимого сервера). В случае успеха, вы должны получить следующий ответ:

Далее Бен посетил Polyvore, загрузил изображение в качестве аватара и получил следующий ответ от сервера:

Remote code execution что это. f85ee989c0f0ffc074dca29001567316. Remote code execution что это фото. Remote code execution что это-f85ee989c0f0ffc074dca29001567316. картинка Remote code execution что это. картинка f85ee989c0f0ffc074dca29001567316Ben Sadeghipour Polyvore ImageMagick response

Выводы

Итоги

Удаленное выполнение кода, как и остальные уязвимости, возникает в результате неправильной фильтрации и обработки пользовательского ввода. В предоставленом примере ImageMagick неправильно обрабатывал контент, который мог быть зловредным. Это, вместе с знанием Бена о уязвимости, позволило ему найти и протестировать те зоны, которые могли быть уязвимыми. Что касается поиска подобных уязвимостей, быстрого ответа не существует. Будьте в курсе вышедших CVE и следите за ПО, которое используется сайтами и которое может быть устаревшим, т.к. скорее всего оно может быть уязвимым.

Источник

Гид по Lateral. Изучаем удаленное исполнение кода в Windows со всех сторон

Remote code execution что это. tt h. Remote code execution что это фото. Remote code execution что это-tt h. картинка Remote code execution что это. картинка tt h

Содержание статьи

Пос­ле того как ты про­ник за внеш­ний периметр и попал во внут­реннюю сеть ком­пании, необ­ходимо рас­ширить в ней собс­твен­ное при­сутс­твие, если хочешь най­ти там что‑то инте­рес­ное. Как ни стран­но, чем боль­ше раз­мер внут­ренней сети ком­пании, тем про­ще ее взло­мать. И нап­ротив, если ком­пания сов­сем неболь­шая, сеть взло­мать порою край­не слож­но. Почему так? Чем боль­ше сеть, тем боль­ше в ней может встре­тить­ся уяз­вимых или небезо­пас­но нас­тро­енных ком­понен­тов. При этом час­то ком­про­мета­ция одно­го узла вле­чет за собой ком­про­мета­цию сра­зу мно­жес­тва смеж­ных с ним узлов.

Во внут­ренних сетях обыч­но пре­обла­дают сер­веры и рабочие стан­ции под управле­нием Windows. В то же вре­мя эта ОС наибо­лее инте­рес­на с точ­ки зре­ния спо­собов ком­про­мета­ции, так как по умол­чанию име­ет мно­жес­тво интерфей­сов для уда­лен­ного выпол­нения кода. Кро­ме того, ата­кующе­му дос­тупно боль­шое количес­тво спо­собов извле­чения учет­ных дан­ных. Я не буду касать­ся боково­го переме­щения по сер­верам Linux: они ред­ко вклю­чены в домен и не име­ют такого раз­нооб­разия дефол­тных интерфей­сов для уда­лен­ного адми­нис­три­рова­ния. При боковом переме­щении Linux инте­ресен глав­ным обра­зом как удоб­ная точ­ка опо­ры.

Бо­ковое переме­щение под­разуме­вает легитим­ное уда­лен­ное исполне­ние кода. То есть все пред­став­ленные в статье спо­собы под­разуме­вают наличие дей­ству­ющей учет­ной записи для того или ино­го ПК. При этом поч­ти всег­да будет тре­бовать­ся адми­нис­тра­тив­ная учет­ная запись.

Ос­новная задача при боковом переме­щении — прив­лекать как мож­но мень­ше вни­мания поль­зовате­лей и служ­бы безопас­ности, а так­же пос­тарать­ся не выз­вать тре­вогу у средств анти­вирус­ной защиты. Наибо­лее эффектив­но исполь­зовать штат­ные средс­тва опе­раци­онной сис­темы, то есть абсо­лют­но легитим­ные и неот­личимые от дей­ствий обыч­ных адми­нис­тра­торов сети.

Мы не будем обсуждать основные уяз­вимос­ти Windows, ата­ки в локаль­ных сетях и спо­собы под­нять при­виле­гии в сре­де Active Directory. Вмес­то это­го погово­рим исклю­читель­но о легаль­ных вещах: в каких пота­енных угол­ках Windows мож­но най­ти учет­ные записи и что с ними потом делать. Все пред­став­ленные даль­ше спо­собы не счи­тают­ся уяз­вимос­тями, а пред­став­ляют собой трю­ки by design, сле­дова­тель­но, при гра­мот­ном исполне­нии это пол­ностью легаль­ные про­цеду­ры.

Все при­меры осно­ваны на реаль­ных ситу­ациях, с которы­ми мож­но стол­кнуть­ся при переме­щении по самым нас­тоящим внут­ренним сетям. Поэто­му, как обыч­но, кос­немся проб­лемы мак­сималь­но тихого переме­щения с воз­можностью бай­паса анти­виру­сов, а так­же сде­лаем акцент на то, какие сетевые пор­ты нам для это­го пот­ребу­ются.

Стратегия бокового перемещения

Итак, боковое переме­щение — это одновре­мен­ное сочета­ние двух тех­ник:

Цик­личное, пос­ледова­тель­ное пов­торение этих шагов порою поз­воля­ет от одно­го‑единс­твен­ного взло­ман­ного ПК дой­ти до пол­ной ком­про­мета­ции всей сетевой инфраструк­туры. Обыч­но боковое переме­щение, как вся­кое иное переме­щение, прес­леду­ет одну из сле­дующих целей:

Од­нако для дос­тижения любой из перечис­ленных целей тре­буют­ся все новые учет­ные дан­ные, что­бы у ата­кующе­го была воз­можность переме­щать­ся по сети и получать дос­туп ко все боль­шему количес­тву ПК. Прод­вижение по внут­ренней сети ред­ко обхо­дит­ся без взя­тия кон­трол­лера домена, пос­коль­ку взя­тие домена озна­чает авто­мати­чес­кое получе­ние дос­тупа прак­тичес­ки к каж­дому узлу сети. Что каса­ется admins hunting, при дос­тижении кон­трол­лера домена может показать­ся, что поиск при­виле­гиро­ван­ных учет­ных записей — это сле­пое уга­дыва­ние. Но в дей­стви­тель­нос­ти инфраструк­тура Active Directory и сама Windows рас­кры­вают дос­таточ­но информа­ции прос­тому домен­ному поль­зовате­лю, зачас­тую поз­воляя рас­счи­тать нуж­ное нап­равле­ние прод­вижения и спла­ниро­вать точ­ную мно­гос­тупен­чатую цепоч­ку взло­мов еще в самом начале боково­го переме­щения.

Пос­ле взя­тия кон­трол­леров домена иног­да быва­ет необ­ходимо дви­гать­ся даль­ше — в некий осо­бо охра­няемый сег­мент, пред­став­ляющий собой объ­екты «биз­нес‑рис­ка». Это может быть сег­мент АСУ ТП, вме­шатель­ство в тех­нологи­чес­кий про­цесс, дос­туп в сег­мент SWIFT, если мы име­ем дело с бан­ками, либо же прос­то дос­туп на ПК генераль­ного дирек­тора. В каж­дом слу­чае мы можем стол­кнуть­ся с раз­ными слож­ностя­ми боково­го переме­щения, о которых пой­дет речь даль­ше.

Удаленное выполнение кода в Windows

Рас­смот­рим нес­коль­ко спо­собов уда­лен­ного исполне­ния кода в Windows с помощью учет­ной записи. Некото­рые средс­тва пре­дос­тавля­ют удоб­ный инте­рак­тивный режим, а некото­рые — толь­ко сле­пой запуск команд без получе­ния резуль­тата. Нач­нем обзор с самых удоб­ных и широко рас­простра­нен­ных инс­тру­мен­тов и пос­тепен­но перей­дем к менее популяр­ным, но все же спо­соб­ным исполнить код.

Часть инс­тру­мен­тов заг­ружа­ет на target исполня­емый файл служ­бы, пыта­ясь обес­печить нам удоб­ный инте­рак­тивный режим. Но тут кро­ется опас­ность: такие сер­висы зачас­тую будут заб­локиро­ваны анти­виру­сом. Плюс к это­му IP ата­кующе­го может быть заб­локиро­ван, что затор­мозит переме­щение. И SOC узна­ет о том, что в сеть кто‑то про­ник.

MSRPC

Это реали­зация DCERPC от Microsoft. По сути, рас­ширя­ет откры­тый DCERPC при помощи дос­тупа через име­нован­ные пай­пы с исполь­зовани­ем про­токо­ла SMB. Глав­ным обра­зом исполь­зует 445-й TCP-порт. Перечис­лить дос­тупные пай­пы по сло­варю на SMB поможет модуль auxiliary/scanner/smb/pipe_auditor.

psexec.exe

Глав­ный плюс для нас в том, что сер­верный ком­понент psexecsvc. exe под­писан сер­тифика­том Sysinternals (который при­над­лежит Microsoft) и, сле­дова­тель­но, стоп­роцен­тно легитим­ная прог­рамма. Так­же к явным дос­тоинс­твам клас­сичес­кого psexec. exe отно­сит­ся спо­соб­ность выпол­нять код в ука­зан­ных поль­зователь­ских сеан­сах:

psexec.py

От­личная аль­тер­натива для поль­зовате­лей Linux. Одна­ко этот инс­тру­мент поч­ти навер­няка под­нимет анти­вирус­ную тре­вогу. Как было ска­зано, все дело в служ­бе, которая копиру­ется на уда­лен­ный хост. Это мож­но испра­вить, ука­зав в реали­зации метода createService( ) в / usr/ local/ lib/ python3. 7/ dist-packages/ impacket/ examples/ serviceinstall. py про­изволь­ную коман­ду, которая будет выпол­нена вмес­то запус­каемой служ­бы уда­лен­ного адми­нис­три­рова­ния.

Remote code execution что это. image1. Remote code execution что это фото. Remote code execution что это-image1. картинка Remote code execution что это. картинка image1С помощью про­изволь­ной коман­ды мож­но скрыть запуск служ­бы уда­лен­ного адми­нис­три­рова­ния

Что­бы psexec. py не ско­пиро­вал палев­ный ком­понент, ука­зыва­ем при­нуди­тель­но, какой файл исполь­зовать в качес­тве служ­бы. И, пос­коль­ку мы уже вруч­ную про­писа­ли коман­ду, этим фай­лом может быть что угод­но:

winexe

В целом он пол­ностью иден­тичен дру­гим подоб­ным инс­тру­мен­там, одна­ко реже обна­ружи­вает­ся анти­виру­сами. Но все же нель­зя ска­зать, что winexe на сто про­цен­тов безопа­сен. Тем не менее его мож­но исполь­зовать для подс­тра­хов­ки на слу­чай, если psexec. py вдруг не сра­бота­ет.

smbexec.py

В резуль­тате будет открыт дос­туп к инте­рак­тивной коман­дной стро­ке.

services.py

Соз­дать новую служ­бу, ука­зав про­изволь­ную коман­ду:

За­пус­тить толь­ко что соз­данную служ­бу:

За­мес­ти сле­ды и уда­лить ее:

Все это дает нам еще один спо­соб сле­пого неин­терак­тивно­го исполне­ния команд, то есть без резуль­тата. Зато это на сто про­цен­тов безопас­ный спо­соб, и он не раз выручал меня, ког­да анти­виру­сы на уда­лен­ном хос­те уби­вали весь левый софт.

atexec.py/at.exe

А вот для atexec. py коман­да выпол­нится с резуль­татом:

reg.exe

Здесь исполь­зует­ся обра­бот­чик запус­ка прог­раммы. Если прог­рамма запус­кает­ся на ПК час­то, то получим поч­ти мгно­вен­ное RCE:

Мой любимый трюк с бэк­дором в RDP:

DCERPC

Ис­поль­зует пор­ты 135/TCP и 4915x/TCP, где 4915x — динами­чес­ки наз­нача­емые пор­ты. Иног­да могут исполь­зовать­ся пор­ты из дру­гого диапа­зона.

Очень час­то сетевые адми­нис­тра­торы и безопас­ники, которые в кур­се наибо­лее рас­простра­нен­ных век­торов атак, в качес­тве mitigation прос­то бло­киру­ют порт 445/TCP. Тем самым они дела­ют неп­ригод­ным исполь­зование psexec и мно­гих дру­гих спо­собов, опи­сан­ных выше. Одна­ко, как было ска­зано ранее, Windows име­ет мно­жес­тво спо­собов уда­лен­ного исполне­ния кода, и DCERPC пре­дос­тавля­ет нам такую аль­тер­натив­ную воз­можность, в некото­рых слу­чаях откры­вая дос­туп к тем же RPC-интерфей­сам. По сути, мы будем исполь­зовать не сам DCERPC, а то, что работа­ет по его тех­нологии, нап­ример WMI.

wmiexec.py

Скрипт wmiexec. py дает воз­можность выпол­нить код в инте­рак­тивном режиме:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *