Pentesting SAP
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SAP označava Sistemske Aplikacije i Proizvode u Obradi Podataka. SAP, po definiciji, je takođe naziv ERP (Planiranje Resursa Preduzeća) softvera kao i naziv kompanije. SAP sistem se sastoji od niza potpuno integrisanih modula, koji pokrivaju gotovo svaki aspekt upravljanja poslovanjem.
Svaka SAP instanca (ili SID) se sastoji od tri sloja: baze podataka, aplikacije i prezentacije), svaki pejzaž obično se sastoji od četiri instance: dev, test, QA i produkcija. Svaki od slojeva može biti iskorišćen do određene mere, ali se najveći efekat može postići napadom na bazu podataka.
Svaka SAP instanca je podeljena na klijente. Svaki od njih ima korisnika SAP*, ekvivalent aplikacije za “root”. Pri inicijalnom kreiranju, ovaj korisnik SAP* dobija podrazumevanu lozinku: “060719992” (više podrazumevanih lozinki u nastavku). Iznenadili biste se kada biste znali koliko često se ove lozinke ne menjaju u test ili dev okruženjima!
Pokušajte da dobijete pristup shell-u bilo kog servera koristeći korisničko ime <SID>adm. Bruteforcing može pomoći, međutim može postojati mehanizam za zaključavanje naloga.
Sledeći deo je uglavnom iz https://github.com/shipcod3/mySapAdventures od korisnika shipcod3!
Proverite Opseg Aplikacije ili Kratak Program za testiranje. Zabeležite imena hostova ili sistemske instance za povezivanje sa SAP GUI.
Koristite OSINT (otvorena obaveštajna sredstva), Shodan i Google Dorks da proverite datoteke, poddomene i sočne informacije ako je aplikacija dostupna na internetu ili javna:
Ovako izgleda http://SAP:50000/irj/portal
Koristite nmap za proveru otvorenih portova i poznatih usluga (sap ruteri, webdnypro, web usluge, web serveri, itd.)
Istražite URL-ove ako postoji web server.
Fuzzujte direktorijume (možete koristiti Burp Intruder) ako ima web servere na određenim portovima. Evo nekoliko dobrih lista reči koje je obezbedio SecLists Project za pronalaženje podrazumevanih SAP ICM putanja i drugih interesantnih direktorijuma ili datoteka:
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
Koristite SAP SERVICE DISCOVERY pomoćni Metasploit modul za enumeraciju SAP instanci/usluga/komponenti:
Here is the command to connect to SAP GUI
sapgui <sap server hostname> <system number>
Proverite podrazumevane akreditive (U Bugcrowd-ovoj Taksonomiji Ocene Ranljivosti, ovo se smatra P1 -> Server Security Misconfiguration | Using Default Credentials | Production Server):
Pokrenite Wireshark, a zatim se autentifikujte na klijenta (SAP GUI) koristeći kredencijale koje ste dobili, jer neki klijenti prenose kredencijale bez SSL-a. Postoje dva poznata dodatka za Wireshark koja mogu analizirati glavne zaglavlja koja koristi SAP DIAG protokol: SecureAuth Labs SAP dissection plug-in i SAP DIAG plugin by Positive Research Center.
Proverite za eskalacije privilegija kao što su korišćenje nekih SAP Transaction Codes (tcodes) za korisnike sa niskim privilegijama:
SU01 - Za kreiranje i održavanje korisnika
SU01D - Za prikazivanje korisnika
SU10 - Za masovno održavanje
SU02 - Za ručno kreiranje profila
SM19 - Bezbednosna revizija - konfiguracija
SE84 - Informacioni sistem za SAP R/3 autorizacije
Proverite da li možete izvršavati sistemske komande / pokretati skripte u klijentu.
Proverite da li možete uraditi XSS na BAPI Explorer
Istražite URL-ove (vidi fazu otkrivanja).
Fuzz-ujte URL-ove kao u fazi otkrivanja. Ovako izgleda http://SAP:50000/index.html:
Potražite uobičajene web ranjivosti (Pogledajte OWASP Top 10) jer postoje XSS, RCE, XXE, itd. ranjivosti na nekim mestima.
Pogledajte metodologiju Jasona Haddixa “The Bug Hunters Methodology” za testiranje web ranjivosti.
Auth Bypass putem manipulacije verbom? Možda :)
Otvorite http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#
, zatim pritisnite dugme “Choose” i u otvorenom prozoru pritisnite “Search”. Trebalo bi da možete da vidite listu SAP korisnika (Referenca ranjivosti: ERPSCAN-16-010)
Da li su kredencijali poslati preko HTTP-a? Ako jeste, smatra se P3 prema Bugcrowd-ovoj Vulnerability Rating Taxonomy: Slomljena autentifikacija i upravljanje sesijama | Slaba funkcija prijavljivanja preko HTTP-a. Savet: Pogledajte i http://SAP:50000/startPage ili portale za prijavu :)
Pokušajte /irj/go/km/navigation/
za moguću listu direktorijuma ili zaobiđanje autentifikacije
http://SAP/sap/public/info sadrži neke sočne informacije:
Ako imate tačne podatke za prijavu tokom pentest-a ili ste uspeli da se prijavite na SAP GUI koristeći osnovne akreditive, možete proveriti vrednosti parametara. Mnoge osnovne i prilagođene vrednosti konfiguracionih parametara se smatraju ranjivostima.
Možete proveriti vrednosti parametara kako ručno, tako i automatski, koristeći skripte (npr. SAP Parameter Validator).
Navigacijom do Transakcijskog Koda RSPFPAR
, možete upititi različite parametre i potražiti njihove vrednosti.
Tabela ispod sadrži definisane parametre i uslove po kojima su razlikovani.
Na primer, ako je gw/reg_no_conn_info postavljen na manje od 255 (<255
), onda bi to trebalo smatrati pretnjom. Slično, ako je icm/security_log jednak dva (2
), to će takođe biti moguća pretnja.
Zbog broja parametara, takođe je moguće eksportovati sve njih u .XML datoteku i koristiti skriptu SAPPV (SAP Parameter Validator), koja će proveriti sve gore pomenute parametre i ispisati njihove vrednosti sa odgovarajućim razlikovanjem.
Proverite da li radi na starim serverima ili tehnologijama kao što je Windows 2000.
Planirajte moguće eksploate / napade, postoji mnogo Metasploit modula za SAP otkrivanje (auxiliary modules) i eksploate:
Pokušajte da koristite neke poznate eksploite (pogledajte Exploit-DB) ili napade poput starog, ali dobrog “SAP ConfigServlet Remote Code Execution” u SAP Portalu:
Pre pokretanja start
komande na bizploit skripti u fazi otkrivanja, možete takođe dodati sledeće za izvođenje procene ranjivosti:
PowerSAP - Powershell alat za procenu SAP bezbednosti
Burp Suite - neophodan za direktorijumsko fuzzing i procene web bezbednosti
pysap - Python biblioteka za kreiranje SAP mrežnih protokol paketa
https://github.com/gelim/nmap-erpscan - Pomaže nmap-u da detektuje SAP/ERP
https://github.com/davehardy20/SAP-Stuff - skripta za polu-automatizaciju Bizploit-a
Parametar | Ograničenje | Opis |
---|---|---|
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
auth/object_disabling_active
Y
Ukazuje da li je onemogućavanje objekta aktivno.
auth/rfc_authority_check
<2
Postavlja nivo provere ovlašćenja za RFC-ove.
auth/no_check_in_some_cases
Y
Precizira da li se provere zaobilaze u nekim slučajevima.
bdc/bdel_auth_check
FALSE
Određuje da li se provere ovlašćenja sprovode u BDC-u.
gw/reg_no_conn_info
<255
Ograničava broj karaktera za informacije o registracionom broju veze.
icm/security_log
2
Definiše nivo sigurnosnog loga za ICM (Internet Communication Manager).
icm/server_port_0
Display
Precizira port servera za ICM (port 0).
icm/server_port_1
Display
Precizira port servera za ICM (port 1).
icm/server_port_2
Display
Precizira port servera za ICM (port 2).
login/password_compliance_to_current_policy
0
Sprovodi usklađenost lozinki sa trenutnom politikom.
login/no_automatic_user_sapstar
0
Onemogućava automatsku dodelu korisnika SAPSTAR.
login/min_password_specials
0
Minimalan broj specijalnih karaktera zahtevan u lozinkama.
login/min_password_lng
<8
Minimalna dužina zahtevana za lozinke.
login/min_password_lowercase
0
Minimalan broj malih slova zahtevan u lozinkama.
login/min_password_uppercase
0
Minimalan broj velikih slova zahtevan u lozinkama.
login/min_password_digits
0
Minimalan broj cifara zahtevan u lozinkama.
login/min_password_letters
1
Minimalan broj slova zahtevan u lozinkama.
login/fails_to_user_lock
<5
Broj neuspelih pokušaja prijave pre zaključavanja korisničkog naloga.
login/password_expiration_time
>90
Vreme isteka lozinke u danima.
login/password_max_idle_initial
<14
Maksimalno vreme neaktivnosti u minutima pre nego što se zahteva ponovna prijava lozinke (početno).
login/password_max_idle_productive
<180
Maksimalno vreme neaktivnosti u minutima pre nego što se zahteva ponovna prijava lozinke (produktivno).
login/password_downwards_compatibility
0
Precizira da li je omogućena unazadna kompatibilnost za lozinke.
rfc/reject_expired_passwd
0
Određuje da li se odbacuju istekle lozinke za RFC (Remote Function Calls).
rsau/enable
0
Omogućava ili onemogućava RS AU (Authorization) provere.
rdisp/gui_auto_logout
<5
Precizira vreme u minutima pre automatskog odjavljivanja GUI sesija.
service/protectedwebmethods
SDEFAULT
Precizira podrazumevane postavke za zaštićene web metode.
snc/enable
0
Omogućava ili onemogućava Secure Network Communication (SNC).
ucon/rfc/active
0
Aktivira ili deaktivira UCON (Unified Connectivity) RFC-ove.