Patrik Sulander
h2
Lue opiskelumateriaali jokaisen läksyn yhteydessä. Tämän kerran lukupaketti L2 tutustuttaa OWASP 10 sekä hakkerointia opettaviin videoihin O’Reilly Learningissa (läpinäkyvyyden nimissä: sen omistava yritys on julkaissut useita kirjojani).
a) Kirjaa muutamalla ranskalaisella viivalla per artikkeli muistiinpanot kustakin lukuläksyn osasta. OWASP 10 osalta 3-5 bullettia per haavoittuvuus. Bulleteista on hyvä selvitä, miten haavoittuvuutta käytetään; sekä olla niin yksilöivä, että eri haavoittuvuudet erottuvat toisistaan.
A) Mustiinpanoja:
OWASP 10:
A1 “Injection”
- Ilmenee kun epäluotettavaa dataa on lähetetty sivustolla eteenpäin komennon tai kyselyn osana.
- Mahdollista, jos käyttäjän lähettämää dataa ei varmisteta tai filteröidä syötemahdollisuuksia.
- Hyökkääjä mahdollistaa dataa lähettämällä ei tarkoitettujen komentojen suorittamista ja/tai dataan pääsyn ilman kunnollisia lupia.
A2 “Broken Authentication”
- Sivuston tai järjestelmän tunnistautumiseen liittyviä aukkoja.
- Yleisin hyökkäys tehdään “tunnetut salasanat” tyyppisen listan avulla, työkalu voi automaattisesti latoa näitä yleisesti tunnettuja salasanoja ja yrittää päästä sisään, se voi toimia jos järjestelmä sallii peräkkäiset tunnistautumisyritykset.
- Haavoittuvuuksia voidaan estää käyttämällä monivaiheista tunnistautumista ja käyttämällä monimutkaisia salasanoja esimerkiksi.
A3 “Sensitive Data Exposure”
- Arvokkaat tiedot kuten henkilötunnus, taloudelliset ja käyttäjätunnukset sekä salasanat ovat vaarassa ilman kunnollista salausta.
- Tärkeää salata tiedot, niitten liikkuessa rajapinnoilla ja eri sivustojen välillä.
- Esimerkiksi sivusto ei käytä TLS:ää jokaiselle sivustolle tai sivustot tukevat heikkoja salauksia. Hyökkääjä valvoo verkonliikennettä ja nappaa sieltä käsin asiakkaan evästeitä. Evästeiden avulla hyökkääjä voi päästä käsiksi asiakkaan yksityisiin tietoihin.
A4 “XML Eternal Entities”
- Hyökkääjä lataa “vihamielisen” XML -dokumentin uhrin järjestelmään. Sen avulla hyökkääjä voi saada käsiin tiedostoja, tehdä porttiskannauksia tai palvelunestohyökkäyksiä (endless file).
- Hyökkäyksiltä voi suojautua päivittämällä XML prosessoreita, käyttää yksinkertaisempia datamuotoja ja havainnoimmalla XXE -hyökkäyksiä eri työkaluilla.
A5 “Broken Access Control”
- Hyökkääjä pääsee käyttämään järjestelmää oikeuksilla, joihin hänellä ei pitäisi olla valtuuksia.
- Hyökkääjä hyödyntää aukkoja tunnistautumisessa päästäkseen käsiksi esimerkiksi eri tiedoihin ja toimintoihin kuten eri käyttäjien tietojen muokkausta ja muiden käyttöoikeuksien muokkailua.
- Suojautua voi huolellisemmilla salauksilla, käyttöoikeuksien tiukempi jaottelu ja käyttämällä suojattuja sivustoja joilla hyökkääjä ei voi muokata kulunvalvonnan metatietoja.
A6 “Security Misconfiguration”
- Heikosti konfiguroidut palvelut, ylimääräiset/vanhentuneet sovellukset ja tiedostot mahdollistavat.
- Kaikki järjestelmät, viitekehykset, kirjastot ja sovellukset täytyy olla turvalliseksi konfiguroituja ja päivitettyjä ajantasalle.
- Esimerkiksi sovelluksen asentamisen jälkeen, kaikki asetukset on jätetty defaultiksi. Hyökkääjä käyttää hyväksi näitä “default” tunnuksia ja salasanoja, joilla pääsee kirjautumaan sisään.
A7 “Cross-Site Scripting”
- Kohdistuvat yleensä uhrin sivustoon.
- XSS sallii hyökkääjän toteuttaa erilaisia skriptejä uhrin sivustolle ja sitä kautta muokkaamaan sivuston tietoja, kaappaamaan eri prosessien tietoja/tunnuksia, ohjaa käyttäjät muualle tai ottaa uhrin webbisivun hallintaansa.
- Suojautuminen vaatii ominaisuuksia sivustolla epäluotettavan datan erottamiseen.
A8 “Insecure Deserialization”
- En oikein ymmärtänyt mitä tämä “deserialize” tarkoittaa.
- Tiedon peukalointia –> alkuperäinen tiedosto löytyy, mutta hyökkääjä on vaihtanut sisältöä.
- Suojautumisessa tärkeintä on kieltää kaikki sarjoitetut objektiivit epäluotettavilta lähteiltä.
A9 “Using Components with Known Vulnerabilities”
- Erilaiset komponentit (palvelut, kirjastot, sovellukset, tiedostot) jos hyökkääjä saa haltuunsa haavoittuneen komponentin, voi hyökkääjä poistaa sieltä esimerkiksi kaiken datan tai ottaa palvelimen haltuunsa.
- Suojautua voi poistamalla kaiken ylimääräisen/Turhan, tarkastamalla ja päivittämällä komponentteja, analysoimalla niiden heikkouksia erinäisillä työkaluilla ja lataamalla tiedostoja vain luotettavilta sivustoilta.
- On olemassa automatisoituja työkaluja, joilla hyökkääjät voivat helposti löytää heikkouksia ja vanhentuneita komponentteja.
A10 “Insufficient Logging & Monitoring”
- Hyökkääjät tukeutuvat heikkoon valvontaan (järjestelmä ei hälytä ota ylös tapahtumia), jos hyökkääjää ei huomata voi hän pikkuhiljaa ottaa enemmän kontrolliinsa uhrin järjestelmää ilman mitään sanktioita.
- Suojautua voi ylläpitämällä tarkkaa valvontaa (lokien hallinnointia). Epäilyttävät tapahtumat pitää pystyä poimimaan järjestelmästä (hälytysilmoitus). Toipumissuunnitelmat ja väärinkäytöksiin oltava oikeanlaiset vastaussuunnitelmat.
6.3 Understanding SQL Injection
- Muovattu SQL -lauseke
- Haavoittuvuudet mahdollistavat tietokannan muokkaamisen, tuhoamisen ja katselmoinnin.
- esimerkki: omar’ or ‘1’=’1 –> strings or numeric input
6.4 Exploiting SQL Injection Vulnerabilities
- Tarkastele “error” ilmoituksia ja lähdekoodia.
- Union Operator, Boolean, error-based, out-of-band, time delay
5. Authentication and Session Management Vulnerabilities
- SSL/TLS, HTTP Basic Auth, OAUTH, OpenID, SAML, DAA (ei turvallinen, törmäyshyökkäykset), LTPA
- Olemassa paljon eri sertifikaatteja.
- Keskinäinen todennus (2-way), yksinkertaisemmat todennukset (1-way, server –> client)
- Encrypt!
€ Percival & Samancioglu 2020: The Complete Ethical Hacking Course (video): Chapter 21: Cross Site Scripting
- Cross Site Scriptin (XXS) Suorittaa javascript -komentoja uhrin koneella/sivustolla.
- Mahdollistaa sivuston ottamisen haltuun ja sen ohjaamista ohjainpaneelin kautta.
- Paljon esimerkki demoja, oli ehkä hieman vaikea sisäistää kun ei ole vielä itse päässyt tekemään.
- Suojautuminen –> selaimen asetukset –> sisältö –> javascript (sallittu kyllä/ei)
b) Kybertappoketju. Mainitse esimerkkejä työkaluista, jotka soveltuvat Hutchins et al kybertappoketjun kuhunkin vaiheeseen. Tee esimerkkiajo niillä työkaluilla, joita osaat käyttää turvallisesti ja muita verkkoja häiritsemättä.
B) Kybertappoketju
- En uskaltanut vielä lähteä kokeilemaan työkaluja, kokemuksen puutteen vuoksi.
- Tiedustelu – Nmap, Nmapilla voi skannata kohdejärjestelmän avoimia portteja ja muita heikkouksia.
2. Aseistus, Hyödyntää haavoittuvuutta “hyötykuorman/aseen” luomiseen sekä toimittamiseen kohteeseen. Esimerkkinä Botnet, etäkäyttäjä pakottaa liudan järjestelmiä ajamaan tiettyä komentoa kohdekoneeseen.
3. Kuljetus, Kuljetus riippuu paljon tiedustelusta. Mikä on haavoittuvin ja paras keino hyökätä kohdekoneeseen. (phishing, aukinainen portti, fyysinen laite)
4. Hyökkäyksen hyödyntäminen, Haavoittuvuuden käyttö haittaohjelmalla kohdekoneessa.
5. Asennus, Asennukset, jotka ylläpitävät kohdekoneeseen pääsyä yllä. (shellin, wep-palvelimen asennus)
6. Komenna ja hallitse, Kohdejärjestelmän resurssien käyttöä. Vaihe, jossa uhrilla on paras mahdollisuus pysäyttää hyökkäys. Hyökkääjälle tärkeää toimia huomaamattomasti.
7. Toiminta kohteessa, Vaihe jolloin hyökkääjä on onnistunut tunkeutumaan kohteeseen ja toimii omien tavotteidensa mukaan. (Datan keräys, prosessien lopettaminen, muu kiusanteko)
c) Ratkaise WebGoatista tehtävät
- A2 “Broken Authentication”: Authentication Bypasses, Secure passwords (Eli “JWT tokens” ja “Password reset” voi tehdä myöhemmin).
- A3 “Sensitive Data Exposure”
- A7 “Cross Site Scripting”: What is XSS?, Try It! Reflected XSS (Eli “Identify potential for DOM-Based XSS” ja siitä eteenpäin jäävät myöhemmäksi)
- A8:2013 Request Forgeries: Cross-Site Request Forgeries: kohdat “Basic Get CSRF Exercise” ja “Post a review on someone else’s behalf”.
C)
A2 “Broken Authentication”: Authentication Bypasses, Secure passwords
- Secure passwords oli lähinnä teoriaa, sai kylläkin myös kokeilla kauanko jonkun salasanan murtamiseen menisi aikaan. Tämän jälkeen muutin parilta käyttäjältäni salasanan hieman parempaan kuntoon.

