Архив рубрики: Публикации

Включение локального файла (LFI) Пентест Web приложений

Полное руководство по тестированию безопасности уязвимости LFI с целью тестирования на ошибки и тестирования на проникновение.

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

Уязвимости LFI, как правило, обнаруживаются во время тестов веб-приложений, используя методы, содержащиеся в этом документе.

Кроме того, некоторые из техник, упомянутых в этой статье, также широко используются в соревнованиях стиля CTF.

Основные разделы

  •      Что такое уязвимость внедрения локального файла (LFI)?

  •      Идентификация уязвимостей LFI в веб-приложениях

  •      PHP Wrappers

  •      LFI через / proc / self / environ

  •      Технология Null Byte

  •      Сокращение – обход LFI

  •      Засорение файла журнала

  •      Отправление почтой обратного шелла

Что такое уязвимость внедрения локального файла (LFI)?

Локальное включение файлов (LFI) позволяет злоумышленнику включать файлы на сервер через веб-браузер.

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

Ниже приведен пример кода PHP, уязвимого для включения локального файла.

<?php

$file = $_GET['file'];

if(isset($file))

{

include("pages/$file");

}

else

{

include("index.php");

}

?>

Идентификация уязвимостей LFI в веб-приложениях

/script.php?page=index.html

Тестер на проникновение попытается использовать эту уязвимость, манипулируя параметром определения местоположения файла, таким как:

/script.php?page=../../../../../../../../etc/passwd

Вышеприведенное действие является попыткой отобразить содержимое файла /etc/passwd в системе на основе UNIX / Linux.

Ниже приведен пример успешного использования уязвимости LFI в веб-приложении:

PHP Wrappers

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

PHP Expect Wrapper

PHP expect: // позволяет выполнять системные команды, к сожалению, модуль PHP expect не будет включен по умолчанию.

 php?page=expect://ls 

Пэйлоад отправляет запрос POST на сервер, например:

 /fi/?page=php://input&amp;cmd=ls 

Пример использования php: //input  отношении DVWA:

Запрос:

Запрос POST с использованием php: //input

Ответ веб-приложения:

Вывод команды «ls» отображается над баннером DVWA

Base64-декодирование строки предоставляет файл /etc/passwd:

Изображение, показывающее декодированный base64 вывод из /etc/passwd в системе UNIX / Linux

php://filter может быть использован без кодировки base64 таким боразом:

 ?page=php://filter/resource=/etc/passwd 

 

itsecforu.ru
Изображение, показывающее вывод из /etc/passwd в системе UNIX / Linux с использованием php: //filter

PHP ZIP Wrapper LFI

Zip-врэппер обрабатывает загруженные серверные файлы .zip, позволяя тестеру на проникновение загружать zip-файл, используя уязвимую функцию загрузки файлов, и использовать его почтовый фильтр через LFI. Типичный пример атаки будет выглядеть так:

Создайте обратный шелл PHP

Сожмите в .zip-файл

Загрузите пэйлоад сжатого шелла на сервер

Используйте zip-врэппер, чтобы извлечь пэйлоад, используя: php? Page = zip: //path/to/file.zip%23shell

Вышеприведенный пример будет извлекать zip-файл в шелл, если сервер не добавит .php, переименуйте его в shell.php

Если функция загрузки файлов не позволяет загружать zip-файлы, можно попытаться обойти функцию загрузки файлов.

LFI через / proc / self / environ

Если можно включить /proc/self/environ с помощью уязвимости LFI, то введение исходного кода через заголовок User Agent является возможным вектором атаки.

После того, как код был введен в заголовок User Agent, можно использовать уязвимость LFI для выполнения /proc/self/environ и перезагрузить переменные среды, выполняя обратный шелл.

Полезные шеллы

Полезные крошечные бэкдоры PHP для вышеупомянутых методов:

 <system ('uname -a');?> 

Технология Null Byte

Null Byte инъекция обходит фильтрацию приложений в веб-приложениях путем добавления URL-кодированных «Нулевых байтов», таких как %00.

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

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

 vuln.php?page=/etc/passwd%00



vuln.php?page=/etc/passwd%2500 

Сокращение – обход LFI

