Pentesting SAP
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
SAP oznacza Systemy Aplikacji i Produktów w Przetwarzaniu Danych. SAP, z definicji, jest również nazwą oprogramowania ERP (Enterprise Resource Planning) oraz nazwą firmy. System SAP składa się z szeregu w pełni zintegrowanych modułów, które obejmują praktycznie każdy aspekt zarządzania biznesem.
Każda instancja SAP (lub SID) składa się z trzech warstw: bazy danych, aplikacji i prezentacji), każdy krajobraz zazwyczaj składa się z czterech instancji: dev, test, QA i produkcja. Każda z warstw może być w pewnym stopniu wykorzystana, ale największy efekt można uzyskać poprzez atak na bazę danych.
Każda instancja SAP jest podzielona na klientów. Każdy z nich ma użytkownika SAP*, odpowiednik „root” w aplikacji. Podczas początkowego tworzenia, ten użytkownik SAP* otrzymuje domyślne hasło: „060719992” (więcej domyślnych haseł poniżej). Byłbyś zaskoczony, gdybyś wiedział, jak często te hasła nie są zmieniane w środowiskach testowych lub deweloperskich!
Spróbuj uzyskać dostęp do powłoki dowolnego serwera, używając nazwy użytkownika <SID>adm. Bruteforcing może pomóc, jednak może istnieć mechanizm blokady konta.
Następna sekcja pochodzi głównie z https://github.com/shipcod3/mySapAdventures od użytkownika shipcod3!
Sprawdź Zakres Aplikacji lub Krótkie Opis Programu do testowania. Zwróć uwagę na nazwy hostów lub instancje systemu do łączenia się z SAP GUI.
Użyj OSINT (open source intelligence), Shodan i Google Dorks, aby sprawdzić pliki, subdomeny i cenne informacje, jeśli aplikacja jest dostępna w Internecie lub publiczna:
Oto jak wygląda http://SAP:50000/irj/portal
Użyj nmap, aby sprawdzić otwarte porty i znane usługi (routery sap, webdnypro, usługi webowe, serwery webowe itp.)
Przeszukaj adresy URL, jeśli działa serwer webowy.
Fuzzuj katalogi (możesz użyć Burp Intruder), jeśli na określonych portach działają serwery webowe. Oto kilka dobrych list słów dostarczonych przez projekt SecLists do znajdowania domyślnych ścieżek SAP ICM i innych interesujących katalogów lub plików:
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
Użyj pomocniczego modułu Metasploit SAP SERVICE DISCOVERY do enumeracji instancji/usług/komponentów SAP:
Oto polecenie do połączenia z SAP GUI
sapgui <sap server hostname> <system number>
Sprawdź domyślne dane logowania (W klasyfikacji podatkowej podatności Bugcrowd, jest to uważane za P1 -> Błąd konfiguracji zabezpieczeń serwera | Używanie domyślnych danych logowania | Serwer produkcyjny):
Uruchom Wireshark, a następnie uwierzytelnij się w kliencie (SAP GUI) używając danych logowania, które otrzymałeś, ponieważ niektórzy klienci przesyłają dane logowania bez SSL. Istnieją dwa znane wtyczki do Wireshark, które mogą analizować główne nagłówki używane przez protokół SAP DIAG: wtyczka SecureAuth Labs SAP dissection oraz wtyczka SAP DIAG od Positive Research Center.
Sprawdź pod kątem eskalacji uprawnień, takich jak używanie niektórych kodów transakcji SAP (tcodes) dla użytkowników o niskich uprawnieniach:
SU01 - Aby tworzyć i utrzymywać użytkowników
SU01D - Aby wyświetlać użytkowników
SU10 - Do masowej konserwacji
SU02 - Do ręcznego tworzenia profili
SM19 - Audyt bezpieczeństwa - konfiguracja
SE84 - System informacyjny dla autoryzacji SAP R/3
Sprawdź, czy możesz wykonywać polecenia systemowe / uruchamiać skrypty w kliencie.
Sprawdź, czy możesz przeprowadzić XSS na BAPI Explorer
Przeszukaj adresy URL (zobacz fazę odkrywania).
Fuzzuj adresy URL jak w fazie odkrywania. Oto jak wygląda http://SAP:50000/index.html:
Szukaj powszechnych luk w zabezpieczeniach webowych (Zobacz OWASP Top 10), ponieważ w niektórych miejscach występują luki XSS, RCE, XXE itp.
Sprawdź metodologię Jasona Haddixa “The Bug Hunters Methodology” do testowania luk w zabezpieczeniach webowych.
Ominięcie uwierzytelnienia przez manipulację metodą? Może :)
Otwórz http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#
, a następnie naciśnij przycisk “Wybierz”, a potem w otwartym oknie naciśnij “Szukaj”. Powinieneś zobaczyć listę użytkowników SAP (Odnośnik do luki: ERPSCAN-16-010)
Czy dane logowania są przesyłane przez HTTP? Jeśli tak, to jest to uznawane za P3 na podstawie Vulnerability Rating Taxonomy Bugcrowd: Uszkodzona autoryzacja i zarządzanie sesjami | Słaba funkcja logowania przez HTTP. Wskazówka: Sprawdź również http://SAP:50000/startPage lub portale logowania :)
Spróbuj /irj/go/km/navigation/
w celu możliwego wylistowania katalogu lub ominięcia uwierzytelnienia
http://SAP/sap/public/info zawiera kilka interesujących informacji:
Jeśli masz poprawne dane logowania podczas pentestów lub udało ci się zalogować do SAP GUI za pomocą podstawowych poświadczeń, możesz sprawdzić wartości parametrów. Wiele podstawowych i niestandardowych wartości parametrów konfiguracyjnych jest uważanych za luki.
Możesz sprawdzić wartości parametrów zarówno ręcznie, jak i automatycznie, używając skryptów (np. SAP Parameter Validator).
Przechodząc do kodu transakcji RSPFPAR
, możesz zapytać o różne parametry i sprawdzić ich wartości.
Tabela poniżej zawiera zdefiniowane parametry oraz warunki, na podstawie których są one rozróżniane.
Na przykład, jeśli gw/reg_no_conn_info jest ustawione na mniej niż 255 (<255
), powinno być to uznawane za zagrożenie. Podobnie, jeśli icm/security_log jest równe dwa (2
), również będzie to możliwe zagrożenie.
Ze względu na liczbę parametrów, możliwe jest również wyeksportowanie ich wszystkich do pliku .XML i użycie skryptu SAPPV (SAP Parameter Validator), który sprawdzi wszystkie powyżej wymienione parametry i wydrukuje ich wartości z odpowiednim rozróżnieniem.
Sprawdź, czy działa na starych serwerach lub technologiach, takich jak Windows 2000.
Zaplanuj możliwe exploity / ataki, istnieje wiele modułów Metasploit do odkrywania SAP (moduły pomocnicze) i exploitów:
Spróbuj użyć znanych exploitów (sprawdź Exploit-DB) lub ataków, takich jak stary, ale dobry „SAP ConfigServlet Remote Code Execution” w SAP Portal:
Przed uruchomieniem polecenia start
w skrypcie bizploit na etapie Discovery, możesz również dodać następujące elementy do przeprowadzenia oceny podatności:
PowerSAP - Narzędzie Powershell do oceny bezpieczeństwa sap
Burp Suite - niezbędne do fuzzingu katalogów i ocen bezpieczeństwa w sieci
pysap - Biblioteka Pythona do tworzenia pakietów protokołu sieciowego SAP
https://github.com/gelim/nmap-erpscan - Pomoc nmap w wykrywaniu SAP/ERP
https://github.com/davehardy20/SAP-Stuff - skrypt do półautomatyzacji Bizploit
Parametr | Ograniczenie | Opis |
---|---|---|
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
auth/object_disabling_active
Y
Wskazuje, czy dezaktywacja obiektów jest aktywna.
auth/rfc_authority_check
<2
Ustala poziom kontroli uprawnień dla RFC.
auth/no_check_in_some_cases
Y
Określa, czy kontrole są pomijane w niektórych przypadkach.
bdc/bdel_auth_check
FALSE
Określa, czy kontrole autoryzacji są egzekwowane w BDC.
gw/reg_no_conn_info
<255
Ogranicza liczbę znaków dla informacji o numerze rejestracyjnym połączenia.
icm/security_log
2
Definiuje poziom logowania bezpieczeństwa dla ICM (Internet Communication Manager).
icm/server_port_0
Display
Określa port serwera dla ICM (port 0).
icm/server_port_1
Display
Określa port serwera dla ICM (port 1).
icm/server_port_2
Display
Określa port serwera dla ICM (port 2).
login/password_compliance_to_current_policy
0
Egzekwuje zgodność haseł z aktualną polityką.
login/no_automatic_user_sapstar
0
Dezaktywuje automatyczne przypisanie użytkownika SAPSTAR.
login/min_password_specials
0
Minimalna liczba znaków specjalnych wymagana w hasłach.
login/min_password_lng
<8
Minimalna długość wymagana dla haseł.
login/min_password_lowercase
0
Minimalna liczba małych liter wymagana w hasłach.
login/min_password_uppercase
0
Minimalna liczba dużych liter wymagana w hasłach.
login/min_password_digits
0
Minimalna liczba cyfr wymagana w hasłach.
login/min_password_letters
1
Minimalna liczba liter wymagana w hasłach.
login/fails_to_user_lock
<5
Liczba nieudanych prób logowania przed zablokowaniem konta użytkownika.
login/password_expiration_time
>90
Czas wygaśnięcia hasła w dniach.
login/password_max_idle_initial
<14
Maksymalny czas bezczynności w minutach przed wymaganiem ponownego wprowadzenia hasła (początkowy).
login/password_max_idle_productive
<180
Maksymalny czas bezczynności w minutach przed wymaganiem ponownego wprowadzenia hasła (produktywny).
login/password_downwards_compatibility
0
Określa, czy włączona jest kompatybilność wsteczna dla haseł.
rfc/reject_expired_passwd
0
Określa, czy wygasłe hasła są odrzucane dla RFC (Remote Function Calls).
rsau/enable
0
Włącza lub wyłącza kontrole RS AU (Autoryzacja).
rdisp/gui_auto_logout
<5
Określa czas w minutach przed automatycznym wylogowaniem sesji GUI.
service/protectedwebmethods
SDEFAULT
Określa domyślne ustawienia dla chronionych metod webowych.
snc/enable
0
Włącza lub wyłącza Bezpieczną Komunikację Sieciową (SNC).
ucon/rfc/active
0
Aktywuje lub dezaktywuje RFC UCON (Unified Connectivity).