- Authentication Bypasses, tässä oli myös skenaario jossa piti vastata pariin turvallisuus kysymykseen.
- Ensimmäikseksi koitin perus test, test –> 0,0 –> admin, admin, kaikkiin sama vastaus, ei onnistunut. Network välilehdessä tutkin POST dataa ja löysin saman requestin mitä sivulla olleessa esimerkissä käytettiin hyödyksi. Yritin edittaa ja lähettää uudestaan muokkaamalla securityquestion numeroita, mutta ei toiminut.
- Katoin myös hieman teron vinkkejä ja sieltä paljastui, että inspectorin kautta samat muutokset sain toimimaan. (edit as html)

A3 “Sensitive Data Exposure”
- Viime tehtävän vinkkien avittama tarkistin ensiksi Teron vinkit.
- Sieltä nappasin “snifferin” wireshark.
- sudo tshark -i any -V -Y ‘http.request.method == POST
- Se sai napattua paketin, jossa oli “paljaana” käyttäjätunnus ja salasana sen jälkeen kun painoin “log in”.

A7 “Cross Site Scripting”
- Sivulla “2”, kysytään oliko evästeet samat molemmilla välilehdillä, joihin kirjoitin konsoliin “alert(document.cookie);

- Vastaus on kyllä.
- Sivulla “7” kysytään mikä kenttä on altis XSS:lle.
- Menin takaisin sivulle “2” ja kopioin alert scriptin
- –> <script>alert(“XSS Test”)</script>
- “Quantity” kenttiin onnistuu vain numeraalit, mutta pankkikortin numero kenttään tuon yllä mainitun skriptin kopioiminen tuo tuloksia.
7. Palkki on ainakin vihreä nytten? En ole kyllä täysin varma, että haettiinko tässä jotain vaikeampaa toteutusta.

