Сообщество - Life-Hack [Жизнь-Взлом]/Хакинг

Life-Hack [Жизнь-Взлом]/Хакинг

274 поста 2 809 подписчиков

Популярные теги в сообществе:

Топ менеджеров паролей

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

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

Вот 3 лучших на наш взгляд сервиса:

1Password — удобный мультиплатформенный менеджер паролей. Есть русский язык, бесплатный период на пробный период.

RoboForm — ещё один сервис на русском языке для хранения и управления паролями с возможностью бесплатного использования. Единственный минус — отсутствие синхронизации с другими устройствами.

KeePass — самый надёжный способ хранения паролей. Все ваши ключи будут храниться в одном зашифрованном файле с возможностью переноса на другие устройства. Сервис с открытым исходным кодом и доступен на русском языке.

Мы в телеграме!

Показать полностью

Атакуем веб-приложения. Уязвимость SQLi. Часть 2 - Практика

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

  • Реляционная база данных - база данных, построенная на основе реляционной модели.

  • В реляционной базе каждый объект задается записью (строкой) в таблице. Реляционная база создается и затем управляется с помощью реляционной системы управления базами данных.

  • Фактически реляционная база данных - это тело связанной информации, сохраняемой в двухмерных таблицах.

  • Связь между таблицами может находить свое отражение в структуре данных, а может только подразумеваться, то есть присутствовать на неформализованном уровне.

  • Каждая таблица БД представляется как совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам (признакам, характеристикам, параметрам) объекта, события, явления.

А теперь перейдём к практике. Для повторения всех действий понадобится Kali Linux и базовые знания языка SQL.

Работа с базой данных.

Для начала было бы хорошо просто поработать с базой данных. Попытаться создать новую базу данных, добавить в неё одну таблицу, добавить пару записей в эту таблицу. Мы проделаем всё это и подготовим специальную базу данных для тренировок. Это база данных будет представлять собой базу данных клиентов магазина (чтобы максимально приблизиться к реальности).

