DEMO PENTEST VOOR EDUCATIEVE DOELEINDE. HET GAAT HIER OM EEN FICTIEF BEDRIJF.
'Inet Veilingen'
Security Pentest
18 Januari 2016 Uitgevoerde Test(s):
1. Blackbox Security Pentest 2. Greybox Security Pentest
Contact: Maarten Schermer maartenschermer.com Document Versie: 2.0
Management Samenvatting Dit is een rapport van een penetratie test, hierna te noemen pentest. Er zijn hiervoor diverse technische onderzoeken zijn gedaan naar de veiligheid van het systeem van Inet Veilingen: 1. Beveiliging van de webservice 2. Beveiliging van de server Het doel van de pentest is om aan te tonen dat de server beveiligt is tegen diverse pogingen van malicious gebruik. Wanneer er binnen enkele dagen in het systeem kan worden ingebroken is de omgeving niet veilig. De volgende kwetsbaarheden zijn aangetroffen in op de server: 1. 2. 3. 4. 5. 6. 7.
Zeer zwak root wachtwoord Verouderde software met kwetsbaarheden Vergroot risico voor Ddos aanvallen Path traversal Cross site scripting (XSS) Cross site request forgery (CSRF) Missing session regeneration
Toegang verkregen via: Domein: Gebruiker: Server IP :
VPN vpnseclab.fhict.nl i292619 192.168.6.19
Woordenlijst (termen) Blackbox Test Anonieme test zonder dat je login gegevens hebt of meer informatie over de interne werking of configuratie. Command Een linux terminal command. CSRF Door middel van Cross-Site Request Forgery kan ervoor gezorgt worden dat de gebruiker bijv. zonder te weten op een button van een andere site aanklikt, waarbij de gebruiker is ingelogd. Encryption Versleuteling van data. Greybox Test Test waarin de functionaliteit achter de login wordt getest met gegeven testaccounts. HTTP Een applicatie protocol die gebruikt maakt van port 80. Hiermee wordt een website geladen. HTTPS Een applicatie protocol die gebruikt maakt van port 443. Hiermee wordt door middel van encryption een website geladen. Port scan Een scan die alle mogelijke poorten weergeeft waarop software draait, zoals bijv. Een webserver. Prioriteit De prioriteit kan 'Laag', 'Gemiddeld', 'Hoog' of 'Zeer Hoog' zijn. SQL Injection SQL commando's toevoegen aan user input, waardoor bijv. delen van de query niet uitgevoerd worden of er juist extra dingen worden toegevoegd. XSS Injection Door middel van Cross-Site Scriptiong (XSS) kan de session cookie worden opgevangen, waarmee een gebruiker geauthenticeerd wordt.
1.1 Path traversal Wat is traversable? Via index.php pagina's kan via de GET parameter 'content' een path traversal worden uitgevoerd. Er wordt kennelijk '.php' waarde achter de waarde van content parameter gezet, waardoor alle files zonder de .php extensie niet traversable zijn. Via index.php?content=categorie (en index.php?content=product) kan door de GET parameter 'sidebar' een path traversal worden uitgeboerd die dezelfde kwetsbaarheid heeft als de GET parameter 'content'.
Advies Zorg dat de 'content' GET parameter en 'sidebar' GET parameter op een juiste manier wordt gefiltered. Zie ook: https://www.owasp.org/index.php/File_System#Path_traversal
Prioriteit Hoog
Consequenties De content parameter kan gebruikt worden voor het ophalen van alle php pagina's. Ook kan er door middel van ../index een oneindige loop worden gecreerd, dit kan worden gebruikt voor een DDOS aanval. Requests
$_GET['content'] = '../index.php' $_GET['sidebar'] = '../index.php'
1.4 Sensitive information in html source Pagina's: - index.php?content=contact Gevonden informatie:
Advies Elke gebruiker van de website kan html commentaar lezen. Verwijder html commentaar met gevoelige informatie.
Prioriteit Laag
Consequenties De inloggegevens zijn getest via SSH en via index.php?content=login. Beide waren geen geldige inloggevens.
2.1 Open Ports Resultaten 22/tcp open ssh 80/tcp open http Beschrijving Uit de portscan is te concluderen dat port 22 en 80 open staan. Advies Indien SSH niet vereist is voor deze use case de port op 'closed' zetten. Prioriteit Gemiddeld Consequenties Als port 22 open blijft staan, is het mogelijk d.m.v. het root wachtwoord of private/public key toegang te krijgen tot deze server. Commands sudo nmap -sS 192.168.6.17
2.2 Root account met zwak wachtwoord Resultaten Username: root Password: root
Advies Verander uw root wachtwoord naar een sterk wachtwoord of maak gebruik van public/private key authentication.
Prioriteit Zeer Hoog
Consequenties Als een aanvaller toegang heeft tot root heeft de aanvaller toegang tot het gehele systeem. Alle bestanden en instellingen kunnen o.a. worden aangepast en/of verwijderd. Commands
$ ssh
[email protected] $ Enter password ← root
2.4 Verouderde Software 1/2 Resultaten Er zijn 204 updates beschikbaar voor de server.
Advies Voer commando 'sudo apt-get update && sudo apt-get upgrade' uit op de server om de software te updaten.
Prioriteit Hoog
Consequenties Indien niet regelmatig geupdate wordt, is de server vatbaar voor beveiligingslekken van veroudere software. Commands
$ sudo apt-get install apt-show-versions $ sudo apt-show-versions -u
2.4 Verouderde Software 2/2 Zie ook: bijlage/apache-2.2.2-vulnerabilities.pdf
3.3 HTTPS Only Test Port(en) 443 - Closed Test Pagina's https://192.168.6.19/index.php https://192.168.6.19/index.php?content=login Advies Indien er ingelogd wordt, is het verstandig om een SSL certificaat te gebruiken om HTTPS te ondersteunen. Op deze manier wordt de verzonden data (inc. cookies, post en get data) versleuteld verstuurd, zodat deze data niet kan worden afgeluisterd. Installeer een certificaat, open port 443 en zorg voor een rewrite rule in htaccess die alle normale HTTP doorstuurd naar HTTPS.
Prioriteit Gemiddeld
Consequenties Indien er een 'man-in-the-middle' aanval wordt uitgevoerd kunnen gegevens zoals gebruikersnaam en wachtwoord worden afgeluisterd. Dit kan alleen als de aanvaller in hetzelfde netwerk zit als de client of server.
4.1 Missing session regeneration on login Resultaat De PHPSESSID waarde blijft hetzelfde als voor het inloggen. Ook na het uitloggen blijft de PHPSESSID dezelfde waarde. Advies Zorg ervoor dat het sessie id opnieuw gegenereerd wordt na het succesvol in- en uitloggen.
Prioriteit Laag
Consequenties Indien het sessie id niet opnieuw wordt gegenereerd wordt kan het voor aanvallers makkelijk zijn om een sessie id te fixeren. Wanneer een aanvaller bijvoorbeeld een sessie id heeft ingesteld voor de gebruiker voor het inloggen, kan de aanvaller hetzelfde sessie id gebruiker om toegang te krijgen tot de ingelogte gebruiker. Zie ook: https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Renew_the_S ession_ID_After_Any_Privilege_Level_Change
4.3 Cross-site request forgery (CSRF) Pagina's Elk formulier wordt doorgestuurd naar index.php, maar er wordt geen CSRF-token mee gestuurd naar de index.php pagina. Advies Zorg ervoor dat de CSRF token wordt geimplementeerd voor alle formulieren die via index.php gaan. Zie ook: https://www.owasp.org/index.php/CSRF_Prevention_Cheat_Sheet
Prioriteit Gemiddeld
Consequenties Indien er een CSRF plaatsvindt kan er misbruik worden gemaakt van een andere ingelogde gebruiker. De aanval stuurd de ingelogde gebruiker via een formulier of een link naar een pagina, zodat de andere gebruiker onbewust een actie uitvoerd. Zie ook: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
5.1 Cross-site scripting (XSS) Test Pagina 1. https://192.168.6.19/index.php?content=productform 2. https://192.168.6.19/index.php?content=product
XSS Vulnereable Parameter(s) 1. POST prod_naam 2. GET cat_id
Advies Zorg ervoor dat de get parameter cat_id en post parameter prod_naam worden gefiltered op XSS. Zie ook: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
Prioriteit Gemiddeld
Consequenties Indien er een XSS aanval wordt gepleegd kan de gebruiker van meerdere gebruikers o.a. sessie cookie gegevens ontvangen. Hiermee kan het mogelijk zijn dat de aanvaller kan inloggen op de accounts waarvan de aanvaller de sessie cookie gegevens heeft. Ook kan XSS gecombineerd worden om andere methodes te laten werken. Zie ook: https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
5.4 Buffer Overflow Aanval Parameters http://192.168.6.19/index.php? content=product&cat_id=pNdBqYVtpXYxoOiHTJoluOJKYFrvecjfKsfqQxLobcdEGSyApdcCdCYocPuyLjcInAoLvdFHZxIZMawbCndHkovCtYT DokTLsWBbrosEypeFpZWQoPZTgVsSlLUQjLhJiJXKvlngBPrPLcUQjnTfjOajAbiAlGEFUrYZvqPxXctHWvWpbgeVMkKGSvRPRhOflIvHdSlra WduxaEwENwEYWlMfWujXsysSDlBDBkKrVaqMacdlWETxPlHXBbnPPTbFOCEwZlQKGqUOHMXEoesyywylYtapclfcqfqsuOCGitGEuTRqhG UnVwXVBAjdGIrdLjcNxdfpUvIInhqBTUKmSGpdMBAYsxSQHBYyPREFsSOZvYmxBKVlhrjNoKUbPVAmvwaNfXbkEijPQIVGcpVFCvxuGv LIeBFjuiPGvqPqdrgTCUbJQHMapFhslJWSGdIkTLpjpayOVMnsXgHDfkuRICpsSqTyUeuMdHNuSleKIhimONnhaGLsWkcNMSgspkvvqvOwrkP OpKkYETvsESovSycKGsexHrsEIklrXvLQbBWfXslTcFmVdCjABplxVRJOaZnviAZMjWYnUeirRGxbAUJVLYXIMcDgGCommeeRkTOqqaGMv CNKFWbKtuqQmJhbxUiAJVNgVrbAHWmICvhvGtJOCOTPewrvBwPqYhSndKlshtVJFVqWnFLfRDKjVlnYDiGvEJThRiDrpjOpxgMrVKHVybk jLSkdaaQLWGRYjApEFHDyxTwSHcDrFAaWPxOgcyocPVQmgpBMeFoCFCMWlSDLHaOZIWsMuKIVnopAvpibOEeHgVtdWxAMZPOMWlLe gWXwKuEOuXdrAUBAnkrrmpsZGGXKIBWWSDjIduicfqtUOGFqLJgqrISYVOvkwuaokyCHwCUSjLCttgUFNDwSpmsZIwghZnrYPJCTagtqhH kAMrUXbyGynqXBrlHKXwpCskoijmyuFoYDWmeKeQCptUvoJMukdEVmwMUlLVsGiMYTOQufYNFwRtYdgYcVBJhmcmhPssVuBHLHEkdF uWDDCcQuUwxTWQVxyVXouIPMftlxtQdxBTqMHBauwGYkiTcqovFpbQSOUrGQGVvEWOnAGMmCQBnemsJxKLedNnBIhyBplTAlrhZlvnE XOdJRrnonFfbmhlHOEcyWgWoYnGrbVVkUaPXsySqPtmUkdSlpbjIIEAiyLyYqBwUJctAHomnfTiqjZOuODAtboFgcNNSPQTMMwPFUKliURC XmvljGrNQkLoQcfXjsApxMsZUiIvtEXDlcXswEnwQRLmorifliNxDvMeHfnABEUpAbKGZMJWjWqdnCFBTqKXiLnwcVQRBUoJUivFNVRxg eejuGLHfkhIhGUHWhJGJwfqosTgGyEIdaOrCRjdPXLwqPpxUrrTxoqfoykPoEgmJpvnpCrLqxwabiitbAkNQQctjXdMIgdSMpIIASEsgpKNFvGPrn YXMNPvulFWOKyDXJLeLVfDCSggWkPvLDKxjNeZcVhYRQGgxphmQxbIHSGTisGdowxpIbQjQwfPnqUSsAhAprZLBlHqcbKHWPkljgOdSrZ bIcgbRJtFrCEoYGIRDFUiUWhFdYCkgtjrahywZxNnVeCDbFhrhBWLOZnTJnKdnFBLpGDbXvspcmMMsiOxRjuALFVMfXiIAehhrbEgihiJTZaru sZDPsPkmdBXirVHHfjNrYmYhmToBUGAQMOZYuTaSVTvpwhZgPUOBNmahxDQppEBAYLQRQcUsmyymPopZEEVUngQAYxEXQxOpaVP wQCSjiWMITYlOPrmeQFUISqTMsnpKSDXNkbyNlPZgpkQKkNIrKeYcYSgrclMPRkXNauYRotPxYJMKdRlQdZnEvQRHPcreNMeyErYypbjyp bpgKckbIDeNAAOcYmSgxyAkMnPZTbpZliysLvIEhoqHoHYTDqgYdjvAqkYQWhTvhZgydpyYaCHUNpINqqLEPwVdUGLPRPTqvRTKUUvSP iTvYUOEgbqAylGmYBDXPpcCcxjAFFggUsEohZqBidmEKwdXvipLFKnuohmKPCIPyWvyfBhXZqSneSOfgCQuitLonfQTQuqdFVDVHyBkbbT m&sidebar=catnav
Advies Zorg dat de alle parameters een maximale input lengte mogen hebben, indien elders weiger het request. Wanneer een parameter alleen een integer waarde mag zijn is het ook verstandig om deze te casten naar int. Zie ook: https://www.owasp.org/index.php/Buffer_Overflows
Prioriteit Laag
Consequenties Geeft een ingang tot het aanpassen van gecompilede code, bijna alleen gevaarlijk bij C code, deze aanval kan ook worden gebruikt voor een DDOS aanval.
Conclusie Het systeem heeft een aantal beveiligingsproblemen met zeer hoge,hoge en gemiddelde prioriteiten, die zo spoedig mogelijk verholpen moeten worden. De belangrijkste hiervan is het aanpassen van het root wachtwoord of de methode van authenticatie. De volgende beveiligingsproblemen zijn gevonden: 1. Path traversal 2. Root account met zeer zwak wachtwoord 3. Software is niet up to date en bevat lekken 4. HTTPS Encryptie wordt niet toegepast 5. Sessies worden niet opnieuw gegenereerd tijdens het in- en uitloggen 6. Cross-site request forgery (CSRF) 7. Cross-site scripting (XSS) 8. Risico voor Ddos aanvallen door gebruik te maken van Path traversal
Door de combinatie van meerdere kwetsbaarheden is het systeem vanuit het security perspectief in kritieke toestand.
In bijlage A: 'Security Pentest Inet Veilingen overzicht' vindt u een compleet overzicht met alle getestten punten met de betreffende status en prioriteit.
Bijlage A: Security Pentest 'Inet Veilingen' overzicht #
Pentest Security Checklist
Status
Priority
1.1 Test for Path Traversal
Not Passed
Hoog
1.2 Test for sensitive paths in robot.txt
Passed
1.3 Test for sensitive paths in sitemap.xml
Passed
1.4 Test for sensitive information in html source
Review
1.5 Test for directory listening of folders
Passed
1.6 Test for temporary files
Passed
1.0 File access
Laag
2.0 Server 2.1 Test for open ports
Review
Gemiddeld
2.2 Test for root account access with default passwords
Not Passed
Zeer Hoog
2.3 Test for private/public key authentication
Review
Gemiddeld
2.4 Test for missing software updates
Not Passed
Hoog
3.0 Authentication (HTTP/HTTPS) 3.1 Test SQL injection when logging in
Passed
3.2 Test passwords are hashed correctly
Not tested
3.3 Test for HTTPS only
Not Passed
Gemiddeld
4.1 Session regeneration on login
Not Passed
Laag
4.2 Test for session hijacking
Not tested
4.3 Test for cross-site request forgery (CSRF)
Not Passed
Gemiddeld
5.1 Test for cross-site scripting (XSS)
Not Passed
Gemiddeld
5.2 Test for shell code injection
Passed
5.3 Test SQL injection
Passed
5.4 Buffer overflow
Not Passed
4.0 Session
5.0 User Input
6.0 User File Uploads 6.1 Test for type validation on uploaded files
Not tested
6.2 Test for file size restrictions on uploaded files
Not tested
6.3 Test for uploaded files storage inside of the public html folder
Not tested
Gemiddeld