07 Кві, 2023

Мова структурованих запитів PostGres (PostgreSQL)

Penetration Testing as a service (PTaaS)

Tests security measures and simulates attacks to identify weaknesses.

PostgreSQL це система управління реляційними базами даних з відкритим вихідним кодом, що використовує модель клієнт-сервер. Він використовує мову SQL для управління даними і запитів до них і може бути доступна через різноманітні протоколи, включаючи TCP / IP і доменні сокети Unix. Протокол підтримує різні типи даних і функції, включаючи транзакції, тригери і збережені процедури, сумісні з ACID. Протокол PostgreSQL використовує протокол на основі повідомлень по протоколу TCP / IP, при цьому повідомлення пересилаються між клієнтом і сервером для обробки операцій з базою даних.

Загальні порти PGSQL

Клієнти зазвичай використовують цей порт для підключення до сервера PostgreSQL та виконання таких операцій, як створення, редагування і запит баз даних. На додаток до TCP-порту 5432, PostgreSQL також використовує інші порти для певних цілей, таких як:

Порт TCP 5433: використовується для безпечних (з SSL-шифруванням) підключень до сервера PostgreSQL

Порт TCP 5434: використовується для другого екземпляра сервера PostgreSQL, який працює на тому ж хості

Порт TCP 5435: використовується для третього примірника сервера PostgreSQL, який працює на тому ж хості

Стандартні команди від неавторизованих:

psql -U my_login -h 10.0.0.101 postgres

Інструменти для використання протоколу PGSQL

Ручні Інструменти Тестування:

  • pgAdmin 4 – pgAdmin 4 - це безкоштовний інструмент адміністрування і управління базою даних PostgreSQL з відкритим вихідним кодом. Він надає графічний користувальницький інтерфейс для управління базами даних, таблицями та іншими об'єктами і дозволяє користувачам виконувати такі завдання, як створення запитів, генерація звітів і моніторинг продуктивності.

  • psql – psql - це інструмент командного рядка, який входить до складу PostgreSQL. Він дозволяє користувачам взаємодіяти з базою даних безпосередньо з командного рядка і може використовуватися для виконання таких завдань, як запит даних, створення таблиць і керування користувачами.

  • DBeaver – DBeaver - це безкоштовний інструмент управління базами даних з відкритим вихідним кодом, який підтримує кілька баз даних, включаючи PostgreSQL. Він надає графічний користувальницький інтерфейс для управління базою даних і включає в себе такі функції, як редагування SQL, перегляд схеми та візуалізація даних.

  • Navicat for PostgreSQL – Navicat - це комерційний інструмент управління базами даних, яка надає графічний користувальницький інтерфейс для управління базами даних PostgreSQL. Він включає в себе такі функції, як моделювання даних, побудова запитів і синхронізація даних.

  • pgcli – pgcli - це інтерфейс командного рядка для PostgreSQL, який забезпечує автоматичне завершення, підсвічування синтаксису та інші функції, що підвищують ефективність взаємодії з базою даних.

  • HeidiSQL – HeidiSQL - це безкоштовний інструмент управління базами даних з відкритим вихідним кодом, який підтримує кілька баз даних, включаючи PostgreSQL. Він надає графічний користувальницький інтерфейс для управління базою даних і включає в себе такі функції, як редагування SQL, перегляд схеми та візуалізація даних.

  • OmniDB – OmniDB - це веб-інструмент управління базами даних, яка надає графічний користувальницький інтерфейс для управління базами даних PostgreSQL. Він включає в себе функції, такі як редагування SQL, перегляд схеми та візуалізація даних.

  • pgweb – pgweb - це веб-інструмент адміністрування для PostgreSQL, який надає графічний користувальницький інтерфейс для управління базами даних, таблицями та іншими об'єктами. Він включає в себе функції, такі як редагування SQL, візуалізація даних і керування користувачами.

  • SQL Workbench/J – SQL Workbench / J - це безкоштовний інструмент управління базами даних з відкритим вихідним кодом, який підтримує кілька баз даних, включаючи PostgreSQL. Він надає графічний користувальницький інтерфейс для управління базою даних і включає в себе такі функції, як редагування SQL, перегляд схеми та візуалізація даних.

  • pgBadger – pgBadger - це аналізатор журналів для PostgreSQL, який допомагає користувачам виявляти вузькі місця продуктивності та інші проблеми в базі даних. Він надає графічні звіти і діаграми, засновані на журналах бази даних.