A8:2013 “Request Forgeries: Cross-Site Request Forgeries”
- “Trigger the form below from an external source while logged in. The response will include a ‘flag’ (a numeric value).”
2. Ymmärsin tämän niin, että meidän pitää ulkoisesti saada requestattua, kyseistä kyselyä.
3. Ensimmäikseksi avasin developers toolin –> f12 ja aloin tutkimaan. Tutkimalla tarkemmin submit query elementtiä, tuo flag toiminta näytti kiinnostavalta. action=”/WebGoat/csrf/basic-get-flag”

4. Liitin tuon koko formin uuteen html -tiedostoon jonka nimesin “testi2.html”
5. Sitten (vasta) painoin “submit querya” aukesi uusi välilehti –> localhost:8080/WebGoat/csrf/basic-get-flag, tännehän varmaa haluamme submittaa. Lippu näytti tyhjää ja viestinä näkyi “Appears the request came from the original host”. Nyt päätin luoda sen oman webbipalvelimen.

6. Teron ohjeilla python3 -m http.server
7. localhost:8080/WebGoat/csrf/basic-get-flag antoi pelkkää erroria (sivu jolle pääsin testi2.html true nappulasta. (Whitelabel error page, the address wasn’t understood yms.)

8. Uskoin vahvasti, että vika on vain html tiedostoni sisällössä. Ja näin ei niin koodivelhona ja turhautuneena, katselin netistä apua.
9. Tässä kohtaa olin jo ihan solmussa ja päätin, että jatkan myöhemmin.
“Post a review on someone else’s behalf”
- Päätin lähteä kokeilemaan tätä tehtävää. Tehtävässä löytyi yksinkertainen “foorumi”. Tutustuin tähän paremmin edurekan tutoriaali videon avulla (linkki lähteissä).
- Lähdin taas tutusti F12 inspectorin kautta tutkimaan. Taas syöterivit paljastivat tämän “eventin”, jonka kopioin html:nä.

- Samalla kaavalla kuin viime tehtävässä (ei ehkä paras idea), loin taas uuden html:n.
- seuraavan kuvan urlin muutin vielä Goat/:sta WebGoat:ksi.

5. Sama whitelabel error page, kuin edellisessäkin tehtävässä…. Bad request
6. Sain toimimaan, ongelmana oli väärät syötteet bokseihin.

7. Tehtävät olivat todella vaikeita itselle. Turhauttavaa istua paikalla pari tuntia ilman minkääntyyppistä etenemistä. Jotenkin pitäisi päästä syvemmälle näihin kiinni, että olisi helpompi hyväksikäyttää omia ongelmanratkaisu taitoja.
Lähteet:
Install webgoat8, Luettu 15.11.2020:
http://terokarvinen.com/2020/install-webgoat-web-pentest-practice-target/
Tero Karvinen, Luettu: 15.11.2020 :
http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/#L2
Cross site scripting -video, katsottu: 15.11.2020:
https://learning.oreilly.com/videos/the-complete-ethical/9781839210495/9781839210495-video21_1
edureka -video, katsottu:16.11.2020:
https://www.youtube.com/watch?v=1qzjWNcQVeI&ab_channel=edureka%21
Cyber Kill Chain, Luettu 16.11.2020:
https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html
MITRE ATT&CK, Luettu 16.11.2020:
Intrusion Kill Chains, Luettu 15.11.2020:
Cyber-risk, Luettu 15.11.2020:
Essential Steps Cybersecurity Kill Chain Process, Luettu 16.11.2020:
Cyber Kill Chain malli, luettu 14.11.2020:
https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html