Сокращение – это еще один метод обхода черного списка.

Введя длинный параметр в механизм включения уязвимого файла, веб-приложение может «отключить» (усекать) входной параметр, который может обходить входной фильтр.

Загрязнение файла журнала

Загрязнение файла журнала – это процесс ввода исходного кода в файлы журнала в целевой системе.

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

Например, ввод PHP обратного шела в URL-адрес, что приводит к тому, что syslog создает запись в журнале доступа apache для 404-страницы не найденной записи.

Затем файл журнала apache анализируется с использованием ранее обнаруженной уязвимости включения файлов, выполняющей вложенный обратный шелл PHP.

После ввода исходного кода в файл (ы) системы, следующим шагом будет определение местоположения файла журнала.

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

Списки пэйлоадов Burp LFI FuzzDB могут использоваться совместно с  Burp для быстрого определения допустимых местоположений файла журнала в целевой системе.

Ниже приведены некоторые распространенные службы в системах Linux / UNIX:

Apache / Nginx

Внесите код в журнал доступа к веб-серверу или журналы ошибок, используя netcat, после успешной инъекции проанализируйте местоположение файла журнала сервера, используя ранее обнаруженную уязвимость LFI.

Если журналы доступа к веб-серверу огромные, может потребоваться некоторое время выполнить введенный код.

Отправить обратный шелл по email

Если целевая машина передает почту либо напрямую, либо через другую машину в сети и сохраняет почту для пользовательских www-date (или пользователя apache) в системе, тогда можно отправить по электронной почте обратный шелл.

Если для домена нет записей MX, но открыт SMTP, возможно подключение к целевому почтовому серверу и отправка почты пользователю www-data / apache.

Почта отправляется пользователю, использующему apache, например, www-data, чтобы гарантировать, что разрешения файловой системы позволят прочитать доступ к файлу /var/spool/mail/www-data, содержащему введенный код обратной оболочки PHP.

Сначала перечислите целевую систему, используя список известных имен учетной записи UNIX / Linux:

В приведенном выше изображении используется сценарий smtp-user-enum, подтверждающий, что пользователь www-data существует в системе

На следующем снимке экрана показан процесс отправки электронной почты через telnet пользователю www-data:

На приведенном выше рисунке показан процесс отправки обратной PHP-оболочки через SMTP с использованием telnet

 

На приведенном выше рисунке показан отправленный PHP шелл, подключаемый через netcat

 



2018-01-01T17:59:44
Закрытие уязвимостей

Замена сетевой карты.

ПК прибыл после прошедшей грозы с заявкой о том, что он отключается через пару минут работы. Включение подтвердило описание заявителя. Компьютер без предупреждений отключался через 2-3 минуты. Модульно заменились БП, процессор, ОЗУ. Мат. платы для замены не было. Симптом всегда оставался. Наконец внимание было обращено на то, что постоянно горят индикаторы на входе сетевой карты, даже если провод не подключен. Исследования пошли в направлении сетевой карты. С подключенным патч-кордом я даже успел загрузиться до ОС и посмотреть параметры. На мат. плате в районе сетевого разъема я нащупал очень сильно разогретую широкую дорожку. Температура по мониторингу при этом ни где не превышала норму.

Возникло предположение, что в результате удара молнии, перенапряжение через Ethernet-кабель попало на мат. плату и перегорел  какой-то радиоэлемент.  Он теперь создает короткое замыкание или близкое к этому состояние,  дорожка нагревается от большого тока и срабатывает защита (по току или термодатчик). Чтоб подтвердить эту теорию я решил выпаивать детали от входного разъема RJ-45 до  микросхемы сетевого адаптера. Первыми выпаялись два каких-то драйвера у разъема.

Ситуация не изменилась, дорожка греется, компьютер выключается.

Следующим решено было отпаять сам контроллер сети. Какой из нескольких было определено по надписи RTL8111F.

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

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

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

Тут возник еще один нюанс. Новая сетевая карта, что на фото выше не подошла.  На мат. плате есть только мини-разъемы PCI.

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



2017-12-31T13:22:55
SYSTEM

Какие плагины нужны для WordPress блога? Подборка самых необходимых