Автоматизовані інструменти тестування:

  • pgTAP – pgTAP - це платформа тестування для PostgreSQL, яка надає набір функцій і макросів для написання тестів на SQL. Це дозволяє користувачам писати тести для схем баз даних, функцій та інших об'єктів.

  • pg_regress – pg_regress - це інструмент регресійного тестування для PostgreSQL, який дозволяє користувачам писати і запускати тести для бази даних. Він включає в себе такі функції, як паралельне тестування, форматування вихідних даних і звіти про помилки.

  • Pgtcl-ng – Pgtcl-ng - це розширення Tcl / Tk для PostgreSQL, яке надає платформу тестування для написання автоматичних тестів на Tcl. Він включає в себе такі функції, як управління тестовими приладами, звітність про результати та автоматизація тестування.

  • pgTapTest – pgTapTest - це веб-платформа тестування для PostgreSQL, яка надає графічний користувальницький інтерфейс для написання і запуску тестів. Він включає в себе такі функції, як управління тестовими наборами, звіти про результати та автоматизація тестування.

  • pg_prove – pg_prove - це інструмент командного рядка для запуску автоматичних тестів в базах даних PostgreSQL. Він дозволяє користувачам писати тести SQL або в призначеному для користувача форматі і включає в себе такі функції, як звіти про результати тестування і управління набором тестів.

  • pgTAPish – pgTAPish - це платформа тестування на основі Python для PostgreSQL, яка надає набір функцій і класів для написання тестів. Він включає в себе такі функції, як управління тестовими приладами, звітність про результати та автоматизація тестування.

  • pg_qualstats – pg_qualstats - це інструмент для аналізу запитів для PostgreSQL з метою виявлення вузьких місць у продуктивності та інших проблем. Він надає статистику про час виконання запиту, плани запиту та інших показниках.

  • pgbench – pgbench - це інструмент порівняльного аналізу для PostgreSQL, який дозволяє користувачам тестувати продуктивність бази даних при різних робочих навантаженнях. Він включає в себе такі функції, як вимірювання швидкості транзакцій і звіт про результати.

  • pg_stat_statements – pg_stat_statements - це інструмент для аналізу статистики запитів для PostgreSQL для виявлення проблем з продуктивністю. Він надає статистику про час виконання запиту, плани запиту та інших показниках.

  • pgAudit – pgAudit - це інструмент для аудиту баз даних PostgreSQL з метою виявлення проблем безпеки та інших проблем. Він надає докладний журнал всіх дій бази даних, включаючи запити, транзакції і дії користувача.

Розвідувальна або нестандартна команда

Інформаційна схема queries: вони дозволяють запитувати метадані бази даних для збору інформації про таблиці, стовпці, індекси та інших об'єктах.

запит pg_catalogies: Цей каталог містить інформацію про внутрішню структуру бази даних і може бути запропоновано для збору інформації про системних таблицях і індексах.

SQL-ін'єкція аттаcks: Якщо вразливе додаток використовує PostgreSQL в якості серверної частини, атаки з використанням SQL-ін'єкцій можуть використовуватися для збору інформації або виконання несанкціонованих операцій з базою даних.

Нестандартне розширенняns: PostgreSQL підтримує різні розширення, які можуть надавати додаткові функціональні можливості, такі як підтримка географічних інформаційних систем (ГІС). Для взаємодії з цими розширеннями може знадобитися використання нестандартних команд.

