Show simple item record

dc.contributor.advisorMorrison, Donn
dc.contributor.authorBaugerud, Magnus
dc.contributor.authorBerg, Henrik Mathias
dc.contributor.authorØstmo-Sæter, Lars Olsnes
dc.date.accessioned2021-09-15T16:44:08Z
dc.date.available2021-09-15T16:44:08Z
dc.date.issued2021
dc.identifierno.ntnu:inspera:83510435:83529061
dc.identifier.urihttps://hdl.handle.net/11250/2778038
dc.description.abstractI dette prosjektet har vi gjennomført penetration-tester på to av NTNUs systemer som heter Fotoboks og ePay. Fotoboks er en web-applikasjon og ePay består av både en web-applikasjon og et web-API, men testene som ble gjennomført i dette prosjektet har fokusert på web-applikasjonene. I denne rapporten skal vi prøve å svare på to forskningsspørsmål relatert til erfaringen vi har tilegnet oss ved å gjennomføre penetration-tester for første gang. Spørsmålene er som følger: 1) Hvordan påvirker tidligere erfaring kvaliteten til en penetration test? 2) Hvordan kan en programvareutvikler tjene på å gjennomføre en penetration-test? Penetration-testene ble gjennomført slik det står beskrevet i Penetration Testing Execution Standard, forkortet til PTES. Får å guide oss gjennom testingen har vi har brukt OWASP Web Security Testing Guide, som er en guide for viktige faser i PTES. For å gjennomføre penetration-testene har vi brukt redskaper som Burp Suite sin proxy og repeater, samt automatiske testprogrammer som Nikto, Nmap og ZAP. Vi har også brukt mange andre liknende redskaper og scripts vi har laget i Python. Systemene ble testet en etter en og alle testene ble også dobbeltsjekket når rapportene ble skrevet. I den første runden med testing, som var testing av Fotoboks, var det flere tester som teamet ikke forsto eller som ble gjort feil. Men for hver runde med testing fikk vi bedre forståelse av testene og vi ble flinkere, som førte til at testingen ble bedre og vi fant flere sikkerhetshull. Vi gjennomførte ogso noe testing av ePay APIet, men metodene vi brukte for å teste web-applikasjonene passet dårlig til testing av APIet. Derfor valgte vi å fokusere på web-applikasjonene. Ut ifra vår erfaring, ser vi at det å utføre en penetration-test uten erfaring fører til et resultat med betydelig dårligere resultat enn en penetration-test utført med erfaring. Erfaringen gir en bedre forståelse av de individuelle testene og hvordan de henger sammen, som fører til bedre test-dekning av systemet. En pentration-test utført uten erfaring vil mest sannsynlig overse sikkerhetshull. Å forstå hver enkel test i OWASP Web Security Testing Guide er ikke nok for å sikre test-dekningen av systemet, siden det er nødvendig med en forståelse om hvordan testene henger sammen. Selv om veilederen vår ga oss verdifull hjelp og test-guiden ga oss detaljerte beskrivelser, så måtte den dypere forståelsen av penetration-testing tilegnes gjennom erfaring. Vi tror at det er flere fordeler ved å utføre penetration-tester for programvareutviklere. Erfaringen de tilegner seg fra en penetration-test kan brukes til å simulere ekte angrep på sine egne systemer mens de utvikles. De vil også få en bedre forståelse for hvordan hackere går fram når de skal angripe et system, som kan være nyttig når de skal sikre systemene de utvikler. Programvareutviklere kan også bli mer oppmerksom på sikkerhet etter å ha utført en penetration-test, som kan føre til at de prioriterer sikkerhet mer gjennom utviklingen.
dc.description.abstractIn this project we have performed penetration tests on two of NTNU’s systems, Fotoboks and ePay. Fotoboks is a web application and ePay consist of both a web application and a web API, but the tests performed in this project focused primarily on the web application. In this report we will try to answer two research questions related to the experience of performing penetration tests for the first time. The questions are as follows: 1) How does prior experience affect the quality of a penetration test? 2) How would a software developer benefit from performing a penetration test? The penetration testing was performed as described by the Penetration Testing Execution Standard, or PTES for short. To guide us through the testing we have utilized the OWASP Web Security Testing Guide, which is a detailed guide to the key phases of PTES. To conduct the penetration tests, we have utilized tools such as Burp Suite’s proxy and repeater, as well as automated tools like Nikto, Nmap and ZAP. We have also used a variety of other similar tools and created our own tools using Python. The two tests were performed one after the other and both systems were also revisited once. In the first testing round, which was the testing of Fotoboks, there were several tests that we did not understand, or that were done incorrectly. But for each round of testing our understanding and skill seemed to improve, and we performed the tests better and found more vulnerabilities. We also performed some testing on the ePay API, but the methods used to test the web applications could not easily be applied when testing the API, so we chose to focus on the web applications. From our experience, performing a penetration test without prior experience leads to a result of significantly poorer quality than a penetration test performed with experience. The experience gives a better understanding of the tests and how tests are connected, which results in a better coverage. A penetration test performed with no prior experience is more likely to miss vulnerabilities. Understanding the individual tests in the OWASP Web Security Testing Guide is not enough to ensure coverage, as an understanding of the connection between tests is needed. Although our supervisor gave us valuable guidance and the testing guide provided us with detailed descriptions, the deeper understanding of penetration testing had to be gained through experience. We believe there are multiple benefits in performing penetration tests for software developers. The experience they gain from a penetration test can be used to simulate real attacks while their system is still in development. They will also have a better understanding of how attackers approach systems, which may help them when securing their future systems. Software developers may also gain increased awareness of security from performing a penetration test, which can lead them to prioritize security throughout the development cycle.
dc.languageeng
dc.publisherNTNU
dc.titlePenetration testing from a software engineering perspective
dc.typeBachelor thesis


Files in this item

Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record