Приветствую вас на блоге ИнетСоветы.ру! Движок WordPress хорошо тем, что на него можно поставить много дополнений — плагинов, которые добавят вашему сайту функциональности. Чтобы вам, как новичку, было легче сориентироваться в большом разнообразии плагинов, в этом после я дам список основных плагинов. В 2019 году я внесла правки в этот список и пометила плагины, которые я больше не использую или заменила их кодом.

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

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

Список моих основных плагинов

  1. Akismet – фильтрует комментарии, защищая блог от спама. Подробнее в статье «Плагин для защиты от спама Akismet«.
  2. All in One SEO Pack – плагин, который полезен для поисковой оптимизации. Как настроить All in One SEO Pack читайте по ссылке https://inetsovety.ru/plagin-all-in-one-seo-pack/. Альтернатива ему — Yoast SEO.
  3. Amcaptcha – для защиты от спама. Перед отправкой комментария нужно поставить галочку, подтверждая что Вы не спам-бот. Этот плагин ставить не обязательно, Akismet успешно справляется. Amcaptcha добавляет дополнительное поле в форму отправки комментария, в котором комментатор должен поставить галочку для отправки комментария. Это намного удобнее, чем вводить капчу.
  4. Auto Highslide –  удобный плагин для увеличение картинок в статье. Есть смысл ставить это плагин, если Вы добавляете в статью картинки, которые требуют увеличения. Плагин работает сразу же после активации. Теперь для увеличения картинки достаточно кликнуть по ней левой кнопкой мышки и она увеличится до полного размера. Следите, чтобы при загрузке картинок в статью в настройках параметров изображения в пункте ссылка, было выбрано «Медиафайл». В противном случае картинка не будет увеличиваться по клику:

    Плагин Auto Highslide для увеличения изображений
  5. Dagon Design Sitemap Generator – карта сайта для людей. На отдельной странице выводит список всех опубликованных на блоге статей, что помогает поисковым роботам лучше индексировать сайт. Как установить этот плагин читайте здесь.  Страничку со списком всех статей можно создать и без плагина, как это сделать читайте по ссылке https://inetsovety.ru/karta-bloga-dlya-lyudey/
  6. Google XML Sitemaps – карта сайта для поисковых роботов. Задача этого плагина — создать в директории сайта файл для поисковых роботов в формате xml, и вносить в него дополнения после появления на блоге новых статей и обновления старых. Как установить и настроить данный плагин читайте в статье «XML карта сайта для поисковых систем«.
  7. Hyper Cache – плагин для кеширования. Молодым блогам его ставить не обязательно.
  8. Login LockDown — защищает от подбора пароля для входа в админку. Как можно защитить админку Вордпресс от взлома читайте по ссылке https://inetsovety.ru/kak-zashtitit-adminku-wordpress/
  9. RusToLat – заменяет буквы кириллицы в ссылке к статье на латинские. Также способствует оптимизации сайта.
  10. WordPress Database Backup – создает резервную копию базы данных. Обязательный плагин, который нужно один раз настроить и он будет в автоматическом режиме создавать копию базы данных и присылать на Ваш имей. Какие еще меры нужно предпринять для защиты сайта читайте тут.
  11. AdsPlace’r Pro — плагин для удобной вставки рекламы на сайт.

Посмотрите статью с фишками, которые можно реализовать на Вордпресс по ссылке https://inetsovety.ru/fishki-dlya-bloga-na-wordpress/