Останні п'ять відомих CVE для IKE

 CVE-2021-29625: Adminer - це програмне забезпечення для управління базами даних з відкритим вихідним кодом. Уразливість міжсайтового скриптинга у версіях Adminer з 4.6.1 за 4.8.0 зачіпає користувачів MySQL, MariaDB, PgSQL і SQLite. XSS в більшості випадків запобігає суворим CSP у всіх сучасних браузерах. Єдине виключення - коли Адміністратор використовує розширення `pdo_` для зв'язку з базою даних (воно використовується, якщо власні розширення не включені). В браузерах без CSP порушені версії Adminer з 4.6.1 за 4.8.0. Уразливість виправлена у версії 4.8.1. Як обхідних шляхів можна використовувати браузер, що підтримує суворий CSP, або включити власні розширення PHP (наприклад, `mysqli`), або відключити відображення помилок PHP (`display_errors).

 CVE-2020-25269: Проблема була виявлена в InspIRCd 2 до версії 2.0.29 і 3 до версії 3.6.0. Модуль pgsql містить уразливість after use free. У поєднанні з модулями sqlauth або sqloper ця уразливість може бути використана для віддаленого збою сервера InspIRCd будь-яким користувачем, здатним підключитися до сервера.

 CVE-2015-7766: PGSQL:SubmitQuery.do ZOHO ManageEngine OpManager 11.6, 11.5 та більш ранніх версіях дозволяє віддаленим адміністраторам обійти обмеження SQL-запитів за допомогою коментаря в запиті до api/json/admin/SubmitQuery, як показано "INSERT/**/INTO".

 CVE-2015-4644: Функція php_pgsql_meta_data в pgsql.c в розширенні PostgreSQL (він же pgsql) в PHP до версії 5.4.42, 5.5.x до версії 5.5.26 та 5.6.x до версії 5.6.10 не перевіряє витяг токен для імен таблиць, що може дозволити віддаленим зловмисникам викликати відмову в обслуговуванні (розіменування нульового покажчика і збій програми) з допомогою створеного імені. ПРИМІТКА: ця уразливість існує через неповного виправлення для CVE-2015-1352. 

 CVE-2015-1352: Функція build_tablename в pgsql.c в розширенні PostgreSQL (він же pgsql) в PHP до версії 5.6.7 не перевіряє витяг токен для імен таблиць, що дозволяє віддаленим зловмисникам викликати відмову в обслуговуванні (розіменування нульового покажчика і збій програми) з допомогою створеного імені. 

Зв'язок з перерахуванням

Для підключення і виконання перерахування в базі даних PostgreSQL ви можете використовувати psql інструмент командного рядка. Ось короткий огляд цього процесу:

  1. Відкрийте вікно терміналу і введіть psql -h <hostname> -U <username> для підключення до бази даних PostgreSQL використовуйте зазначені ім'я хоста і ім'я користувача. Вам може бути запропоновано ввести пароль, залежно від використовуваного методу аутентифікації.

  2. Після підключення ви можете використовувати різні команди для перерахування бази даних, такі як \dt щоб перелічити всі таблиці, \du щоб перерахувати всіх користувачів, \dv щоб перелічити всі види, і \df щоб перелічити всі функції.

  3. Ви також можете використовувати SQL-запити для отримання певної інформації з бази даних. Наприклад, SELECT * FROM pg_catalog.pg_user отримає список всіх користувачів в базі даних.

  4. Важливо використовувати методи перерахування лише етичним і авторизованим чином, а також дотримуватися рекомендацій з безпеки для захисту бази даних від несанкціонованого доступу або модифікації.

Грубе силове підключення:

nmap -p 5432 –script pgsql-brute <host>

Корисна інформація

– Підтримує широкий спектр типів даних, включаючи цілочисельні, числові, логічні, символічні, текстові, дату / час, тимчасову мітку і багато інших.

– Підтримує SQL-мова структурованих запитів) і дозволяє користувачам виконувати складні запити до своїх даних.

– Підтримує як синхронний, так і асинхронну реплікацію, дозволяючи користувачам копіювати дані на декілька вузлів для підвищення доступності і масштабованості.

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

– Підтримує повнотекстовий пошук, дозволяючи користувачам шукати текстові дані в своїй базі даних.