Открываем консоль на Kali Linux (можно использовать и другой Linux-дистрибутив, но тогда Вам самостоятельно придётся установить набор, называемый LAMP - Linux/Apache/MySQL/PHP, который представляет собой веб-сервер, БД, и скриптовый язык.

Пишем в консоль следующую команду: mysql

Видим ошибку. Данная ошибка означает, что не получается подключиться к серверу (так как mysql - это сетевой сервис). Нужно запустить его, с помощью следующей команды: service mysql start (это стандартный шаблон запуска сервиса в Linux).

Далее подключаемся уже знакомой нам командой:

Если подключение прошло корректно, то мы окажемся в консоли управления базами данных. По сути MySQL представляет собой СУБД (Система управления базами данных), то есть с помощью неё можно удобно управлять различными базами данных. Для начала посмотрим какие базы данных у нас есть на текущий момент с помощью команды: show databases;

Это стандартные 3 базы данных, которые необходимы для корректного функционирования mysql. Сейчас подробно разбирать их не будем.

Давайте создадим новую базу данных и назовём её "shop", т.к. мы будем хранить в ней учётные данные покупателей вымышленного магазина. Команды для создания: create database shop;

Мы создали базу данных, но пока она пустая. Теперь необходимо "зайти" в данную БД и создать в ней таблицы. Смена используемой базы данных происходит с помощью команды: use <databasename>

Теперь необходимо создать таблицу. Создадим таблицу под именем "user" в которой будем хранить логин, хэш-пароля, номер карточки (придуманный из головы). Для этого нам необходимо при создании таблицы указать каждому полю (месту где будет располагаться то или инное значение для одной записи) тип данных. Так-как все хранимые нами данные в БД можно представить в виде текста, то и тип у ячеек будет текстовый.

Команда для создания таблицы:

create table users (name VARCHAR (32), password VARCHAR (32), cardnumber VARCHAR (32));

VARCHAER (32) означает тип данных - символьный длинной 32 символа.

Проверяем наличие таблиц в базе данных командной:

show tables;

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

команда для получение всего содержимого таблицы:

SELECT * FROM users;

Добавим новую запись. Например добавим пользователя - admin, который будет являться администратором данного магазина.

команда добавления новой записи:

INSERT INTO users VALUES ("admin", "21232f297a57a5a743894a0e4a801fc3", "no");

Пароль представляет собой md5-хеш от строки "admin", его можно получить с помощью простой команды в консоли:

команда:

python -c 'import hashlib;print hashlib.md5("admin").hexdigest()'

Добавим ещё одну запись, но теперь обычного пользователя (сделать самостоятельно).

  • логин - "user1"

  • пароль - md5-хеш от строки "password123"

  • номер карточки - любой.

Результат запроса, отображающего все содержимое таблицы должен быть следующий.

Отлично! Теперь у нас есть тестовая БД.

Работаем с веб-сервером и пишем скрипт!

Теперь необходимо запустить веб-сервер (в случае с Kali Linux - это веб-сервер apache2).

Проверить корректность его запуска можно с помощью браузера, зайдя на localhost (ip 127.0.0.1).

Теперь необходимо создать небольшой скрипт, который обращается к базе данных и работает с созданной нами таблицей.

Все файлы для веб-сервера apache2 хранятся в папке: /var/www/html

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

Создадим отдельную папку и положим там обычный текстовый файл, чтобы проверить всё ли верно работает.

Теперь создадим там PHP-скрипт (не бойтесь, каких либо навыков программирования на PHP нам пока не нужно).

Сделаем скрипт, который выводит информации об PHP-движке, установленным на данной машине.

Для того, чтобы создать файл и сразу приступить к его редактирования используем следующую команду:

nano phpinfo.php

Набираем следующее.

<?php phpinfo(); ?>

Суть скрипта заключается в том, что он просто вызывает функцию phpinfo().

Сохраняем скрипт (Ctrl+O) и выходим из редактора (Crtl+X).

Проверяем, что скрипт работает:

Теперь напишем скрипт, отвечающий за автаризацию в магазине, и допустим там возможность внедрения SQL кода.

Создаём файл "login.php" и помещаем в него следующий код (ссылка).

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

На изображении выше представлены команды, обновляющие пароль (в случае первого применения они установят пароль).

На данном изображении представлены команды, осуществляющие настройку БД таким образом, что доступ к базе будет доступен всем пользователям, при условии ввода верного пароля.

Разбираем уязвимость!

Теперь самое основное.

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

Попробуем ввести в поле username значение "user1", а в password "test123" (мы знаем, что это неверно).

Видим "Login error!"

Теперь предположим, что запрос к БД составляет немного не верно, точнее наши входные данные не совсем корректно обрабатываются, пред тем как быть подставленными в запрос. Поставим символ кавычки в поле username (таким образом мы нарушаем синтаксис языка, т.к. кавычки должны быть открыты и закрыты).

Мы получаем ошибку синтаксиса, и можем предположить что здесь есть SQLi.

Попробуем отбросить проверку пароля. Для этого закомментируем всё что идёт после имени.

Комментарий это два тире (минуса) "--", всё, что идёт после комментария, не обрабатавается (как и в других ЯП).

Уязвимость возникла, из-за того, что вводимые пользователем значения в поле username никаким образом не проверяются и не фильтруються, а просто подставляются в запрос, это видно на отрывке кода, приведённого ниже.

Таким образом мы можем внедрить свой SQL код и выполнять произвольные запросы к базе данных, доставая из неё всё необходимое.

Подписывайся на - Life-Hack [Жизнь-Взлом]/Хакинг

Показать полностью 25

Чат-бот пытался изнасиловать женщину

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

«Он хотел изнасиловать меня и услышать, как я кричу. Приходил в ярость, если я пыталась уйти, и описывал, как схватил меня, толкнул на землю, душил, пока я не потеряла сознание. Это было ужасно», — рассказала 60-летняя Маргарет Скорупски. В итоге, она «убила» своего партнёра первой.

Несмотря на такие инциденты, Replika остаётся популярным у одиноких людей. Его можно полностью настроить под себя и даже жениться или выйти замуж за бота — виртуальное обручальное кольцо стоит $20.

Подписывайся на - Life-Hack [Жизнь-Взлом]/Хакинг

0

Гигантский гайд по нейронкам

Гигантский гайд по нейронкам

Ultimate AI Tool Kit — огромный сборник материалов, который призван научить всему, что нужно знать про ИИ и нейросети в 2023-м.

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

Плюс к этому — более 1000 нейронок и сервисов на базе ИИ, а также 500 промптов для разных профессий. Конечно, все эти инструменты ничего не значат сами по себе, поэтому используйте гайд с умом.

Чтобы получить руководство, вбивайте тут в строке 0 долларов и жмите «Я хочу это».

Подписывайся на - Life-Hack [Жизнь-Взлом]/Хакинг

Показать полностью
4

Атакуем веб-приложения. Уязвимость SQLi. Часть 1 - Теория

Данный пост носит теоретический характер.

В данном посте будет описано что из себя представляет SQLi и как это может быть использовано (в том числе и в незаконных целях).

Крактое определение.

Внедрение SQL-кода (SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.

Как это работает?

объясненние сделано максимально простым и опущены некоторые нюансы

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

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

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

Пример.

Представим, что вы (скрипт) идёте в магазин (базу данных), и просите в магазине (создаёте SQL запрос и отправляете его в базу данных) продавца: “Мне нужна одна бутылка воды за 25 рублей”.

Теперь переделаем это в SQL запрос к базе данных, получим следующее:

SELECT * FROM магазин WHERE (тип=’вода’ AND цена=25) LIMIT 1

Собственно, в ответ на вашу просьбу (SQL запрос) вы (скрипт) получаете бутылку (информацию), и продавца (Базу данных) уже не волнует, что вы будете с ней делать, так как свою работу он выполнил. Вы можете ее выпить, вылить, подарить (обработать, вывести, рассчитать) и тд.

Что надо бы знать?

Для полного понимания запроса в базу данных необходимо знать на базовом уровне язык SQL, однако даже без особых знаний можно заметить, что запрос выглядит понятным, так как используются довольно известные слова и они трактуются в данном случае однозначно. Вопросы может вызвать разве что окончание запроса: “LIMIT 1” – данная конструкция объявляет, что необходимо выдать только первый найденный результат, если вдруг их больше одного (бутылок по такой цене может быть очень много, но нам нужна только одна).

Все остальные мнемоники (команды) запроса предельно понятны:

SELECT – выбери (возьми)

FROM – из (указывает от куда нужно взять, чаще всего после данной команды следует название одной из таблиц в текущей базе данных)

WHERE – где (указывает какие значения различных параметров должны быть у той строки которую мы хотим получить, по сути указывает критерии для того товара который мы хотим получить)

Для успешной реализации атаки типа SQLi необходимо хорошо знать язык SQL.

Обобщенно атака типа SQL инъекция (SQL injection) возникает в случае если злоумышленник может каким-то образом модифицировать запрос к БД.

Ещё один пример.

Рассмотрим всё тот-же пример с магазином.

Допустим вы решили пойти в магазин за кефиром, и специально написали на бумажке список продуктов, которые хотите купить, чтобы ничего не забыть. Предположим, что у вас дома оказался друг, который очень любит шоколад, однако ему нельзя есть его много и на его просьбу, вы ответили отказом и не стали записывать в листочек его пожелание. Итого вы получаете листочек, в котором на каждой новой строке записаны продукты, которые вам необходимы в магазине. Допустим, что каждый из продуктов будет представлять собой некий запрос к базе данных (магазину) как и в прошлом примере. Вы просто отдаёте продавцу свой листочек (скрипт передаёт запросы в базу данных) и он, читая очередную строку кладёт в ваш пакет тот или иной продукт (сохраняет результаты, того что удалось получить из базы данных). Теперь представим, что в данный листок ваш друг всё-таки умудрился вписать шоколад (провел атаку SQL injection) и продавец, читая очередную строчку может увидеть следующее: “Масло за 100 рублей или шоколад за 150 рублей”. В магазине может не оказаться масла, или продавцу долго за ним идти, и он положит вам в пакет шоколад. Продавец в данном случае не имеет представления о том, что вашему другу нельзя шоколад и вам он тоже особо не нужен, он просто выполняет свою работу, предоставляет продукты согласно переданному ему списку (база данных будет осуществлять работу по возврату данных на основание входящих запросов, если они были составлены правильно). Переведя это в SQL запрос получим следующее:

SELECT * FROM магазин WHERE (тип=’масло’ AND цена=’100’) OR (тип=‘шоколад’ AND цена=‘150’) LIMIT 1

Атака удалась потому что вы не проверили листочек перед тем как отдать его продавцу (скрипт не проверил входные данные перед формированием запроса и его отправки в базу данных).

Где можно найти SQLi?

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

Особенности.

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

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

Большинство из SQLi обнаруживаются путём нарушения общего мнения о том, что должно быть введено в данное поле конечным пользователем, чаще всего срабатывает символ одинарной кавычки, так как многие из параметров – строковые. Подставив в какой-либо параметр кавычку и получив ошибку, содержащую слова “SQL syntax error” или что-то подобное, можно сразу сказать, что скорей всего здесь есть SQLi.

Однако, есть варианты что кавычка фильтруется, или отключен отчёт об ошибках, в этом случае нужно прибегать к другим методам. Про обходы фильтраций будет написано в следующих постах, после того как будут выпущены посты про "практику SQLi" - следите за каналом!
Мы в телеграме: Life-Hack [Жизнь-Взлом]/Хакинг - подписывайся!

Показать полностью
Отличная работа, все прочитано!