Penetrační testy API
Aplikace založené na architektuře Frontend, Backend potkávám při testech často. Součastí Backendu bývá API. Attack surface testu API, je poměrně malý. Test jsou specifické, zaměřené na nalezení zranitelností v autentizaci a v injekce paylodu pomocí fuzingu. Je vhodné je provádět jako Gray Box - šedivé. Zadavatel testu poskytne dokumentaci a uživatelský přístup. Black box testy API většinou nepřináší nová zjištění.|
Penetrační testy API od testera vyžadují pochopení toho jak API pracuje a jakým způsobem si předává parametry. Místa kde jsou uvedeny hodnoty parametrů jsou pro nás důležité, při testu hodnoty fuzujeme. Většinou to bývá část URL a datový payload http packetu. Struktura data payloadu může být ve tvaru JSON, XML, případně binární data kódovaná base64. Autentizace požadavků bývá zabezpečena bear tokenem a někdy i dalším klíčem. Platnost tokenu by měla být časově omezena.
Při komunikaci s API se využívají kromě běžných metod GET, POST i metody DELETE, PUT. To je vhodné při testech zohlednit a fuzzovat všechny metody.
Reconnaissance
Základní OSINT cíle - postup krok za krokem
- Kontrola SSL pomocí SSLLabs a testssl.sh
- Vulnerability scan ip adresy API serveru. Může být pasivní pomocí shodan nebo censys vhodné doplnit vulenrability scaner (OpenVas, Nessus, Rapid InsightVM )
- NMAP scan otevřených portů
- Banner grabbing základního požadavku na testovanou službu (GET /)
- Dekompozice Bear tokenu https://jwt.io/
Fuzzing parametru - setup testu
Komponety testu
Postup při testování
- Pomocí Swager vygenerujeme API požadavek
- Spustíme curl odešleme požadavek na server
- Požadavek zachytíme na intercepting proxy a začneme fuzzovat parametry
- Vyhodnocujeme odpovědi, Hledáme chybová hlášení a mapujeme architekturu řešení
Injekce - nejčastější identifikované zranitelností
- XSS Cross Site Scripting - injektujeme JavaScript do dat a při zobrazení na frontendu dojde ke s spuštění Java Script kódu. Při využitím této zranitelnosti můžeme například zahookovat browser a získat parametry ze session pomocí BEEF
- Náchylnost na SQL Injekce, testujeme tamperingem parametru na horní apostrof '. Automaticky pomocí SQLMap
- XXE XML External Entity attack. XML parsery jsou komplexní software a mají spoustu funkcí. Někdy se podaří získat pomocí této zranitelností přístup k lokální souborů k souborům připojených systémů
Zmírnění rizik - mitigace
Účinná obrana, která zabrání vzniku zranitelnosti vyžaduje komplexní přístup. Je vhodné oddělovat data od příkazů. Důsledně validovat, sanitizovat a neutralizovat uživatelské vstupy. Aplikovat přístup Zero-Trust. Obsloužit všechny výjimky a kontrolovat návratové kódy funkci a procedur.
Komentáře
Okomentovat