– Велика і активна спільнота розробників і користувачів, надає документацію, форуми та інші ресурси.

– Доступно на різних платформах, включаючи Windows, Linux, macOS і Unix-подібні системи.

– Відкритий вихідний код і безкоштовний у використанні, що робить його привабливим вибором для організацій, які прагнуть знизити витрати.

Відомі банери

"Ласкаво просимо в PostgreSQL" – Це банер за промовчанням, яка відображається PostgreSQL при підключенні до сервера за допомогою інструменту командного рядка psql.

"Сервер PostgreSQL" – Цей банер часто використовується серверами PostgreSQL для ідентифікації себе перед подключающимися до них клієнтами.

"PostgreSQL" – Це простий банер, використовуваний деякими серверами PostgreSQL для ідентифікації самих себе.

"Ласкаво просимо в psql" – Цей банер відображається інструментом командного рядка psql при підключенні до сервера PostgreSQL.

"pgAdmin" (Адміністратор) – Це банер, який відображається інструментом графічного користувальницького інтерфейсу pgAdmin для управління базами даних PostgreSQL.

"psycopg2" – Це банер, який відображається бібліотекою psycopg2 для Python, яка використовується для підключення до баз даних PostgreSQL та взаємодії з ними.

"JDBC" - "JDBC" – Це банер, який відображається драйвером PostgreSQL JDBC для Java, який використовується для підключення до баз даних PostgreSQL та взаємодії з ними.

"ODBC" – Це банер, який відображається драйвером PostgreSQL ODBC, який використовується для підключення до баз даних PostgreSQL і взаємодії з ними з використанням стандарту Open Database Connectivity (ODBC).

Книги для вивчення протоколу PostGres Structured Query Language (PGSQL)

PostgreSQL: Запущений Реджина Обидві і Лео Сюй – Ця книга являє собою введення в PostgreSQL, охоплює такі теми, як інсталяція, налаштування та базові команди SQL.

Практичний PostgreSQL Джон Ворслі і Джошуа Д. Дрейк – Ця книга являє собою всеосяжне керівництво по PostgreSQL, охоплює такі теми, як проектування баз даних, адміністрування і розширений SQL.

Високопродуктивна куховарська книга PostgreSQL Читидж Чаухан і Дінеш Кумар – У цій книзі представлені практичні рішення для підвищення продуктивності баз даних PostgreSQL.

Висока продуктивність PostgreSQL 9.0 автор: Грегорі Сміт – Ця книга являє собою докладне керівництво по оптимізації продуктивності баз даних PostgreSQL, охоплює такі теми, як настроювання запитів, індексація і реплікації.

Основи адміністрування PostgreSQL автор Ханс-Юрген Шениг – Ця книга являє собою всеосяжне керівництво по адмініструванню баз даних PostgreSQL, охоплює такі теми, як резервне копіювання і відновлення, моніторинг і безпека.

Куховарська книга з адміністрування PostgreSQL 9 Саймон Ріггс і Ханну Кросинг – У цій книзі представлені практичні рішення для адміністрування баз даних PostgreSQL, що охоплюють такі теми, як реплікація, резервне копіювання і відновлення, а також налаштування продуктивності.

Керівництво розробника PostgreSQL Евальд Гешвинде і Ханс-Юрген Шениг – Ця книга являє собою всеосяжне керівництво по розробці додатків з використанням PostgreSQL, охоплює такі теми, як моделювання даних, програмування на SQL і програмування на стороні сервера.

Освоєння PostgreSQL 11 автор Ханс-Юрген Шениг – Ця книга являє собою докладний посібник з PostgreSQL 11, що охоплює такі теми, як інсталяція та налаштування, програмування на SQL і адміністрування баз даних.

Куховарська книга з адміністрування PostgreSQL 11 Саймон Ріггс і Джанні Чолли – У цій книзі представлені практичні рішення для адміністрування баз даних PostgreSQL 11, що охоплюють такі теми, як реплікація, резервне копіювання і відновлення, а також налаштування продуктивності.

