OWASP of Open Web Security Project is een liefdadigheidsorganisatie zonder winstoogmerk die zich richt op het verbeteren van de beveiliging van software en webapplicaties.
De organisatie publiceert een lijst met de belangrijkste kwetsbaarheden op het gebied van webbeveiliging op basis van de gegevens van verschillende beveiligingsorganisaties.
De kwetsbaarheden op het gebied van webbeveiliging krijgen voorrang op basis van exploiteerbaarheid, detecteerbaarheid en impact op software.
- Exploiteerbaarheid -
Wat is er nodig om het beveiligingsprobleem te misbruiken? Hoogste misbruikbaarheid wanneer de aanval alleen een webbrowser nodig heeft en de laagste geavanceerde programmering en tools.
- Detecteerbaarheid -
Hoe gemakkelijk is het om de dreiging te detecteren? De hoogste is de informatie die wordt weergegeven op de URL, het formulier of foutbericht en de laagste is de broncode.
- Impact of schade -
Hoeveel schade wordt er aangericht als het beveiligingslek wordt blootgesteld of aangevallen? De hoogste is een complete systeemcrash en de laagste is helemaal niets.
Het belangrijkste doel van OWASP Top 10 is om de ontwikkelaars, ontwerpers, managers, architecten en organisaties voor te lichten over de belangrijkste beveiligingslekken.
De Top 10 beveiligingsproblemen volgens OWASP Top 10 zijn:
- SQL injectie
- Cross-site scripting
- Gebroken authenticatie en sessiebeheer
- Onveilige verwijzingen naar directe objecten
- Cross Site Request Forgery
- Verkeerde configuratie van de beveiliging
- Onveilige cryptografische opslag
- URL-toegang kan niet worden beperkt
- Onvoldoende bescherming van de transportlaag
- Ongeldige omleidingen en forwards
SQL injectie
Omschrijving
Injection is een beveiligingsprobleem waardoor een aanvaller SQL-instructies in de backend kan wijzigen door de door de gebruiker aangeleverde gegevens te manipuleren.
Injectie vindt plaats wanneer de gebruikersinvoer naar een tolk wordt gestuurd als onderdeel van een commando of query en de tolk misleidt om onbedoelde opdrachten uit te voeren en toegang geeft tot ongeautoriseerde gegevens.
De SQL-opdracht die, wanneer uitgevoerd door een webapplicatie, ook de back-enddatabase kan blootleggen.
Implicatie
- Een aanvaller kan schadelijke inhoud in de kwetsbare velden injecteren.
- Gevoelige gegevens zoals gebruikersnamen, wachtwoorden, enz. Kunnen uit de database worden gelezen.
- Databasegegevens kunnen worden gewijzigd (invoegen / bijwerken / verwijderen).
- Beheerbewerkingen kunnen worden uitgevoerd op de database
Kwetsbare objecten
- Invoervelden
- URL's die interactie hebben met de database.
Voorbeelden:
- SQL-injectie op de inlogpagina
Inloggen bij een applicatie zonder geldige inloggegevens.
Geldige gebruikersnaam is beschikbaar en wachtwoord is niet beschikbaar.
Test-URL: http://demo.testfire.net/default.aspx
Gebruikersnaam: sjones
Wachtwoord: 1 = 1 'of pass123
SQL-query gemaakt en verzonden naar Interpreter zoals hieronder
SELECTEER * UIT gebruikers WAAR gebruikersnaam = sjones EN wachtwoord = 1 = 1 'of pass123;
Aanbevelingen
- White opsomming van de invoervelden
- Geef geen gedetailleerde foutmeldingen weer die nuttig zijn voor een aanvaller.
Cross-site scripting
Omschrijving
Cross Site Scripting is ook kort bekend als XSS.
XSS-kwetsbaarheden richten zich op scripts die zijn ingesloten in een pagina en die worden uitgevoerd aan de clientzijde, dwz de gebruikersbrowser in plaats van aan de serverzijde. Deze fouten kunnen optreden wanneer de toepassing niet-vertrouwde gegevens neemt en deze zonder de juiste validatie naar de webbrowser verzendt.
Aanvallers kunnen XSS gebruiken om kwaadaardige scripts uit te voeren op de gebruikers, in dit geval slachtofferbrowsers. Aangezien de browser niet kan weten of het script betrouwbaar is of niet, wordt het script uitgevoerd en kan de aanvaller sessiecookies kapen, websites beschadigen of de gebruiker omleiden naar ongewenste en kwaadaardige websites.
XSS is een aanval waarmee de aanvaller de scripts in de browser van het slachtoffer kan uitvoeren.
Implicatie:
- Door gebruik te maken van dit beveiligingsprobleem, kan een aanvaller scripts in de toepassing injecteren, sessiecookies stelen, websites beschadigen en malware op de computers van het slachtoffer uitvoeren.
Kwetsbare objecten
- Invoervelden
- URL's
Voorbeelden
1. http://www.vulnerablesite.com/home?" < script > alert(" xss") script >
Wanneer het bovenstaande script in een browser wordt uitgevoerd, wordt een berichtvenster weergegeven als de site kwetsbaar is voor XSS.
De serieuzere aanval kan worden gedaan als de aanvaller sessiecookies wil weergeven of opslaan.
2. http://demo.testfire.net/search.aspx?txtSearch width = 500 hoogte 500>
Wanneer het bovenstaande script wordt uitgevoerd, laadt de browser een onzichtbaar frame dat naar http://google.com verwijst .
De aanval kan ernstig worden gemaakt door een kwaadaardig script in de browser uit te voeren.
Aanbevelingen
- White Listing invoervelden
- Input Output codering
Gebroken authenticatie en sessiebeheer
Omschrijving
De websites creëren meestal een sessiecookie en sessie-ID voor elke geldige sessie, en deze cookies bevatten gevoelige gegevens zoals gebruikersnaam, wachtwoord, enz. Wanneer de sessie wordt beëindigd door uit te loggen of de browser abrupt te sluiten, moeten deze cookies ongeldig worden gemaakt, dwz voor elke sessie er zou een nieuw koekje moeten zijn.
Als de cookies niet ongeldig worden gemaakt, zullen de gevoelige gegevens in het systeem aanwezig zijn. Als een gebruiker bijvoorbeeld een openbare computer (Cyber Cafe) gebruikt, worden de cookies van de kwetsbare site op het systeem opgeslagen en blootgesteld aan een aanvaller. Een aanvaller gebruikt dezelfde openbare computer na enige tijd, de gevoelige gegevens zijn gecompromitteerd.
Op dezelfde manier sluit een gebruiker die een openbare computer gebruikt, zich abrupt af in plaats van uit te loggen. Een aanvaller gebruikt hetzelfde systeem, wanneer hij dezelfde kwetsbare site bezoekt, wordt de vorige sessie van het slachtoffer geopend. De aanvaller kan doen wat hij wil, door profielinformatie, creditcardinformatie, enz. Te stelen.
Er moet een controle worden uitgevoerd om de sterkte van de authenticatie en het sessiebeheer te vinden. Sleutels, sessietokens en cookies moeten correct worden geïmplementeerd zonder wachtwoorden in gevaar te brengen.
Kwetsbare objecten
- Sessie-ID's die op de URL worden weergegeven, kunnen leiden tot een aanval met sessiefixatie.
- Sessie-ID's hetzelfde voor en na uitloggen en inloggen.
- Sessietime-outs zijn niet correct geïmplementeerd.
- De applicatie wijst dezelfde sessie-ID toe aan elke nieuwe sessie.
- Geverifieerde delen van de applicatie zijn beveiligd met SSL en wachtwoorden worden opgeslagen in een gehashte of gecodeerde indeling.
- De sessie kan worden hergebruikt door een gebruiker met beperkte rechten.
Implicatie
- Door gebruik te maken van deze kwetsbaarheid kan een aanvaller een sessie kapen, ongeautoriseerde toegang krijgen tot het systeem waardoor ongeautoriseerde informatie openbaar kan worden gemaakt en gewijzigd.
- De sessies kunnen worden verhoogd met gestolen cookies of sessies met XSS.
Voorbeelden
- Vliegtuigreserveringstoepassing ondersteunt het herschrijven van URL's, waarbij sessie-ID's in de URL worden geplaatst:
http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Verkoop van tickets naar Malediven)
Een geauthenticeerde gebruiker van de site wil zijn vrienden op de hoogte stellen van de verkoop en stuurt een e-mail door. De vrienden ontvangen de sessie-ID en kunnen worden gebruikt om ongeautoriseerde wijzigingen aan te brengen of om de opgeslagen creditcardgegevens te misbruiken.
- Een applicatie is kwetsbaar voor XSS, waardoor een aanvaller toegang kan krijgen tot de sessie-ID en kan worden gebruikt om de sessie te kapen.
- Time-outs van applicaties zijn niet correct ingesteld. De gebruiker gebruikt een openbare computer en sluit de browser in plaats van uit te loggen en weg te lopen. De aanvaller gebruikt enige tijd later dezelfde browser en de sessie wordt geverifieerd.
Aanbevelingen
- Alle vereisten voor authenticatie en sessiebeheer moeten worden gedefinieerd volgens de OWASP Application Security Verification Standard.
- Geef nooit inloggegevens weer in URL's of logboeken.
- Er moeten ook grote inspanningen worden geleverd om XSS-fouten te voorkomen die kunnen worden gebruikt om sessie-ID's te stelen.
Onveilige verwijzingen naar directe objecten
Omschrijving
Het komt voor wanneer een ontwikkelaar een verwijzing naar een intern implementatieobject blootlegt, zoals een bestand, directory of databasesleutel zoals in URL of als een FORM-parameter. De aanvaller kan deze informatie gebruiken om toegang te krijgen tot andere objecten en kan een toekomstige aanval uitvoeren om toegang te krijgen tot de ongeautoriseerde gegevens.
Implicatie
- Met behulp van deze kwetsbaarheid kan een aanvaller toegang krijgen tot ongeautoriseerde interne objecten, gegevens wijzigen of de applicatie compromitteren.
Kwetsbare objecten
- In de URL.
Voorbeelden:
Door "userid" in de volgende URL te wijzigen, kan een aanvaller de informatie van andere gebruikers bekijken.
http://www.vulnerablesite.com/userid=123 Gewijzigd naar http://www.vulnerablesite.com/userid=124
Een aanvaller kan informatie van anderen bekijken door de waarde van de gebruikers-ID te wijzigen.
Aanbevelingen:
- Voer toegangscontrolecontroles uit.
- Vermijd het tonen van objectreferenties in URL's.
- Verifieer autorisatie voor alle referentieobjecten.
Cross Site Request Forgery
Omschrijving
Cross Site Request Forgery is een vervalst verzoek afkomstig van de cross-site.
CSRF-aanval is een aanval die plaatsvindt wanneer een kwaadwillende website, e-mail of programma ervoor zorgt dat de browser van een gebruiker een ongewenste actie uitvoert op een vertrouwde site waarvoor de gebruiker momenteel is geverifieerd.
Een CSRF-aanval dwingt de browser van een aangemeld slachtoffer om een vervalst HTTP-verzoek, inclusief de sessiecookie van het slachtoffer en andere automatisch opgenomen authenticatiegegevens, naar een kwetsbare webapplicatie te sturen.
Een link wordt door de aanvaller naar het slachtoffer gestuurd wanneer de gebruiker op de URL klikt wanneer hij is ingelogd op de oorspronkelijke website, de gegevens worden van de website gestolen.
Implicatie
- Door dit beveiligingslek als aanvaller te gebruiken, kunt u informatie over het gebruikersprofiel wijzigen, de status wijzigen, een nieuwe gebruiker aanmaken namens de beheerder, enz.
Kwetsbare objecten
- Gebruikersprofielpagina
- Formulieren voor gebruikersaccounts
- Zakelijke transactie pagina
Voorbeelden
Het slachtoffer is ingelogd op een bankwebsite met geldige inloggegevens. Hij ontvangt mail van een aanvaller die zegt: "Klik hier om $ 1 te doneren voor het goede doel."
Wanneer het slachtoffer erop klikt, wordt een geldig verzoek aangemaakt om $ 1 te doneren aan een bepaald account.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
De aanvaller vangt dit verzoek op en maakt het onderstaande verzoek en sluit het in een knop in met de tekst "Ik steun de oorzaak".
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Aangezien de sessie is geverifieerd en het verzoek via de website van de bank komt, maakt de server $ 1000 dollar over naar de aanvaller.
Aanbeveling
- Verplicht de aanwezigheid van de gebruiker tijdens het uitvoeren van gevoelige acties.
- Implementeer mechanismen zoals CAPTCHA, herverificatie en unieke verzoektokens.
Verkeerde configuratie van de beveiliging
Omschrijving
Beveiligingsconfiguratie moet worden gedefinieerd en geïmplementeerd voor de applicatie, frameworks, applicatieserver, webserver, databaseserver en platform. Als deze correct zijn geconfigureerd, kan een aanvaller ongeautoriseerde toegang hebben tot gevoelige gegevens of functionaliteit.
Soms resulteren dergelijke gebreken in een volledige compromittering van het systeem. Het up-to-date houden van de software is ook een goede beveiliging.
Implicatie
- Door gebruik te maken van deze kwetsbaarheid, kan de aanvaller de onderliggende technologie en de versie-informatie van de applicatieserver en database-informatie opsommen en informatie over de applicatie verkrijgen om nog enkele aanvallen uit te voeren.
Kwetsbare objecten
- URL
- Formuliervelden
- Invoervelden
Voorbeelden
- De beheerconsole van de toepassingsserver wordt automatisch geïnstalleerd en niet verwijderd. Standaardaccounts worden niet gewijzigd. De aanvaller kan inloggen met standaardwachtwoorden en kan ongeautoriseerde toegang krijgen.
- Directory Listing is niet uitgeschakeld op uw server. De aanvaller ontdekt en kan eenvoudig mappen weergeven om elk bestand te vinden.
Aanbevelingen
- Een sterke applicatiearchitectuur die zorgt voor een goede scheiding en beveiliging tussen de componenten.
- Verander standaard gebruikersnamen en wachtwoorden.
- Schakel directoryvermeldingen uit en implementeer toegangscontrolecontroles.
Onveilige cryptografische opslag
Omschrijving
Onveilige cryptografische opslag is een veelvoorkomende kwetsbaarheid die optreedt wanneer de gevoelige gegevens niet veilig worden opgeslagen.
De gebruikersgegevens, profielinformatie, gezondheidsgegevens, creditcardgegevens, enz. Vallen onder gevoelige gegevensinformatie op een website.
Deze gegevens worden opgeslagen in de applicatiedatabase. Als deze gegevens onjuist worden opgeslagen door geen gebruik te maken van encryptie of hashing *, zijn ze kwetsbaar voor de aanvallers.
(* Hashing is de transformatie van de tekenreeks-tekens in kortere tekenreeksen met een vaste lengte of een sleutel. Om de tekenreeks te ontsleutelen, moet het algoritme dat wordt gebruikt om de sleutel te vormen beschikbaar zijn)
Implicatie
- Door gebruik te maken van deze kwetsbaarheid kan een aanvaller stelen, dergelijke zwak beschermde gegevens wijzigen om identiteitsdiefstal, creditcardfraude of andere misdrijven te plegen.
Kwetsbare objecten
- Toepassingsdatabase.
Voorbeelden
In een van de banktoepassingen gebruikt de wachtwoorddatabase ongezouten hashes * om ieders wachtwoorden op te slaan. Door een fout in SQL-injectie kan de aanvaller het wachtwoordbestand achterhalen. Alle ongezouten hashes kunnen in een mum van tijd bruut worden afgedwongen, terwijl de gezouten wachtwoorden duizenden jaren zouden duren.
(* Unsalted Hashes - Salt is een willekeurige data die aan de originele data wordt toegevoegd. Salt wordt vóór hashing aan het wachtwoord toegevoegd)
Aanbevelingen
- Zorg voor geschikte sterke standaardalgoritmen. Maak geen eigen cryptografische algoritmen. Gebruik alleen goedgekeurde openbare algoritmen zoals AES, RSA-cryptografie met openbare sleutel en SHA-256, enz.
- Zorg ervoor dat externe back-ups zijn gecodeerd, maar de sleutels worden afzonderlijk beheerd en geback-upt.
URL-toegang kan niet worden beperkt
Omschrijving
Webapplicaties controleren URL-toegangsrechten voordat beveiligde links en knoppen worden weergegeven. Toepassingen moeten vergelijkbare toegangscontroles uitvoeren telkens wanneer deze pagina's worden geopend.
In de meeste toepassingen worden de geprivilegieerde pagina's, locaties en bronnen niet aan de geprivilegieerde gebruikers gepresenteerd.
Door een intelligente gok kan een aanvaller toegang krijgen tot privilegepagina's. Een aanvaller kan toegang krijgen tot gevoelige pagina's, functies oproepen en vertrouwelijke informatie bekijken.
Implicatie
- Door gebruik te maken van deze kwetsbaarheid kan de aanvaller toegang krijgen tot de ongeautoriseerde URL's, zonder in te loggen op de applicatie en de kwetsbaarheid te misbruiken. Een aanvaller kan toegang krijgen tot gevoelige pagina's, functies oproepen en vertrouwelijke informatie bekijken.
Kwetsbare objecten:
- URL's
Voorbeelden
- Aanvaller merkt op dat de URL de rol aangeeft als "/ user / getaccounts." Hij wijzigt als "/ admin / getaccounts".
- Een aanvaller kan een rol aan de URL toevoegen.
http://www.vulnerablsite.com kan worden gewijzigd als http://www.vulnerablesite.com/admin
Aanbevelingen
- Voer sterke toegangscontrolecontroles uit.
- Verificatie- en autorisatiebeleid moet op rollen zijn gebaseerd.
- Beperk de toegang tot ongewenste URL's.
Onvoldoende bescherming van de transportlaag
Omschrijving
Behandelt informatie-uitwisseling tussen de gebruiker (cliënt) en de server (applicatie). Toepassingen verzenden vaak gevoelige informatie zoals authenticatiegegevens, creditcardgegevens en sessietokens via een netwerk.
Door zwakke algoritmen te gebruiken of verlopen of ongeldige certificaten te gebruiken of geen SSL te gebruiken, kan de communicatie worden blootgesteld aan niet-vertrouwde gebruikers, wat een webtoepassing in gevaar kan brengen en / of gevoelige informatie kan stelen.
Implicatie
- Door gebruik te maken van deze kwetsbaarheid op het gebied van webbeveiliging, kan een aanvaller de legitieme gebruikersreferenties ruiken en toegang krijgen tot de applicatie.
- Kan creditcardgegevens stelen.
Kwetsbare objecten
- Gegevens verzonden via het netwerk.
Aanbevelingen
- Schakel beveiligde HTTP in en dwing overdracht van inloggegevens alleen af via HTTPS.
- Zorg ervoor dat uw certificaat geldig is en niet is verlopen.
Voorbeelden:
1. Een applicatie die geen gebruik maakt van SSL, een aanvaller zal gewoon het netwerkverkeer monitoren en een geverifieerde sessiecookie van het slachtoffer observeren. Een aanvaller kan dat koekje stelen en een Man-in-the-Middle-aanval uitvoeren.
Ongeldige omleidingen en forwards
Omschrijving
De webapplicatie gebruikt enkele methoden om gebruikers om te leiden naar en door te sturen naar andere pagina's voor een beoogd doel.
Als er geen goede validatie is tijdens het omleiden naar andere pagina's, kunnen aanvallers hiervan gebruik maken en slachtoffers omleiden naar phishing- of malwaresites, of forwards gebruiken om toegang te krijgen tot ongeautoriseerde pagina's.
Implicatie
- Een aanvaller kan een URL naar de gebruiker sturen die een echte URL bevat waaraan een gecodeerde kwaadaardige URL is toegevoegd. Een gebruiker kan door alleen het echte deel van de door de aanvaller verzonden URL te zien, erin bladeren en mogelijk slachtoffer worden.
Voorbeelden
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Gewijzigd naar
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Aanbevelingen
- Vermijd eenvoudig het gebruik van omleidingen en doorsturen in de applicatie. Indien gebruikt, gebruik geen gebruikersparameters bij het berekenen van de bestemming.
- Als de bestemmingsparameters niet kunnen worden vermeden, zorg er dan voor dat de opgegeven waarde geldig en geautoriseerd is voor de gebruiker.
Dit artikel is bijgedragen door Prasanthi Eati