Дополнительные плагины

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

  1. WP-Optimize – плагин для оптимизации базы данных. Этот плагин достаточно активировать раз в месяц, запускать оптимизацию базы данных и снова отключать его.

    Настройка плагина WP-Optimize для WordPress
  2. Broken Link Checker – помогает проверить сайт на наличие битых ссылок и оповещает по почте. Его можно установить, проверить сайт и удалить битые ссылки. Потом отключить, а через недельку-две провести очередную проверку и снова отключить.
  3. P3 (Plugin Performance Profiler) — плагин для проверки нагрузки, которую создают установленные на блоге плагины. Штука полезная. P3 подскажет Вам какие плагины слишком тяжелые и их следует удалить. Описание плагина https://inetsovety.ru/iz-za-kakogo-plagina-vash-blog-na-wordpress-dolgo-gruzitsya/
  4. Anti-XSS attack – плагин помогает защитить блог от XSS атак. Не актуален, т.к. давно не обновляется.
  5. Disable WordPress Updates – отключает запросы на обновления. В целях безопасности, лучше регулярно устанавливать предлагаемые движком и плагинами обновления. Если же не хотите, установите этот плагин и Вы не будете видеть оповещений о вышедших обновлениях.
  6. Contact Form 7 – создает контактную форму для связи посетителей сайта с администрацией. Рекомендую заменить этот плагин кодом. Создание контактной формы кодом не намного сложнее, чем настройка плагином. Инструкцию читайте в посте «Форма обратной связи без плагина».
  7. Subscribe To Comments – подписка на комментарии к статье. Пользователь может подписаться на уведомления о новых комментариях к посту, который он оставил.
  8. Watermark RELOADED – устанавливает водяной знак на картинку. Если вы обрабатываете изображения в Фотошопе перед загрузкой на сайт, там же можете быстро добавить копирайт.
  9. WP-NoRef – закрывает все внешние ссылки от индексации.
  10. WP-Polls – плагин для опросов.
  11. WP-PostViews – показывает количество просмотров статьи. Данный плагин можно и даже нужно заменить кодом.
  12. WordPress Related Posts – плагин для вывода похожих записей к статье списком. Есть другой плагин Related Posts Thumbnails, который выводит похожие записи с картинками. Также, можно вывести похожие записи без плагина при помощи кода. Инструкцию смотрите по ссылке https://inetsovety.ru/pohozhie-zapisi-v-statyyah-na-bloge-wordpress-bez-plagina/. Выводить ссылки на статьи из той же рубрики стоит, чтобы пользователи подольше находились на сайте и просматривали другие статьи.
  13. Список страниц – используется для более удобной навигации по блогу. Обычно в бесплатных шаблонах, которые Вы скачиваете из интернета, есть только ссылки: «Предыдущие записи», «Следующие записи». А этот плагин добавляет кнопки с цифрами для более удобного перехода на другие станицы архива. Этот функционал можно реализовать и кодом.

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

Хочу сказать, что не стоит устанавливать на свой сайт много плагинов, так как они создают дополнительную нагрузку и замедляют работу сайта. Установите 10-12 плагинов. Два из можно отключить и включать периодически для проверки.



2017-12-30T20:24:08
Блог на WordPress

Как установить Joomla 3 на Debian 9

Мы покажем вам, как установить Joomla 3 на Debian 9. Joomla это одна из наиболее популярной бесплатной CMS (Content Management System) с открытым исходным кодом, которая позволяет легко создавать и управлять динамическими веб-сайтами. Она написана на PHP, и он может хранить свои данные в любой базе данных: MySQL или PostgreSQL. На этом уроке мы покажем вам, как установить Joomla 3 на Debian 9 с использованием LAMP (Linux, Apache, MariaDB, PHP). Установка Joomla 3 на Debian 9, легко и должна занять менее 10 минут.

1. Начало работы

Во-первых, вам необходимо войти на сервер через SSH с правами суперпользователя:

ssh root@IP_ADDRESS -p PORT_NUMBER

 

и заменить «IP_ADDRESS» и «PORT_NUMBER» на фактический IP-адрес сервера и номер порта SSH.

Перед тем, как начать установку, давайте удостоверимся, что наш сервер Debian 9 обновлен, выполнив следующие команды:

apt-get update

apt-get upgrade

2. Установка Apache

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

apt-get install apache2

 

После завершения установки, вы можете включить автоматический запуск службы при загрузке системы:

systemctl enable apache2

 

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

systemctl status apache2

2. Установка PHP 7.0

Далее, мы установим PHP 7 с некоторыми дополнительными PHP модулями:

apt-get install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.0-gd php7.0-mcrypt php7.0-intl php7.0-curl php7.0-zip

3. Установка MariaDB

Следующим шагом является установка сервера баз данных MariaDB. Для этого выполните следующую команду:

apt-get install mariadb-server

 

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

systemctl start mariadb

systemctl enable mariadb

 