Куховарська книга з адміністрування PostgreSQL 13 Саймон Ріггс і Джанні Чолли – У цій книзі представлені практичні рішення для адміністрування баз даних PostgreSQL 13, що охоплюють такі теми, як резервне копіювання і відновлення, налаштування продуктивності і безпека.

Список корисного навантаження для протоколу PostGres Structured Query Language (PGSQL)

  • Повідомлення про запуск: Початкове повідомлення, надіслане від клієнта на сервер, що містить параметри підключення, такі як ім'я користувача, ім'я бази даних, кодування клієнта і т. д.

  • Повідомлення про аутентифікації: Відправляється з сервера клієнту для аутентифікації користувача.

  • Повідомлення з паролем: Відправлено з клієнта на сервер, що містить пароль користувача.

  • Повідомлення інструкції SQLЦі повідомлення включають:

Повідомлення запиту: використовується для відправки однієї інструкції SQL сервер для виконання.

Пакетне повідомлення: використовується для відправки декількох інструкцій SQL сервер для виконання в одному пакеті.

Опис повідомлення: використовується для запиту інформації про результат запиту, такий як імена стовпців і типи даних.

Повідомлення прив'язки: використовується для зв'язування значень параметрів з заповнювачами в підготовленому операторі.

Виконати повідомлення: використовується для виконання раніше підготовленої інструкції з прив'язаними значеннями параметрів.

Синтаксичний аналіз повідомлення: використовується для перетворення інструкції SQL у внутрішнє представлення.

Повідомлення синхронізації: використовується для синхронізації стану клієнта і сервера.

  • Повідомлення данихЦі повідомлення включають:

Повідомлення з описом рядки: відправляється сервером для опису стовпців в результаті запиту.

Повідомлення рядки даних: відправляється сервером для відправки одного рядка даних в результаті запиту.

Повідомлення про завершення виконання команди: відправляється сервером для вказівки завершення SQL-команди разом з відповідною статистикою.

Повідомлення про готовність до запиту: відправляється сервером, щоб вказати, що він готовий прийняти таку команду SQL.

  • Повідомлення про завершення: Відправлено клієнтом або сервером для завершення з'єднання.

Пом'якшення наслідків

  1. Переконайтеся, що для PostgreSQL встановлені останні виправлення безпеки і оновлення, щоб усунути всі відомі уразливості.

  2. Використовуйте шифрування SSL / TLS для сполук PostgreSQL, щоб гарантувати безпеку переданих даних.

  3. Використовуйте надійні паролі, багатофакторну аутентифікацію і обмежте доступ до бази даних лише авторизованим персоналом.

  4. Призначте користувачам і ролям мінімальні необхідні привілеї, щоб обмежити шкоду, яка може бути заподіяна у разі злому облікового запису.

  5. Регулярно переглядайте журнали PostgreSQL на предмет незвичайної активності або спроб несанкціонованого доступу.

  6. Використовуйте брандмауери для обмеження доступу до серверів PostgreSQL з зовнішніх мереж.

  7. Створюйте резервні копії баз даних PostgreSQL, щоб гарантувати, що дані можуть бути відновлені у разі інциденту безпеки або системного збою.

  8. Вбудуйте системи виявлення / запобігання вторгнень для моніторингу і виявлення потенційних загроз в режимі реального часу.

Висновок

PostgreSQL це потужна і широко використовувана система управління базами даних з відкритим вихідним кодом, яка надає ряд додаткових функцій для управління даними. Однак, як і у випадку з будь-якою складною програмною системою, важливо бути обізнаним про потенційні ризики безпеки і вразливості, які можуть виникнути. Впроваджуючи ряд заходів безпеки, таких як використання безпечної аутентифікації, шифрування SSL / TLS, регулярних оновлень і систем виявлення / запобігання вторгнень, мережеві адміністратори можуть допомогти знизити ці ризики і забезпечити конфіденційність, цілісність і доступність своїх даних. В цілому, PostgreSQL залишається високо цінується і надійною системою баз даних для широкого спектру додатків і галузей.

Інші Послуги

Готові до безпеки?

зв'язатися з нами