pentest

View on GitHub

Home | Start | H1 | H2 | Lunch | H3 | 🐍🥣🦈 | H4 | 4real | H5 | MI6 | H6 | se7en | H7 | End | Dev doc | + |

<– Takaisin etusivulle

h1: Vuohi, tappoketju ja pimeän verkon päiväkirjat

Tehtävät: Kurssisivu ja tehtävät

Lue ja tiivistä

OWASP 10 A03:2021 - Injection

Intelligence-Driven Computer Network Defense Informed by Analysis of Adversary Campaigns and Intrusion Kill Chains

Darknet Diaries podcast

Kali Linux

Asennetaan Kali Linux VirtualBoxiin. Ladataan VM-tiedosto Kalin sivuilta jota opettaja suosittelee. Katsotaan asennusvideo. Luetaan asennusohjeita. Oikeastaan mitään näistä ei tarvittu koska kaikki oli valmiiksi asennettu oikein asennustiedostossa, joka vain importataan VirtualBoxiin.

Kali-tiedosto VB:ssä

Elämäni aikana mikään ei ole ollut näin helppoa tietokoneella. Jopa käyttäjänimi ja salasana on annettu VB:n Descriptionissa. Kokeillaan ensimmäiseksi verkkoyhteyttä virtuaalikoneessa, mennään sen selaimella osoitteeseen www.google.com. Kaikki toimii out-of-the-box, uskomatonta. Myös aiemmin ongelmia aiheuttaneet VB Guest Additions toimii ilman erillisiä toimenpiteitä.

Kali

Over The Wire

En ollut varma oliko ensimmäisessä tehtävässä tarkoitus (onko turvallista) ottaa suoraan omalta koneelta yhteyttä suoraan Over The Wire:n palvelimeen ja jahkailin tehtävän aloittamisen kanssa. Hyvä niin, otetaan yhteyttä nyt asennetulla Kalilla.

Vaihdetaan ensin Kalin näppäimistö English → Finnish.

Otetaan ssh-yhteys Over The Wireen. ssh bandit0@bandit.labs.overthewire.org -p 2220

Tarjoaa fingerprinttiä: ECDSA key fingerprint is SHA256:98UL0ZWr85496EtCRkKlo20X3OPnyPSB5tB5RPbhczc. Lienee pakko hyväksyä vaikka ei ole mitään mihin verrata sormenjälkeä, eikö ohjeissa olisi voitu antaa se?

Fingerprint

