Pentesting SAP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SAP означає Системи Застосувань та Продуктів в Обробці Даних. SAP, за визначенням, також є назвою програмного забезпечення ERP (Планування Ресурсів Підприємства), а також назвою компанії. Система SAP складається з ряду повністю інтегрованих модулів, які охоплюють практично всі аспекти управління бізнесом.
Кожен екземпляр SAP (або SID) складається з трьох шарів: бази даних, додатку та презентації), кожен ландшафт зазвичай складається з чотирьох екземплярів: dev, test, QA та production. Кожен з шарів може бути експлуатований до певної міри, але найбільший ефект можна досягти, атакуючи базу даних.
Кожен екземпляр SAP поділяється на клієнтів. Кожен з них має користувача SAP*, еквівалент "root" в додатку. При початковому створенні, цьому користувачу SAP* надається стандартний пароль: “060719992” (більше стандартних паролів нижче). Ви будете здивовані, якщо дізнаєтеся, як часто ці паролі не змінюються в тестових або розробницьких середовищах!
Спробуйте отримати доступ до оболонки будь-якого сервера, використовуючи ім'я користувача <SID>adm. Брутфорс може допомогти, однак там може бути механізм блокування облікового запису.
Наступний розділ в основному з https://github.com/shipcod3/mySapAdventures від користувача shipcod3!
Перевірте Обсяг Застосування або Короткий Опис Програми для тестування. Зверніть увагу на імена хостів або системні екземпляри для підключення до SAP GUI.
Використовуйте OSINT (відкрите джерело інформації), Shodan та Google Dorks для перевірки файлів, піддоменів та цікавої інформації, якщо додаток є доступним в Інтернеті або публічним:
Ось як виглядає http://SAP:50000/irj/portal
Використовуйте nmap для перевірки відкритих портів та відомих сервісів (sap routers, webdnypro, web services, web servers тощо)
Обходьте URL-адреси, якщо працює веб-сервер.
Фuzz-те директорії (ви можете використовувати Burp Intruder), якщо на певних портах є веб-сервери. Ось кілька хороших списків слів, наданих проектом SecLists, для знаходження стандартних SAP ICM шляхів та інших цікавих директорій або файлів:
https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls_SAP.txt https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt
Використовуйте допоміжний модуль Metasploit SAP SERVICE DISCOVERY для перерахунку екземплярів/сервісів/компонентів SAP:
Ось команда для підключення до SAP GUI sapgui <sap server hostname> <system number>
Перевірте наявність стандартних облікових даних (У таксономії оцінки вразливостей Bugcrowd це вважається P1 -> Неправильна конфігурація безпеки сервера | Використання стандартних облікових даних | Продуктивний сервер):
Запустіть Wireshark, а потім автентифікуйтеся на клієнті (SAP GUI) за допомогою отриманих облікових даних, оскільки деякі клієнти передають облікові дані без SSL. Є два відомі плагіни для Wireshark, які можуть розбирати основні заголовки, що використовуються протоколом SAP DIAG: плагін розбору SAP від SecureAuth Labs та плагін SAP DIAG від Positive Research Center.
Перевірте наявність ескалацій привілеїв, наприклад, використовуючи деякі коди транзакцій SAP (tcodes) для користувачів з низькими привілеями:
SU01 - Для створення та підтримки користувачів
SU01D - Для відображення користувачів
SU10 - Для масового обслуговування
SU02 - Для ручного створення профілів
SM19 - Аудит безпеки - конфігурація
SE84 - Інформаційна система для авторизацій SAP R/3
Перевірте, чи можете ви виконувати системні команди / запускати скрипти в клієнті.
Перевірте, чи можете ви зробити XSS на BAPI Explorer
Обстежте URL-адреси (див. фазу виявлення).
Фазуйте URL-адреси, як у фазі виявлення. Ось як виглядає http://SAP:50000/index.html:
Шукайте загальні веб-уразливості (Див. OWASP Top 10), оскільки в деяких місцях є уразливості XSS, RCE, XXE тощо.
Ознайомтеся з “Методологією мисливців на помилки” Джейсона Хаддіка для тестування веб-уразливостей.
Обхід автентифікації через підробку методів? Можливо :)
Відкрийте http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#
, потім натисніть кнопку “Вибрати”, а потім у відкритому вікні натисніть “Пошук”. Ви повинні побачити список користувачів SAP (Посилання на уразливість: ERPSCAN-16-010)
Чи передаються облікові дані через HTTP? Якщо так, то це вважається P3 відповідно до Таксономії оцінки уразливостей Bugcrowd: Пошкоджена автентифікація та управління сесіями | Слабка функція входу через HTTP. Підказка: також перевірте http://SAP:50000/startPage або портали входу :)
Спробуйте /irj/go/km/navigation/
для можливого переліку директорій або обходу автентифікації
http://SAP/sap/public/info містить деяку цікаву інформацію:
Якщо у вас є правильні дані для входу під час тестування безпеки або вам вдалося увійти в SAP GUI, використовуючи базові облікові дані, ви можете перевірити значення параметрів. Багато базових і користувацьких значень параметрів конфігурації вважаються вразливостями.
Ви можете перевірити значення параметрів як вручну, так і автоматично, використовуючи скрипти (наприклад, SAP Parameter Validator).
Перейшовши до коду транзакції RSPFPAR
, ви можете запитати різні параметри та дізнатися їх значення.
Таблиця нижче містить визначені параметри та умови, за якими вони відрізняються.
Наприклад, якщо gw/reg_no_conn_info встановлено на менше ніж 255 (<255
), то це слід вважати загрозою. Аналогічно, якщо icm/security_log дорівнює двом (2
), це також буде можливою загрозою.
Через велику кількість параметрів також можливо експортувати всі з них у файл .XML і використовувати скрипт SAPPV (SAP Parameter Validator), який перевірить всі вищезгадані параметри та виведе їх значення з відповідним розрізненням.
Перевірте, чи працює на старих серверах або технологіях, таких як Windows 2000.
Сплануйте можливі експлойти / атаки, існує багато модулів Metasploit для виявлення SAP (допоміжні модулі) та експлойтів:
Спробуйте використати деякі відомі експлойти (перегляньте Exploit-DB) або атаки, такі як стара, але добра “SAP ConfigServlet Remote Code Execution” в SAP Portal:
Перед виконанням команди start
у скрипті bizploit на етапі Discovery, ви також можете додати наступне для проведення оцінки вразливостей:
PowerSAP - інструмент Powershell для оцінки безпеки sap
Burp Suite - обов'язковий для фуззингу директорій та оцінки веб-безпеки
pysap - бібліотека Python для створення пакетів протоколу SAP
https://github.com/gelim/nmap-erpscan - допомога nmap у виявленні SAP/ERP
https://github.com/davehardy20/SAP-Stuff - скрипт для напівавтоматизації Bizploit
Параметр | Обмеження | Опис |
---|---|---|
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
auth/object_disabling_active
Y
Вказує, чи активне відключення об'єктів.
auth/rfc_authority_check
<2
Встановлює рівень перевірки повноважень для RFC.
auth/no_check_in_some_cases
Y
Вказує, чи обходяться перевірки в деяких випадках.
bdc/bdel_auth_check
FALSE
Визначає, чи застосовуються перевірки авторизації в BDC.
gw/reg_no_conn_info
<255
Обмежує кількість символів для інформації про реєстраційний номер з'єднання.
icm/security_log
2
Визначає рівень журналу безпеки для ICM (Менеджер Інтернет-комунікацій).
icm/server_port_0
Display
Вказує порт сервера для ICM (порт 0).
icm/server_port_1
Display
Вказує порт сервера для ICM (порт 1).
icm/server_port_2
Display
Вказує порт сервера для ICM (порт 2).
login/password_compliance_to_current_policy
0
Зобов'язує дотримуватися політики паролів.
login/no_automatic_user_sapstar
0
Вимикає автоматичне призначення користувача SAPSTAR.
login/min_password_specials
0
Мінімальна кількість спеціальних символів, що вимагаються в паролях.
login/min_password_lng
<8
Мінімальна довжина, що вимагається для паролів.
login/min_password_lowercase
0
Мінімальна кількість малих літер, що вимагаються в паролях.
login/min_password_uppercase
0
Мінімальна кількість великих літер, що вимагаються в паролях.
login/min_password_digits
0
Мінімальна кількість цифр, що вимагаються в паролях.
login/min_password_letters
1
Мінімальна кількість літер, що вимагаються в паролях.
login/fails_to_user_lock
<5
Кількість невдалих спроб входу перед блокуванням облікового запису користувача.
login/password_expiration_time
>90
Час закінчення терміну дії пароля в днях.
login/password_max_idle_initial
<14
Максимальний час простою в хвилинах перед вимогою повторного введення пароля (початковий).
login/password_max_idle_productive
<180
Максимальний час простою в хвилинах перед вимогою повторного введення пароля (продуктивний).
login/password_downwards_compatibility
0
Вказує, чи увімкнено зворотну сумісність для паролів.
rfc/reject_expired_passwd
0
Визначає, чи відхиляються прострочені паролі для RFC (Віддалені функціональні виклики).
rsau/enable
0
Увімкнення або вимкнення перевірок RS AU (Авторизація).
rdisp/gui_auto_logout
<5
Вказує час у хвилинах перед автоматичним виходом з сеансів GUI.
service/protectedwebmethods
SDEFAULT
Вказує стандартні налаштування для захищених веб-методів.
snc/enable
0
Увімкнення або вимкнення захищеної мережевої комунікації (SNC).
ucon/rfc/active
0
Активує або деактивує UCON (Уніфіковане з'єднання) RFC.