Вы также можете запустить сценарий «mysql_secure_installation» предоставленный MariaDB для того, чтобы обеспечить установку:

mysql_secure_installation

 

После того, как вы ответили на все вопросы, вы можете пойти дальше и войти в MariaDB как root, используя корневой пароль, с помощью следующей команды:

mysql -u root -p

 

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

CREATE DATABASE joomla_db;

GRANT ALL PRIVILEGES ON joomla_db.* TO 'joomla_user'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';

FLUSH PRIVILEGES;

exit;

 

Убедитесь в том, чтобы заменить «ПАРОЛЬ» на реальный, сильный пароль.

4. Установка Joomla 3 на Debian 9

Теперь, когда ваш сервер LAMP готов, мы можем, наконец, установить Joomla.

Вы можете скачать последнюю стабильную версию с помощью следующей команды:

wget https://downloads.joomla.org/us/cms/joomla3/3-8-3/Joomla_3-8-3-Stable-Full_Package.zip

 

Создайте новый каталог Joomla внутри корневой директории Apache на сервере и распакуйте туда архив:

mkdir /var/www/html/joomla

unzip Joomla_3-8-3-Stable-Full_Package.zip -d /var/www/html/joomla

 

Измените владельца каталога Joomla:

chown -R www-data:www-data /var/www/html/joomla

5. Настройка виртуального хоста Apache

Если вы хотите получить доступ к установке Joomla, используя свое собственное доменное имя, вы также должны создать файл виртуального хоста Apache:

nano /etc/apache2/sites-available/joomla.conf

 

И введите следующее содержимое внутри этого файла:

<VirtualHost *:80>

ServerAdmin admin@yourdomain.ru

DocumentRoot /var/www/html/joomla

ServerName yourdomain.ru

ServerAlias www.yourdomain.ru



<Directory /var/www/html/joomla>

Options FollowSymLinks

AllowOverride All

Order allow,deny

allow from all

</Directory>



ErrorLog /var/log/apache2/joomla-error_log

CustomLog /var/log/apache2/joomla-access_log common

</VirtualHost>

6. Включение файла виртуального хоста

И не забудьте заменить «yourdomain.ru» на ваше доменное имя. Наконец, вам необходимо включить файл виртуального хоста:

ln -s /etc/apache2/sites-available/joomla.conf /etc/apache2/sites-enabled/joomla.conf

7. Перезапустите Apache

Перезапустите Apache:

systemctl restart apache2

8. Завершение установки Joomla с помощью веб-браузера

Вот и все. Теперь вы можете перейти к вашему домену по адресу http://yourdomain.ru и следуйте инструкциям на экране для завершения установки Joomla.

 



2017-12-28T21:43:36
Установка ПО на Debian

Как избавиться от другого обновления при ошибки в WordPress

Если вы получаете ошибку «Another update is currently in progress» во время обновления ядра WordPress, то этот учебник для вас, мы собираемся рассказать вам, как избавиться от другого обновления при ошибке в WordPress.

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

Как избавиться от другого обновления при ошибки в WordPress

Выполните следующие действия, чтобы устранить эту проблему.

  1. Войдите в CPanel и откройте PhpMyAdmin.
  2. Выберите базу данных, которая используется на этом сайте.
  3. Теперь откройте вкладку SQL и скопировать кусок кода ниже, вставьте в MySQL и выполните.

Теперь попробуйте обновить ядро WordPress, CMS будет обновлена до последней версии. Надеюсь, что это руководство поможет вам. Если вам нравится этот учебник, то, пожалуйста, поделитесь им с друзьями.



2017-12-28T18:05:12
Лучшие учебники по Wodpress

Как добавить цвета BGS для администратора в таблице постов в WordPress

В этом посте мы поделимся примерок Как добавить цвета BGS для администратора в таблице постов в WordPress.

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

Добавьте следующий фрагмент кода в конце файла functions.php из текущей активированной папке темы.

После добавления приведенного выше кода в файле functions.php, ваша страница администратора будет выглядеть как ниже на скриншоте.

Как добавить цвета BGS для администратора в таблице постов в WordPress

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



2017-12-27T18:12:59
Лучшие учебники по Wodpress