Saadaan yhteys, luetaan ohjeita. Kirjoitusoikeudet kotikansioon on kielletty, luodaan tarvittaessa wd /tmp/ kansioon komennolla mktemp -d Lukuoikeudet /tmp/ ja /proc/ kansioihin on kielletty. ASLR (Address-space Layout Randomization ASLR on kytketty pois päältä palvelimella.

Ohjeissa annetaan lisäksi seuraavat työkalut tiedostopolkuineen:
For your convenience we have installed a few usefull tools which you can find in the following locations:

Jatketaan harjoitusta. Readme-tiedostosta löytyy seuraava salasana. Vaihdetaan käyttäjä bandit0:sta bandit1:seen ja jatketaan näin harjoituksia aina viimeiseen harjoitukseen saaakka. Viimeisessä tasossa on kymmenen tiedostoa ja tuntuu turvallisimmalta avata ne editorilla, käytän nanoa. Käyn tiedostot yksitellen läpi manuaalisesti (ei varmaan paras idea?) ja löydän lopulta tiedostosta -file07 viimeisen salasanan.

Bandit Bandit

Käytetään tuota seuraavissa tehtävissä sitten: Bandit6 Seuraavaa tehtävää varten myös pitää tutustua find-komentoon ja ihmisluettaviin tiedostoihin paremmin: Human-readable files

WebGoat

Asennetaan toinen Kali kone ihan vaan koska oli niin helppoa ja tähän toiseen voidaan asentaa WebGoat ja toisessa tehdä OverTheWiren harjoituksia. Katsotaan opettajan ohjeet: Install webgoat pentest practice target

Ajetaan Linux update ja asennetaan Java ja UFW ja käynnistetään palomuuri. Asennetaan WebGoat. Asennetaan Java JAR paketti.

Avataan osoite http://localhost:8080/WebGoat/ selaimessa ja rekisteröidään uusi käyttäjä. Tallennetaan WebGoat käyttäjätunnus (verkkovuohi) ja automaattisesti generoitu salasana tallentuu Kalin selaimeen (paitsi että salasanaa piti lyhentää koska WG hyväksyy max 10 kirjainta pitkiä slsnoja). Lopulta asennus on valmis.

WebGoat

WG & HTTP Basics

Suoritetaan ensin HTTP Basics WG HTTP

WG & Proxy palvelin

Tein tämän kohdan puolivahingossa. Huomasin ettei sitä tarvinnut tehdä mutta koska homma ei jumittunut ja olin aikaoptimisti niin asensin OWASP ZAP:n.

Ensin sallitaan proxy selaimessa WG FF proxy allow

Sitten asennetaan OWASP ZAP WG Owasp

Muokataan WG ohjeiden mukaisesti proxy-palvelimen portiksi 8090 ja kokeillaan sitten käynnistää WG siinä, ainakin tulee lupaava varoitus: FF warning

Portin 8090 takaa tulee kuitenkin tieto Bad Format. Portin 8080 puolestaan toimii oikein. En ymmärrä miten porttimäärittelyt toimivat, mutta kuitenkin nyt ZAP näyttää kaappaavan liikennettä: ZAP

Löydän kirjautumistietoni koska arvaan että se on lähetetty POST-metodilla. Zap ja salasana

Sieltä löytyy selkokielinen salasanani ja käyttäjätunnukseni. Selain ei tällä kertaa kuitenkaan tarjonnut salasanaa automaattisesti sisäänkirjautuessa (ilmeisesti turvattomuudesta johtuen?) vaan se piti käydä hakemassa selaimen tiedoista.

Seurataan WG ohjeita ja filtteröidään WG sisäiset requestit ohjeiden mukaan pois. Sitten yritetään kaapata ja muokata pyyntöä ZAP:lla.

ZAP tampering

Siirrytään viimeiseen kohtaan Proxyissä. Tätä kohtaa ei kuitenkaan voi harjoitella ainakaan omalla asennuksellani, ehkä tämä vaatii vielä uuden ohjelman (WebWolf) asentamisen. Kuitenkin nyt HTTP Proxies näyttää vihreää valoa onnistuneen suorituksen merkiksi.

WG & Developer Tools

Seuraavaksi tehdään Developer Tools tehtävät. Ensimmäinen on että pitää ajaa Consolessa js-koodi joka hakee puhelinnumeron. WG Console

Seuravaksi selviää ettei Firefoxissa ole Chromen Sources-tabia vastaavaa tabia: https://stackoverflow.com/questions/40818112/is-there-an-equivalent-of-chromes-devtools-sources-panel-in-firefox-devtools Myös Network näyttää kovin erilaiselta, mutta kun ZAP on päällä on selaimen käyttäminen kovin hankalaa, joten yritetään selvitä FF:llä seuraavasta tehtävästä: WG Network

Onnistuu hyvin ja Network-osuus on suoritettu. Siirrytään SQL Injection osuuteen.

WG & SQL Injections

Ensimmäinen SQL-query onnistuu.

SQL

Myös toinen tehtävä onnistuu: UPDATE Employees SET department='Sales' WHERE userid=89762 Kolmas: ALTER TABLE Employees ADD phone varchar(20) Neljäs: GRANT ALTER TABLE TO UnauthorizedUser

SQL-perusteiden jälkeen on SQL-injektioiden vuoro. Ensimmäisestä tehtävästä selviän kokeilemalla useamman kerran, mutta kuvittelen (valheellisesti, kuten kohta selviää) ymmärtäväni mistä on kyse. SQL injection Your query was: SELECT * FROM user_data WHERE first_name = 'John' and last_name = '' or '1' = '1'

Seuraavassa tehtävässä olisi pitänyt oivaltaa, että Login_Count ei ole injektoitavissa, ja User_Id:hen ei tarvitse lainausmerkkejä. SQL-kyselypohja näytti tältä: "SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = " + User_ID; Ja vastaus tältä: Your query was: SELECT * From user_data WHERE Login_Count = 0 and userid= 0 OR 1=1

En enää tässä vaiheessa tehtäviä koe olevani kärryillä asiasta. Heittomerkit tuntuvat vaihtelevat mielivaltaisesti tilanteesta toiseen. Tehtävien tekemiseen varattu aika rupeaa kuitenkin loppumaan ja tehtäviä riittää vielä jäljellä. Lisäksi pitäisi dokumentoida tämä kaikki verkkoon. Loput vastaukset joudun katsomaan täältä: https://docs.cycubix.com/web-application-security-essentials/solutions

Sen verran ennätin seuraavaa tehtävää lukemaan, että oleellista on minkä tyyppistä dataa käsitellään, numeroita vai stringejä. Palaan SQL-harjoitteisiin ja WebGoatin SQL-injektio-osuuteen tuorein silmin toisena päivänä. Ensimmäinen tehtäväraportti päättyy tähän.

WG & SQL Injections jatko

Jatkoin harjoitusta ja ymmärsin SQL:stä enemmän: puolilainausmerkki (‘) eli heittomerkki merkitsee SQL:ssä Stringiä ja lainausmerkki (“) SQL-kyselyn rajausta. WG SQL injektio ja hipsut

Myös seuraava tehtävä onnistuu tämän ymmärtämisen ansiosta. WG SQL injection integrity

Mutta viimeisen harjoituksen ratkaisun joudun jälleen katsomaan esimerkistä. Yritin ratkaista sen näin: '; DROP TABLE access_log mutta oikea ratakisu oli '; DROP TABLE access_log; --

Joudun vielä palaamaan tuohon kommenttikohtaan materiaaleissa ja siihen mikä merkitys sillä on ratkaisussa. Eli koska viimeisessä tehtävässä en tiennyt millainen kyselyn rakenne on en osannut pitää sen loppua oleellisena, joka kommentoitiin pois --. Katsotaan selviääkö tunnilla kuinka SQL-queryjen rakenteen voi selvittää WebGoatin tehtävissä.

<– Takaisin etusivulle