Päätin tehdä läksyistä kohdan A (valintana oli joko A tai B) koska olin cincan työpajassa paikalla myös osana erästä toista kurssia, joten vaikutti hyvältä mahdollisuudelta. Eli siis vaihtoehto A oli kirjoittaa raportti tästä työpajasta, eli mitä siellä tehtiin. On tärkeä huomata että tämä raportti on kirjoitettu täysin muistista, en ottanut esimerkiksi komentoja ylös.
Esityksen flow oli aika simppeli: eka hieman teoriaa diaesityksen avulla missä puhuttiin cincanista ja siitä minkälaisia tapauksia workshopissa on. Sen jälkeen varmistimme että kaikilla toimii cincan oikein cincan run cincan/volatility komennon avulla. Itselläni dockerilla ei ollut oikeita käyttöoikeuksia, mutta ratkaisin sen. Tämän jälkeen pääsimme tekemään hieman workshoppia, josta itse ehdin tehdä osan yhdestä tehtävästä ja sitten lopuksi esittäjä näytti meille miten muut tehtävät tehtäisiin.
Cincan on siis työkalu jolla voidaan analysoida esimerkiksi haittaohjelmia, mutta se menee sitäkin pidemmälle, sillä sen avulla pystyy analysoimaan hyökkäyksiä ylipäätään kuten vaikka phishing sähköposteja. Muistan että cincanissa oli työkalu millä pystyimme ensinnäkin tiedustelemaan turvallisesti phishing siteä ottamalla esimerkiksi sen lähdekoodi ja parit screenshotit siitä, miltä sivusto näyttää. Tämä vaikutti erittäin hyödylliseltä työkalulta epäilyttävien sivustojen tarkistamista varten. Cincan on kuitenkin kohtuullisen haastava pelkästään asentaa, eikä se toimi tässä kohtaa ihan niin hyvin, vaan bugeja on paljon. Esityksessä jäi hieman harmittamaan se, että esittäjä ei vaikuttanut itsekkään aina tietoiselta siitä, että miten asiat toimivat tai miten teemme jonkun asian X, ja osa esitetyistä asioista meni kokonaan ohi, ainakin itseltäni. Työpajassa oli kolme esimerkki tapausta mitä pystyimme yrittämään ratkoa: android APK haittaohjelma, phishing email tapaus ja hieman vaikeampi memory dump ongelma (tai jotain memoryyn liittyvää, unohdin hieman sillä sitä ei käsitelty niin paljoa).
Työpajassa esiteltiin myös muita työkaluja joilla pystyttiin esim lukemaan haittaohjelmien lähdekoodia ja päättelemään siitä erilaisia asioita. Mielestäni yksi esimerkki oli ransomware tyyppinen ohjelma joka käytti AES-enkryptausta, mutta koodista löytyi esimerkiksi decryptaus avain jolla olisimme pystyneet decryptaamaan tiedostot vaikka tämä ransomware olisi niihin päässyt käsiksi. Sillä tavalla uskon, että ohjelmasta olisi kyllä huomattavaa apua. Myös työkaluja on hyvin monenlaisia, ja itse pääsin kokeilemaan vain pientä murto-osaa niistä työpajan aikana (teimme työpajassa lähinnä vain yhtä esimerkkiä, loput näytettiin). Taas pieni valitus esittämisestä: kun olin itse yrittänyt ratkaista tiettyä kohtaa ja mielestäni ymmärsin mitä siinä tehtiin ja pääsinkin aika pitkälle, seuraavaksi kun esittelijä näytti miten se tehdään hän käytti monimutkaisia komentoja joita ei oikeastaan selitetty laisinkaan. Esitys ja työpaja oli muuten oikein passeli ja tykkäsin tutustua cincaniin, mutta esitys itsessään ei ollut kauhean hyvä.
Esityksestä jäi kuitenkin semmoinen mielikuva ainakin itselleni että uskon että cincanista voisi olla tulevaisuudessa itselleni hyötyä. Sitä pitää vain hieman parantaa, sillä tällä hetkellä se on hieman turhan hankala niin sanotusti, mutta käsittääkseni se olikin vielä hieman beta versiossa.
a) Rikun opit. Poimi jokin Rikun esityksestä oppimasi seikka ja kuvaile se. Mikä idea tai tekniikka vaikutti lupaavimmalta? Älä siteeraa tapausesimerkkejä tai kohteiden nimiä vastauksessasi. (Joku ei päässyt kuulemaan vierailua, olen antanut silloin vaihtoehtoisen tehtävän).
Tykkäsin Rikun esityksessä authoriteetin käyttämisestä ihmisiä vastaan, sillä aika harva uskaltaa haastaa auktoriteettihahmoja. Tietenkin jos esiinnyt jonkun pomona se ei varmaan toimi ilman erittäin vakuuttavaa valeasua, mutta voit esiintyä vaikka jonkun toisen organisaation virkailijana jolla olisi normaaleita työntekijöitä korkeampi asema: esimerkiksi, jonkinlainen tarkastaja.
Tälläisellä tarinalla on mahdollista päästä vaikka organisaation tärkeisiin osiin, kuten vaikka serverihuoneeseen. On tietysti otettava huomioon että mikäli organisaatio ottaa tietoturvan ja yleisen turvallisuuden muutenkin tosissaan, on voi olla vaikeampaa päästä kriittisiin paikkoihin, varsinkin mikäli siinä ei normaalisti olisi järkeä. Rooliin eläytymisellä kuitenkin pääsee jo hyvinkin pitkälle, sillä suurin osa ihmisistä haluaa olettaa hyvää.
Riku myös puhui kuinka pienellä hyvällä teolla voi saada ihmiset tekemään hyvän teon takaisin: esimerkiksi hymyllä ja tervehtimisellä, tai vaikka oven auki pitämisellä. Tämän avulla voi päästä paikkoihin mihin normaalisti ei olisi pääsyä. Myös eräs toimiva mutta Rikun mielestä ikävä tekniikka on painostaa ihmisiä tekemään asioita sanomalla että päätöksellä on erittäin kiire, tai jokin tehtävä on todella tärkeä. Tällä pyritään ohittamaan ihmisten normaali ajattelumekanismi, joka saattaisi muuten johtaa siihen että he tajuavat että heitä yritetään huijata/jokin ei ole oikein.
b) Tiedustele perusteellisesti joitain HTB:n koneita, joissa on weppipalvelin. Sopivia työkaluja ovat esimerkiksi gobuster ja nikto. Voit käyttää lisäksi muitakin työkaluja. Kokeile lomakkeisiin ainakin perusjuttuja (admin:admin, admin: , root: , root:root, guest:guest, asfasdf:adfkjwoeri, hipsu ‘) Selaile myös sivua ja seuraa liikennettä mitmproxylla. Analysoi tulokset. (Pelkät komentojen tulosteet eivät riitä.) Ovatko versiot vanhoja vai tuoreita? Onko epätavallisia asetuksia? Jos haavoittuvuusskanneri hälyttää, onko hälytys oikea? Mitkä aukot vaikuttavat parhaimmilta/pahimmilta? Miten pitkälle pääset koneen kanssa?
Minulla oli aiemmasta skannista olemassa tiedostot mihin olin tallentanut skannien tuloksia, joten voimme sitä katsomalla kokonaan skipata tutkintavaiheen (eli uuden porttiskannauksen) ja valita vain suoraan kohteemme. Tämän takia on hyödyllistä tallentaa kaikki port skannit tiedostoihin, sillä näin välttää verkon uudelleenskannauksen. Muistetaan kuitenkin muodostaa yhteys HTB:n koneille ensin openvpn softan avulla. Käytämme siihen kometoa openvpn capu.ovpn (capu.ovpn on HTB:stä ladattava connection pack, eli tuo vain tiedoston nimi). Varmistamme vielä yhteyden pingaamalla jotain koneista: ping 10.10.10.183: saamme vastauksen, eli olemme oikeassa verkossa.
Päätin ottaa kohteeksi 10.10.10.165, sillä se on hiljattain retired machine, eli voin julkaista tähän blogiin kaiken mitä löydän, ja se on ratettu kohtuullisen helpoksi. Katsoin active machineista sellaisia jotka olisivat lähinnä web-servereitä, ja suurin osa vaikutti todella haastavilta, ainakin muiden käyttäjien mielestä. Ehkä näin aloittelijana ei ole fiksuin idea lähteä yrittämään jotain mikä on parempienkin mielestä jo vaikeaa, vaikka eihän tässä nyt ole tarkoitus välttämättä korkata koko boksia vaan yrittää tutkia kunnolla. No, pointtina voin kuitenkin raportoida tässä kyseisestä boxista.
Ajattelin aloittaa skannaamalla siten gobusterin avulla, jotta voisimme löytää mahdollisia login sivuja tai jotain muuta mielenkiintoista. Gobuster ei tule kalin mukana, joten asennamme sen ensin komennoilla
apt-get update
apt-get install gobuster -y
Voimme käyttää kalissa olevia wordlisteja tässä hyökkäyksessä. Ne sijaitsevat /usr/share/wordlists/. Siellä on myös erityisesti tätä varten tarkoitettuja wordlistoja, directoryissä /dirb/ ja /dirbuster/. Käytän tässä /usr/share/wordlists/dirb/common.txt Tämän jälkeen meidän ei tarvitse tehdä muuta kuin laittaa gobuster käyntiin wordlistallamme. Se hoituu komennolla
gobuster dir -u 10.10.10.165 -w common.txt
Komento siis juostu /usr/share/wordlists/dirb/ kansiosta, muuten tuohon -w jälkeen voisi laittaa vaan koko pathin. Tämän komennon jälkeen annamme gobusterin vain kokeilla kaikkia eri vaihtoehtoja ja odotamme kunnes se on valmis. En löytänyt hirveästi directoryjä, mutta sellaiset kuin
/css
/icons
/img
/index.html
/js
/lib
löytyivät. Käyn nyt niitä hieman läpi ja tutkin onko niillä jotain. Aloitetaan /css . Sieltä löytyy style.css tiedosto, ja css siis käytetään sivun muotoiluun. En nää tätä erityisen tärkeänä, joten liikutaan eteenpäin: /icons on nimensä mukaisesti varmaan sivun iconit. Sieltä löytyi 2 gif fileä, jotka taas ovat, noh, eivät niin mielenkiintoisia. /img taas oli täynnä pelkkiä .png kuvia, jonka olisi tietysti taas voinut arvata etukäteenkin. /index.html on sivun pääsivu, tämän saamme muutenkin kun connectaamme tälle sivustolle. /js sijaitsee sivun javascript tiedosto, jota emme myöskään oikeastaan tarvitse. /lib on hieman mielenkiintoisempi, sillä siellä on useita eri directoryjä jossa on tiedostoja javascriptistä kuvatiedostoihin. Sekään ei kuitenkaan näyttänyt erityisen lupaavalta.
En usko että tällä pääsee eteenpäin, enkä usko että sivustolla on mitään mielenkiintoisia hidden directoryjä millä pääsisimme eteenpäin, joten vaihdan taktiikkaa ja kokeilen niktoa seuraavaksi. Teen uuden directoryn nikto skannia varten, sillä ajattelin pistää tämän komennon outputin fileen. En ole ennen käyttänyt niktoa, joten luin pari artikkelia siitä (lähteet 1&2) ja päätin käyttää seuraavaa komentoa:
Tässä -Display ja sen jälkeiset numerot on erilaiset display optionit, eli se mitä ohjelma näyttää meille kohteesta. En käy jokaisen eri numeron läpi tässä. Seuraavaksi -Tuning kokeilee erilaisia hyökkäystapoja kohdetta vastaan. 6 on Denial of service ja X tarkoittaa että se kokeilee jokaista hyökkäystä paitsi sitä joka on tässä mainittu, eli 6 (Denial of service). -o Kertoo meille output filen nimen ja sijainnin, ja -Format kertoo missä formatissa output tulee (htm ei ole typo, niktossa html sanotaan htm). -host taas kertoo kohteen, eli tuon valitsemamme boksin. Juostaan komento ja katsotaan mitä tapahtuu.
Komennossa tulee menemään jonkun aikaa, joten samalla tein itselleni hieman ruokaa. Saimme skannin suoritettua tämmöisen tuloksen:
Vaikuttaa siltä että emme pääse tällä eteenpäin. Olen kuitenkin keksinyt toisen tavan päästä sisään, sillä tämä web-palvelin käyttää nostrodomus 1.9.6 joka on tunnettu eräästä haavoittuvuudestaan. Rapid7 kertoo tästä lisää (lähde 3), ja saamme tietää että tämä on siis remote code execution vulnerability, eli erittäin mehukas näin hakkerin näkökulmasta. Näemme myös että tällä on metasploit module jota voimme käyttää hyökkäyksessä.
Metasploit on ohjelma jota voidaan käyttää hyökkäämiseen. Siinä on valmiina tuhansia eri exploitteja, ja niiden käyttöönotto on todella helppoa. Kokeilen käyttää tätä löytämäämme exploittia metasploitin avulla tätä sivua vastaan. Metasploitin voi aloittaa komennolla
msfconsole
Mutta myös muita komentoja pitää käyttää sen aloittamiseksi. Olen tehnyt pienen skriptin millä voin käynnistää metasploitin ja muutaman siihen liittyvän komennon:
service postgresql start
ss -ant
msfdb init
msfconsole
Nyt meidän pitää näiden komentojen sijaan vain käynnistää tämä skripti, ja saamme metasploitin toimimaan. Metasploitissa exploitteja voidaan etsiä komennolla “search <exploit>”. Tehdään search nostromo.
Löydämme yhden exploitin, ja tämä on se kyseinen nostromon 1.9.6 exploit mistä puhuin aiemmin. Voimme käyttää sitä komennolla
use exploit/multi/http/nostromo_code_exec
Tämän jälkeen katsotaan minkälaisia asetuksia tällä exploitilla on, show options komennolla.
Tärkeää huomata mitkä rivit ovat required: näin tiedetään ne tärkeimmät asetukset.
Aika monta eri asetusta tälle yhdelle exploitille. En tiedä mitä nämä kaikki tekevät, ja miten tämä pitäisi configuroida täysin, mutta ainakin kohtaan RHOSTS voisi laittaa kohteen IP:n eli 10.10.10.165. Se voidaan tehdä komennolla
set RHOSTS 10.10.10.165
Kohtaan LHOST taas pitää laittaa meidän oma IP, koska kyseessähän on reverse shelli. Ajattelin että 10.10.14.21 jonka HTB on meille antanut toimisi tässä, joten käytän sitä (toimii koska tämä meidän “ip” ja kohdekone ovat samassa verkossa, eli tällä IP:llä saamme kohteen yhdistettyä meihin!). Muutenhan tässä käytettäisiin routerin oikeaa IP:tä. Käytämme samaa set komentoa kuin aiemmin, tällä kertaa korvaamme vain RHOSTS -> LHOST. Tämän jälkeen voimme tehdä komennon run ilman parametrejä, ja se laukaisee hyökkäyksen.
Suureksi yllätykseni saimme shell yhteyden kohteeseen oikeastaan heti, ilman ongelmia.
Tuossa pari komentoa mitä kokeilin. En kyllä osaa mennä tästä eteenpäin, luulisin että pitää tehdä enumeration että saataisiin priv exec, joten uskon että tämä riittää tältä erää. Tässähän meidän pitäisi seuraavaksi pystyä exploittaamaan järjestelmää vielä enemmän vaikka root accessin saamiseksi, mutta pelkkä sisäänpääseminen oli itselleni ainakin jo ihan hyvä saavutus :).
No olen jo periaatteessa kokeillut neljää: nmap, gobuster, nikto, ja metasploit. Kokeilen kyllä jotain muitakin työkaluja, vaikka houkuttaisi jo sanoa että olen kolmea käyttänyt ;). Tosin on vaikea löytää uusia työkaluja käytettäväksi sillä suurin osa mitä voisin kokeilla on recon tools. Nmap on ehkä sellainen työkalu mitä 0xdf käyttää jokaisessa boxissa.
Löysin kuitenkin että 0xdf käyttää myös mysql ja smbmap reconissa, joten päätin kokeilla samaa. Nämä löysin ainakin bankrobberin reportista (lähde 4). Näillä näköjään vain pyritään hieman tökkimään että mikäli jotain tapahtuisi, eli se helppo tapa sisään. Etsin alkuun HTB:n koneista jonkun millä olisi tuo portti 3306 auki mySQL testaamista varten.
Huomasin että aiemmista skanneistani yhdelläkään koneella ei ollut löydettyä porttia 3306, joten aloin miettimään että olikohan se jäänyt ulos pelkästään asetusten takia, että nmap ei olisi skannanut tätä kyseistä porttia. Mielestäni sen olisi pitänyt, koska tämä on aika yleinen portti, mutta laitoin silti uuden nmap skannin menemään pelkästään tälle yksittäiselle portille.
nmap -iL ip_osoitteet.txt -p 3306
Minulla on siis edelleen koneiden ip-osoitteet tallenettuna tuolla tekstitiedostossa, joten voin käyttää sitä tässä skannissa ping skannin ohittamiseksi. -p spesifoi minkä portin skannaamme, eli tuon 3306. Skannissa meni vain 2 sekunttia, koska ohitimme jo ping skannin tiedostolla ja tässä skannattiin pelkästään 1 portti. Ikävä kyllä yksikään portti 3306 ei ollut auki, vaan ne olivat joko closed tai filtered. Kokeilin silti tätä mysql tekniikkaa porttiin joka oli filtered, esimerkkinä kone 10.10.10.168.
mysql -h 10.10.10.168 --port 3306
Ei vastausta. Palomuuri siis ei varmaan palauta mitään paketteja mitä lähetämme tuohon porttiin, eli on siis vastaamatta. No, oli hyvä yrittää silti.
Seuraavaksi ajattelin kokeilla smbmap. Tässä tein saman porttiskannin koneita vastaan, mutta laitoin portin kohdalle vain 445. Tällä kertaa onnistuimme kuitenkin löytämään avoimen portin tuosta osoitteesta, ainakin hostilla 10.10.10.180. Kokeilen seuraavaa komentoa tätä konetta vastaan:
smbmap -H 10.10.10.180 -u caius
Tälläisen tuloksen saimme alkuun. No, varmaan antamani käyttäjänimi ei ollut toimiva, joten kokeilen vielä kerran mutta vaihdan tällä kertaa “caius” -> “admin” ja katson mitä tapahtuu, tai pääsemmekö yhtään pidemmälle. Ei toiminut sekään. Tässä varmaan halutaan salasana myös. Kokeilin nyt vielä legendaarista ja laitoin komennon perään “-p admin” eli kokeilen kirjautua tunnukselle admin admin. Sekään ei onnistunut, eli varmaan ei ole näin helppoa tapaa päästä tähän boxiin kiinni, mutta demosi silti hyvin miten tämä toimii.
On itseasiassa vaikeampi löytää enemmän ohjelmia mitä 0xdf käyttää, sillä recon vaiheessa olen huomannut lähinnä näiden 4 ohjelman käyttöä: nmap, gobuster, mysql, smbmap. Olen tässä raportissa jo kokeillut jokaista neljää, joten jätän tämän tehtävän nyt tähän, koska kävin tosi monta raporttia läpi mutta en ihan löytänyt mitään ohjelmia mitä voisin heti alkaa käyttämään boxeihin. Käytin sen lisäksi myös metasploittia ja niktoa, vaikka en olekkaan vielä nähnyt 0xdf:n käyttävän niktoa mihinkään.
d) Tee WebGoatista lisää tehtäviä niin, että olet ratkaissut yhteensä 20-25 tehtävää.
Viimeksi jätin 19 ratkaistuun tehtävään webgoatin, joten tarvitsemme vain muutaman tällä kertaa. Katsotaan kuinka monta tulen ratkaisemaan, riippuu ajasta ja siitä kuinka helppoja tehtävät ovat. Vielä pitäisi saada mitmproxy actioniin, en ole päässyt käyttämään sitä vielä kunnolla.
Jatkan paikasta Cross-site Scripting (XSS) ja kohta Cross Site Request Forgery (CSRF). Tämä oli hieman hämmentävä tehtävä, enkä ihan aluksi tajunnut mitä tässä oli tarkoitus tehdä.
Tässä siis “email” mikä lähetetään kirjoitetaan tuohon tekstikenttään, ja sinne on tarkoitus saada malicious url rakennettua. Alhaalla näkee parit viestit jotka olen tehnyt jo testinä.
Luettuani tehtävänannon pari kertaa, tein tälläisen urlin:
Tällä pääsin läpi, eli idea oli aluksi oikein mutta ei tietysti olisi toiminut. 20 tehty.
Kohta CSRF promt by-pass. Hyvin samanlainen kuin aiempi kohta, mutta tässä piti lisätä meidän malicious urliin stringi CONFIRM. Ensin ajattelin tehdä sen tyylillä
Eli tuossa pitää vain käyttää = eikä & niinkuin muissa kohdissa. En ihan ymmärrä koko tuota urlin tekoa ylipäätään, mutta pääsin silti tuolla tehtävästä läpi. 21 tehty.
Skippasin seuraavat tästä cross-site scripting sektionista, koska ne tehtävät olivat aika hämmentäviä ja halusin tehdä jotain muuta. Jätän tähän kohtaan tällä hetkellä koska aika on vähissä, mutta teen vielä tehtävän mikäli ehdin.
e) Kimmo Koskenvuo TrafiCom:lta (ent. Viestintävirasto) opettaa ensi viikolla malware-analyysia CinCan:lla. Silmäile CinCan.io. Asenna ympäristö, jossa voit ajaa CinCania. Ubuntu 18.04, yli 6 GB RAM, yli 4 GB levyä. Ainakin tuo RAM vaatimus on isompi kuin mitä tyypillisessä virtuaalikoneessa on. Monet työkalut vaativat paljon RAM:ia, ja enemmän on parempia. Eikä haittaa, vaikka leyväkin on enemmän. (Laitan myöhemmin viestiä, haluaako Kimmo meidän asentavan koko ohjelmiston etukäteen).
Tämä asennus kohta piti näköjään raportoida, joten teen nyt asennuksen tässä ja näytän sen samalla. Eli tehdään aluksi uusi kone virtualboxissa, ja asetetaan sille vähintään 6gb ram ja 10gb disk spacea. Itse asensin koneelle 12gb ramia ihan varmuuden vuoksi ja myös 25gb disk spacea, eli huomattavasti yli sen mitä tarvitsi. Asennuksen jälkeen meidän pitää vielä asentaa muutamat ohjelmat. Aloitetaan sudo apt-get update. Sen jälkeen asennetaan docker. sudo apt-get install docker -y. Tarvitsemme myös python 3.6 tai uudemman, ja sitä varten sudo apt-get install python3.6 -y. Meidän järjestelmällä olikin kuitenkin jo viimeisin python versio, joten mitään ei tapahtunut.
Seuraavaksi cincan. Tätä ei ladatakkaan apt-get, vaan käytämme siihen pippiä: pip install cincan-command. Kone kuitenkin huomautti, että meillä ei ole vielä pip asennettuna, joten sitä ennen sudo apt-get install python-pip -y . Tämän jälkeen emme vieläkään kuitenkaan pystynyt lataamaan cincania tuolla aiemmalla komennolla, joten aloin googlaamaan ja löysin guiden cincanin asentamiseen (Lähde 5). Kokeilin pip install cincan-command --user , mutta en silti saanut sitä toimimaan, ja mietin pitkään minkä takia. Mutta sitten tajusin että olen asentanut pipin python 2 enkä 3. Näin ollen, asensin pipin python3 tällä komennolla: sudo apt-get install python3-pip. Sen jälkeen käytin komentoa pip3 install cincan-command –user (huom. ei pelkkä pip, vaan pip3). Tämän jälkeen sain terminaalin tekemään sitä mitä halusin sen tekevän, ja se asensi minulle cincan. Kokeilin tämän jälkeen vielä cincan list , ja hyvin näytti toimivan, eli kaikki OK.
Viimeiseksi piti asentaa minion. Ohjeet löytyivät täältä: (Lähde 6). Voimme asentaa minionin komennolla pip3 install git+https://gitlab.com/cincan/minion. No, olisi varmaan kannattanut ottaa huomioon että meillä ei ole vielä gittiä tällä laitteella, joten sekin pitää asentaa alusta. sudo apt-get install git -y. Kokeilemme nyt ensimmäistä komentoa uudestaan, ja se toimii hienosti. Siellä vielä sanotaan että pitää tehdä komento “minion use” jotta se ottaa käyttöön jotkut tietyt säännöt? En täysin varma mitä tällä tarkoitetaan, mutta tehdään silti. Komennon tekemisen jälkeen ymmärsin että kyseessä ei ollutkaan asennus prosessi, vaan nämä säännöt liittyvät tämän komennon käyttöön, en vain lukenut dokumentaatiota kunnolla ensimmäisen kerran.
Mutta nyt meillä pitäisi olla kaikki tarvittava softa asennettuna, ja olemme valmiita tiistain videoluennolla ja workshoppiin.
a) Demonin asetukset. Säädä jokin demoni (asenna+tee asetukset+testaa) package-file-service -rakenteella. Tunnilla muutettiin ssh:n porttinumeroa, joten tee jotain muuta.
Pitkän mietinnän jälkeen päätin asentaa orjille mysql-serverin ja muokata sen porttia. Asennus onnistui pkg.installed toiminnolla, mutta sitä ennen tein uuden kansion /srv/salt nimeltä mysql. Sen sisälle loin init.sls tiedoston, johon kirjoitin seuraavan:
mysql-server:
pkg.installed
Tämä siis tarkistaa onko mysql-server asennettuna, ja jos ei niin se asentaa sen. Seuraavaksi kirjoitin top fileen seuraavan:
base:
'papunorja':
- mysql
Asensin vain yhdelle orjalle koska halusin ensin kokeilla toimiiko tämä komento kunnolla (tosin minulla on tässä kohtaa vain 2 orjaa, joten ei sillä ole niin paljoa väliä). Tämän jälkeen ei tarvinut muuta kuin kirjoittaa
sudo salt '*' state.apply
Nyt se siis asensi mysql-serveri toiselle orjalle, ihan vain että voisin kokeilla missä config file on mysql-serveriin ja mitä siellä voi tehdä ennenkuin teen mitään muuta.
Löysin muokattavan mysql conf filen /etc/mysql/my.cnf . Siellä ei lue mitään paitsi oikeastaan parit kommentit siitä että mikä se tiedosto on, yms. mysql –help saa kuitenkin listan variableista mitä voi muokata, ja yksi niistä on default portti. Tällä hetkellä meidän default port on 0 koska en ole laittanut remote accessia päälle, mutta teen sen ensi kohdassa. Nyt alkuun haluan kuitenkin vain muokata mikä default port on, joten teen kopioin nyt alkuun tämän configuraatio tiedoston ja laitan sen /srv/salt/mysql kansioon:
sudo cp my.cnf /srv/salt/mysql
Komento siis juostu /etc/mysql/ kansiosta. Nyt meillä on kopio configuraatio tiedostosta mysql kansiossa, ja voimme muokata tämän asetuksia. Voimme tarkastella muutettavia parametrejä
mysql --help
avulla. Näämme esim. tälläisiä asetuksia:
Siellä oli paljon muitakin, mutta päätin laittaa jotain tuohon “user” kohtaan joka siis käsittääkseni määrittelee default userin. No, en tiedä oikeasti, mutta kokeillaan. Kirjoitin kopioituun my.cnf tiedostoon
user caius
Ei mitään hajua toimiiko tämä vai ei, jonka takia otin kopion alkuperäisestä sql my.cnf vielä uudestaan jotta voimme korjata virheemme mikäli sellaisen olemme nyt tekemässä. Seuraavaksi vain menin muokkaamaan init.sls tiedostoa /srv/salt/mysql kansiossa, johon tein seuraavan lisäyksen
Sormet ristiin ja toivotaan parasta. Pistän nyt state.apply.
Tämmöinen virhe tuli. Lähin selvittämään ongelmaa googlaamalla tuon virheen, mutta sitä tehdessäni tajusin että olin kirjoittanut init.sls tiedostoon “file_managed:” enkä “file.managed:” niinkuin piti. Korjasin tämän ja kokeilin uudestaan state.apply. Tällä kertaa salt ei valittanut ja kertoi tehneensä muutokset, tai spesifisti ottaen, lisäsi tiedostoon /etc/mysql/my.cnf uuden linen “user caius” jonka olin muuttanut siellä kopioidussa my.cnf tiedostossa.
Katsoin vielä manuaalisesti että tämä muutos oli tapahtunut.
Periaatteessa olin tässä kohtaa jo valmis, sillä onnistuin tavoitteessa: muuttaa jonkun daemonin asetuksia. Ja tämähän oli siis asetus. Nyt ainut kysymys oli siinä, teinkö mitään oikein, joten kokeilin vielä sitäkin:
Näköjään kaikki ei mennyt ihan putkeen… Hyvä että kokeilin vain testikoneeseen tätä muutosta, enkä laittanut tätä kaikkiin koneisiin. Googlella löysin tälläisen stackoverflowsta vastauksen, jossa näin että olin konfannut aika väärin näköisesti my.cnf tiedoston, joten kokeilin uutta formaattia ensin (lähde 1). Tämä siis tarkoittaa että tiedostossa lukee “user = caius” eikä vain “user caius”. Uudestaan vain state.apply ja katsotaan mitä tapahtuu. No, ei vieläkään toimi, vaan antaa saman virheen kuin yläpuolella.
My.cnf tiedostoon on kuitenkin kommentoitu jonkun verran apua, ja löysin sieltä linkin jossa selitetään enemmän (lähde 2) conf filen säädöstä. Päätin palauttaa original my.cnf filen että voin käyttää system komentoja (ne eivät toimi jos my.cnf file on väärin). No, tajusin myös tosta error messagesta että joku group siellä pitäisi varmaan olla. Aiemmista lähteistä huomasin (lähde 1) että siellä oli groupit laitettu my.cnf tiedostoon joten kokeilin sitä seuraavaksi. Lisäsin siis my.cnf fileen [mysqld] ennen “user = caius”. Tällä kertaa mysql käynnistyi, mutta en kyllä rehellisesti ottaen tiedä mitä tuo “user = caius” teki. Olisihan tuolta voinut porttiakin muuttaa, mutta vaikutti vähän turhan isolta säädöltä tämä loppu, joten jätin tekemättä mitään muuta. Mielestäni pääasia että sain nämä uudet asetukset toimimaan ongelmitta. Tämänhän olisi voinut soveltaa muihinkin asetuksiin, mutta en keksinyt mitään järkevää.
b) Uusi ohjelma. Asenna + tee asetukset + testaa jokin sovellus, jota ei ole käsitelty tunnilla. Asenna ensin käsin, ja käytä sen jälkeen find-komentoa etsiäksesi muuttuneet tiedostot.
Päätin asentaa sellaisen ohjelman kuin weechat, jota käytetään chat roomeissa puhumiseen. Katoin dokumentaatiota sen verran että siinä ei pitäisi olla man-paget päällä by default, joten olisi hyvä alku asentaa weechat orjille ja tehdä niin että man-paget menevät päälle, joten päätin tehdä sen. Näin weechatin asetukset sen omasta dokumentaatiosta (Lähde 3)
Asennetaan ensin paikallisesti, ja tehdään asetukset sitä kautta:
sudo apt-get update
sudo apt-get install weechat
Sitten kokeillaan toimiiko weechatissa man paget. Ikävä kyllä toimi, mutta voidaan vain tehdä niin että man-paget ovat pois päältä (vaikka näin ei haluttaisi normaalisti toimia) ihan vain testin vuoksi.
Päätinkin jättää man-pagejen säädön sikseen, koska näyttää siltä että luin dokumentaatio väärin. Sen sijaan päätin tehdä niin, että laitan weechattiin serverin, sillä ne pitää manuaalisesti laittaa. Päätin käyttää chat.freenode.net tässä esimerkkinä.
Weechatin dokumentaation mukaan serverin lisääminen onnistuu komennolla
/server add freenode chat.freenode.net
Tässä siis chat.freenode.net on serverin osoite, ja freenode sen serverin nimi miksi sitä kutsumme kun käytämme /connect. Hyvä huomioida myös että nämä komennot toimivat vain jos ollaan kirjoitettu weechat ennen sitä jotta päästään heidän omaan “terminaaliinsa”. En tiedä miksi kutsua sitä.
Saimme kuitenkin weechatin toimimaan niin että pääsimme chat.freenode.net connectaamaan. Nyt haluamme tämän saman myös orjille.
Halusin tutkia mitkä tiedostot muuttuvat kun lisään uuden serverin weechattiin, mutta huomattavan monta tiedostoa itseasiassa muuttui. Selvitin tämän komennolla
find -printf ‘%T+ %p\n’| sort
Juostuna rootista. Tämä sai minut vähän huolestuneeksi, sillä jos /server add muokkaa jokaista tiedostoa, tulee olemaan aika mahdotonta tehdä taikatemppuja jokaiselle niistä saltissa. Kokeilin lisätä uutta serveriä jota ei ollut olemassa /server add testi irc.testi.com komennolla, mutta se taas ei tehnyt muutoksia mihinkään paitsi log fileen. Sen takia kokeilin seuraavaksi lisätä oikeaa irc serveriä: /server add jokuirc irc.de.ircnet.net
Ikävä kyllä tämäkään ei tuottanut mitään tuloksia. Selasin kuitenkin weechatin conf tiedostoja, ja näin jotain mielenkiintoista: irc.conf sisälsi kaikki lisäämäni serverit, ja ison osan asetuksia mitä siellä on. Tästä innostuneena tietysti kopion koko tiedoston /srv/salt/weechat johon olin siis luonut tiedostoja juuri tätä varten.
Sitten vain /srv/salt/weechat/init.sls johon kirjoitin seuraavan:
Tämän jälkeen piti vielä toki käydä top.sls tiedostoa muokkaamassa niin, että siellä luki:
'etäorja':
- weechat
Sitten vain sormet ristiin ja state.apply ja katotaan toimiiko ylipäätään. Tämä on onnistunut jos orjalta pääsee suoraan connectaamaan freenodeen, eli sinne chat.freenode.net, ilman että asentaa mitään erikoisempia.
No eipä tietenkään toiminut suoraan.
eli ./. ei toiminut file pathina, en tiedä miksi ajattelin niin. Weechattihan on käyttäjän home directoryssä, joten tehdään sinne absolute path tuon ./.weechat sijaan:
~/weechat/irc.conf
Tuo uusi file pathi toimi kohteeseen, mutta nyt salt valittaa että se ei löydä tiedostoa /srv/salt/weechat/weechat.conf , vaikka olen moneen kertaan tarkistanut että kirjoitin file pathin oikein ja että tiedosto on siellä ihan sen nimisenä. Muutin jopa tiedoston sijaintia /srv/salt ja muutin sen nimen irc.conf , mutta mikään ei toimi.
Lopulta luovutin ja käytin /home/papu/.weechat/irc.conf tiedoston kohteena, vaikka tämä ei tietenkään toimisi jos meillä olisi useampi laite, minkä takia halusin helpon tavan päästä käyttäjän home directoryyn. Hyvä uutinen on siinä, että ideani toimi ja sain orjalla /connect freenode toimimaan irc.conf tiedoston avulla. Tässä kuva orjalta:
Ei oltu missään säädetty freenoden osoitetta tai mitään muulla kuin masteri koneella, ja irc.conf filen annettua orjalle saimme saman toimimaan sillä, vaikka emme itse orjalla tehneet koko /server add prosessia. Tämä siis hyvä demo siitä miten saatiin joku asia joka tehtiin ensin paikallisesti toimimaan myös orjalla tiedostoja käyttämällä.
c) Aja jokin tila paikallisesti ilman master-slave arkkitehtuuria. Tutki debug-tulostetta. ‘sudo salt-call –local state.apply hellotero –state-output terse’
Tehtävänannossa annettiinkin meille komento mitä käytämme, eli tuo sudo salt-call –local state.apply (state tähän) –state-output terse. Päätin kokeilla tätä kahdella eri moduulilla lokaalisti, toisen jonka pitäisi toimia ja toisen jonka ei pitäisi toimia.
Aloitan mysql moduulilla, eli laitan tuohon aiempaan komentoon mysql (state tähän) tilalle. Saan tälläisen outputin:
Kaikki näyttää toimivan ihan erinomaisesti. Kuten näemme, salt kertoo meille että tulos oli clean ja mitään ongelmia ei tapahtunut. Tämän staten juoksemiseen meni 840 millisekunttia, joka on siis 0.8 sekunttia, tosin tämä ei kaida olla oikea aika. Laitoin time komennon tämän komennon eteen oikean ajan saamiseksi, ja se oli noin 6 ja puoli sekunttia.
Seuraavaksi haluaisin kokeilla toista statea jonka ei pitäisi toimia lokaalisti. Tämän staten nimi on weechat, ja tämän pitäisi toimia vain eräällä toisella orjalla. Kokeillaan mitä tapahtuu:
Okei, mitä tässä tapahtui? Jos katsomme error viestiä, huomaamme että se valittaa jotain “parent directory not present”. Tämä tarkoittaa sitä että salt ei löytänyt tätä tiedostopolussa mainittua kansiota, joka on siis /home/papu/.weechat/irc.conf. Syy on simppeli: tällä koneella käyttäjän home directory ei sijaitse /home/papu, vaan /home/caius. Se on yksi suurimmista ongelmista viime kohdassa, johon minulla ei vieläkään ole ratkaisua. Sen takia sanoin että tiesin että tämä ei tule toimimaan, sillä tämä salt state toimii vain ja ainoastaan toisella orjalla. Toinen funktio kyllä toimi ihan moitteettomasti, mutta se oli vain pkg.installed weechattiin joten tässä se tarkistaa onko koneella weechat ja jos ei niin se asentaa sen, eli kaikki OK koska tällä koneella on jo weechat. Tämän komennon juoksemiseen meni melkein 7 sekunttia, hieman pidempään kuin aiempi, luultavasti virheen takia vaikka muuten ne ovatkin erittäin samanlaisia stateja.
Saamme hackthebox.eu koneille yhteyden openvpn kautta. Tätä varten joudumme lataamaan openvpn ohjelmiston, sekä connection packin jota käytämme yhteyttä muodostaessamme. On tärkeää, että varmistumme siitä että olemme oikeassa verkossa emmekä vahingossa ala skannaamaan internetissä olevia laitteita, sillä se on rikos Suomessa. OpenVpn pack ladataan HTB:n sivuilta, mutta sitä ei voi saada ilman hyväksyttyä käyttäjätunnusta hacktheboxissa. Mutta se on siis meidän lähde (Lähde 1).
Virtualboxin laitteet ovat osoitteessa 10.10.10.0-255, eli kaikkien skannausten pitäisi rajoittua vain tälle alueelle. Kokeillaan, olemmeko oikeassa verkossa ensin pingin avulla, eli pystymmekö pingaamaan oikeita koneita openvpn päällä, ja pystymmekö pingaamaan niitä openvpn pois päältä. Pingaus ei ole rikollista toimintaa, eikä siitä voi joutua vaikeuksiin, joten vaikka pingaisimme väärää laitetta, ei sillä ole väliä. Tässä olen valinnut pingin kohteeksi laitteen 10.10.10.168 joka näkyy hackthebox.eu sivulla.
Tässä kuvassa meillä on siis 2 terminaalia auki, toinen näyttää openvpn yhteyden, ja toinen on pingaamista varten. Kuten näemme, pystyimme openvpn päällä pingaamaan laitetta 10.10.10.168 onnistuneesti, eli meillä on yhteys siihen. Nyt mikäli pystymme pingaamaan sitä vielä openvpn pois päältä, tarkoittaa se että emme jostain syystä pingaa oikeaa laitetta, sillä meillä ei pitäisi olla yhteyttä tähän laitteeseen ilman openvpn yhteyttä. Kokeillaan:
Kuten kuvasta näkyy, emme yrityksestä huolimatta saaneet samaa laitetta pingattua ilman openvpn yhteyttä. Tämä siis tarkoittaa että olemme toimineet oikein, ja openvpn yhteys on toimiva.
Tehtävä b)
Tiedämme nyt siis että hacktheboxin laitteet sijaitsevat verkossa 10.10.10.0/24 (24 tarkoittaa samaa kuin 255.255.255.0, eli kuvaa sitä kuinka subnetmaskissa on 24 bittiä). On siis tärkeää että varmistumme siitä, että skannimme rajaantuvat pelkästään tälle alueelle. Voimme tehdä perusskannauksen nmapilla komennolla nmap -oA nopea_port_skan 10.10.10.0/24. Tämä siis skannaa hacktheboxin subnetin, ja se tekee sen perusasetuksilla, eli se tulee skannaamaan 1000 tavallisinta porttia ja tekee samalla host discoveryn.. Se samalla kirjoittaa nämä tiedot tiedostoon nopea_port_skan 3 eri muotoon (-oA <tiedoston_nimi>). Tiedostoon on hyvä kirjoittaa sen takia, että jokaisessa portti skannissa menee jonkun verran aikaa, joten näin saamme saadut tiedot talteen eikä meidän tarvitse portti skannata kohdetta uudelleen mikäli unohdamme tiedot.
Tähän ekaan skanniin meni peräti 18 minuuttia ja 46 sekunttia. Tämän takia onkin tärkeää, että kirjaamme tiedot ylös tiedostoon, sillä yksinkertaisissakin skanneissa menee pitkään. Löysimme yhteensä 18 hostia, jolla on monenlaisia palveluita auki. Esimerkiksi 10.10.10.180 löysimme peräti 9 avointa porttia, jossa juoksi ftp, http ja nfs palveluita esimerkiksi. Tai no, tässä kohtaa emme ole vielä täysin varmoja siitä mitä palveluita näillä porteilla on, sillä nmap vain arvaa palvelun tässä kohtaa porttinumeron perusteella, ja meidän pitää suorittaa syvempi skannaus jotta tiedämme tarkalleen mitä portilla on ja minkälaisia versioita ohjelmista siellä on. Haluan vielä suorittaa syvemmän portti skannauksen käyttäen tätä tietoa mitä olemme nyt saaneet kohteista irti, joten tulen suorittamaan vielä lisää portti skannauksia. Parempi tapa toimia olisi varmaan ollut ensin tehdä pelkkä host-discovery skan, jolloin olisimme saaneet listan ip-osoitteista jota sitten olisimme portti skannannut. Tämä olisi nopeuttanut tätä prosessia.
Päätin grepata tästä skannista ip-osoitteet, jotta service skanni -sV nopeutuisi, eikä se tekisi ensin host discoveryä. Tein sen tällä komennolla grep -oE “\b([0-9]{1,3}\.){3}[0-9]{1,3}\b” nopee_port_skan.nmap | cat > ip_osoitteet.txt. Nyt saimme siis tekstitiedoston, missä kaikki kohteet ovat, joten voimme vain käyttää sitä seuraavassa skannissa. Tehdään nmap -sV -iL ip_osoitteet.txt, ja seuraava skanni lähtee päälle. Tällä kertaa skannaamme siis versiot mitä porteissa olevat palvelut käyttävät.
Skannin suoritettuani unohdin että unohdin kirjoittaa tulokset tiedostoon komentoa tehdessäni, joka oli virhe, koska tähän skanniin meni kuitenkin yli 21 min aikaa. Tajusin tässä koko tehtävän aikaisessa toimintatavassa monta eri virhettä, kuten esimerkiksi sen että ensimmäisen skannin olisi pitänyt olla vain host discovery skanni jolla olisimme saaneet ip-osoitteet, ja sen jälkeen olisi pitänyt suorittaa itse services skanni. Kaikki skannien tulokset olisi myös pitänyt ottaa ylös talteen.
Analysoin yksittäisiä laitteita mitä service skannissa tuli. Esimerkiksi skanni 10.10.10.181 paljasti meille laitteen jossa on 3 aukinaista porttia, 22, 80 ja 8000. Portilla 22 on ssh palvelu jonka versio on OpenSSH 7.6p1, kun taas portilla 80 juoksee apache webserveri versiota 2.4.29. Portilla 8000 on tcpwrapped, joka siis tarkoittaa että se mitä tällä portilla on on suojeltu tcpwrappedin avulla. Nopealla googlauksella näkee, että openssh 7.6p1 on enumeration exploit, eli hyökkääjä pystyy selvittämään mitkä käyttäjänimet ovat oikein. Myös tässä apachen versiossa vaikuttaisi olevan haavoittuvuuksia, erityisesti privilege code execution exploitti, jolla siis pystymme tekemään asioita esim. rootin käyttöoikeuksilla. Tämä exploit siis antaa meille rootin käyttöoikeudet. Tein vielä niin, että kävin webserverissä itse paikalla nopeasti katsomassa miltä siellä näyttää:
No näköjään joku on jo tehnyt kaiken työn meille (melkein). En nyt kuitenkaan lähtenyt ratkomaan tätä boxia mutta sen verran sain tältä tiedosteltua 🙂
Toinen laite jota analysoin on 10.10.10.165. Siellä oli portit 22 ja 80 auki, ja portilla 22 oli sama openssh versio kuin 10.10.10.181 eli openssh 7.9p1, ja portilla 80 toimi webserveri versiota nostromo 1.9.6. Tuolla nostromon versiolla on olemassa remote code execution exploit CVE:llä 2019-16278. Kävin myös tämän palvelimen sivuston läpi:
Näköjään joku web dev sivu. En mennyt tätä pidemmälle, analysoin vain boxia ja vähän katselin miltä se näyttää. En tiedä mitä muuta voisin analysoida jos en ala ratkomaan itse boxeja, johon minulla ei tällä hetkellä ole aikaa, mutta saatan tehdä sen tulevaisuudessa 🙂
Tehtävä c)
Tehtävät tehty webgoat 7.
Laskujeni mukaan olen tehnyt jo 9 kohtaa, joten vielä tarvitaan 6 lisää (ainakin) katsotaan kuinka pitkälle pääsen. Jatkan kohdasta Silent transactions attacks (ajax security). Tätä kohtaa en ihan rehellisesti tajunnut, joten liikuin eteenpäin jos tulisi sellainen vastaan minkä osaisin tehdä.
Liikuin suoraan eteenpäin authentication flaws kohtaan, sillä minusta tuntui että AJAX securityssä jäljellä olleet tehtävät olisivat semmoisia mitä en pystyisi itse tekemään ilman apua.
Authentication flaws: password security. Tässä piti kokeilla eri salasanoja eräällä sivustolla ja kertoa kuinka monta sekunttia/tuntia/päivää niiden ratkomiseen menisi pöytätietokoneella. Tietokoneista on kuitenkin tullut nopeampia ajan myötä, sillä luvut mitä webgoat odottaa eivät ole enään samoja kuin mitä sivusto antaa nykyisin, vaan ne ovat huomattavasti nopeampia. Ratkaisin siis “tehtävän” mutta webgoat ei tätä tiennyt.
Seuraavassa kohdassa “forgot password” piti saada password recovery jonkun toisen käyttäjällä. Valitsin käyttäjänimeksi “admin” ja pyysin salasananpalautusta. Palvelu kysyi lempiväriäni, kokeilin ensin punaista, ei toiminut. Sitten sinistä, ei taaskaan toiminut. Mutta sitten kokeilin vihreää, ja se toimi, ja sain uuden salasanan sivustolta jolla pystyisin kirjautumaan tälle admin käyttäjälle. 11 tehtävä tehty.
Seuraavat 2 kohtaa olivat bugisia ja eivät oikein toimineet, joten skippasin.
Buffer overflow, en tajunnut miten sen voi tehdä.
Code quality, discover clues in the HTML. Tässä kohtaa piti tutkia HTML koodia kommenttien varalta, ja kuinkas ollakkaan, koodiin oltiin kommentointu “admin:adminpw” eli admin tunnuksen kirjautumistiedot. Käytin niitä kirjautumiseen ja pääsin sisään admin tunnuksilla. 12 tehty.
Concurrency: thread safety problems. Tässä kohdassa oli 2 käyttäjää joilla olisi voinut kirjautua: jeff ja dave. Tehtävässä piti koittaa kirjautua molemmilla samanaikaisesti ja katsoa mitä tapahtuu. Avasin uuden firefox tabin, ja kirjoitin siihen dave, ja alkuperäiseen jeff. Sen jälkeen painoin submit nappia molemmilla, ja dave sai itseasiassa jeffin tiedot. Jeff sai myös omat tietonsa, mutta kun nämä kaksi asiaa tapahtuivat samaan aikaan pääsi dave näkemään jeffin tietoja mitä hänen ei ollut tarkoitus nähdä. 13 tehty.
Seuraavaksi otin concurrencystä “shopping cart concurrency flaw” kohdan. Tässäkin avasin 2 tabia firefoxia samasta tehtävästä. Ensin koitin ostaa 2 eri tuotetta samaan aikaan, mutta olin laittanut ne shopping cartille ja molemmat tabit päivittyivät samaan aikaan oikein, eli en saanut ostettua esinettä halvempaan hintaan. Seuraavaksi koitin tehdä niin että päivitän ostoskorini kalliimmalla esineellä samalla kun olen ostamassa toisella välilehdellä halvan esineen. Tämä toimi, ja sain ostettua kaupan kalleimman esineen halvimman hinnalla. Tehtävä läpi, ja seuraavaan kohtaan. 14 tehty.
Liikun nyt kohtaan Cross-site scripting (XSS) ja alan tekemään ensimmäisestä tehtävästä eteenpäin, eli kohdasta “phishing with XSS”. Tätä kohtaa en osannut ihan itse tehdä, joten skippasin.
Seuraavassa kohdassa eli “stored xss attack” pystyi kirjoittamaan foorumille viestejä. Laitoin viestin titlellä “testi” ja viestin sisään seuraavanlaisen koodipätkän:
<html>
<body>
<button onclick="testiFunktio()"> Tämä on testi </button>
<script>
function testiFunktio() {
alert("You have been compromised!")
}
</script>
</body>
</html>
Tämä siis luo napin jota painamalla skripti juoksee, ja tässä tapauksessa se luo alert() boxin joka sanoo “You have been compromised!”. Viestin luotuani painoin sitä, ja sen jälkeen painoin vielä tekemääni nappia, ja alert boxi ilmaantui. Ajattelin että tämä riittäisi, ja kyllä se riitti kohdan läpäisyyn. Pitää vielä sen verran mainita että ensin olin tehnyt funktion niin että se veisi käyttäjän nappia painamalla google.com, ja kyllähän se toimi, mutta en ajatellut niin pitkälle että en pääse kohdasta läpi sillä poistuin samalla sivulta. Olisi varmaan voinut tehdä tämän myös helpommin, no kirjotin enemmän. 15 tehty.
LAB: cross site scripting. Kohta 1. Piti tom cattina tehdä stored XSS attack editprofile:n avulla. Eli painoin tomina EditProfile, ja laitoin kohtaan street <script>alert(“testi”)</script>. Tämän jälkeen kirjauduin jerrylle ja katsoin tomin profiilisivua johon tämän XSS attackin laitoin, ja jerrylle tuli tämä alert. Pääsin läpi. Stage 2 oli tämän patchaamista, ja toimi vain webgoatin dev versiolla, joten skippasin. 16 tehty.
Stage 3 ei oikeastaan tehty mitään, piti vain kirjautua käyttäjällä david ja katsoa brucen profiili jossa oli XSS attack, no okei, se toimi. Eteenpäin (17 tehty).
Stage 4 on webgoatin dev versio only, joten skip.
Stage 5, kirjoitin vain search staff input fieldiin <script>alert(“testi”)</script> ja pääsin tästä kohdasta läpi. 18 tehty.
Stage 6 dev mode only, skip.
Reflected XSS attack kohta. Pistin vain <script>alert(“testi”)</script> erääseen input fieldiin jonka jälkeen painoin “purchase”, jolloin alert tuli näkyviin ja pääsin kohdasta läpi. 19 tehty.
Tämän jälkeen orjalle tulee kuitenkin kertoa, missä masteri on, tai muuten se ei saa siihen yhteyttä, eikä homma tietenkään toimi. Muokataan orjan asetuksia:
sudoedit /etc/salt/minion
Sieltä meidän pitää etsiä kohta “master” ja kirjoittaa siihen mestarikoneen IP-osoite, joka saadaan nyt esimerkiksi komennolla hostname -I. Voimme myös antaa orjalle oman ID:nsä, tässä olen antanut sen ID:ksi/nimeksi papunorja (ei pakollista).
Restartataan minioni:
sudo systemctl restart salt-minion.service
Nyt sen pitäisi yhdistää mestariin, mutta mestarin pitää silti hyväksyä orja osaksi tätä systeemiä. Tehdään tämä näin:
sudo salt-key -A
Unaccepted Keys:
papunorja
Proceed? [n/Y]
Key for minion papunorja accepted.
Nyt voimme antaa erilaisia komentoja orjalle, kuten vaikka ‘pwd’. Terminal komentoja pystyy antamaan vaikka näin:
sudo salt '*' cmd.run 'pwd'
PS: asensin orjan ja mestarin samalle koneelle tässä harjoituksessa.
b) No nyt pääsi unohtumaan mikä se idempotenssi on, mutta oletan että pitää ensimmäinen state tehdä. Aloitetaan sillä että mennään /srv/salt/ ja tehdään sinne top.sls tiedosto., ja sitten vaikka foo.sls. Nyt tänne foo.sls lisätään vaikka joku simppeli hello world tyyppinen hommeli. Mutta ennen sitä teemme tiedoston foo.sls /srv/salt/ sisälle ja kirjoitamme sinne näin:
file.managed varmistaa että jos foomoi.txt tapahtuu muutoksia, tulevat ne muutokset tapahtumaan myös jokaisessa orjassa. Foomoi on siis vaan tiedoston nimi. Tämän tiedoston sisältö (foomoi.txt) on vain
Hello world!
Tallennetaan sekin. Nyt teemme
sudo salt '*' state.apply foo
Tämä lisää tämän staten kaikkiin orjiin. Lopuksi, lisäämme tämän top.sls tiedostoon:
sudoedit /srv/salt/top.sls
Kirjoitetaan sinne:
base:
'*':
- foo
Voimme vielä lisätä muutokset top fileen välittömästi komennolla
sudo salt '*' state.highstate
c) Saamme orjista valtavan määrän tietoa kirjoittamalla
sudo salt '*' grains.items
Tähän sisältyy IP ja valtava määrä system informaatiota, kuten vaikka järjestelmä ja sen versio. En tiedä pitikö sen data sisällyttää tässä mutta oletan että ei koska se on vaan aika pitkä litania sinänsä turhaa informaatiota ja jos siellä on jotain tärkeätä niin en halua myöskään että julkaisen sen tänne julkisesti.
d) Kokeilin statea pkg.installed, joka siis asentaa ohjelman orjille/varmistaa että niillä on kyseinen ohjelma asennettuna. Luin saltin official dokumentaatiosta (lähde 2) että sen voi tehdä näin:
curl:
pkg.installed
Tässä siis esimerkkinä curl. Laitteella ei siis ollut etukäteen curlia asennettuna, laitoin tuon foo.sls ja päivitin sen staten komennolla
salt '*' state.apply foo
Tämä asensi laitteelleni curlin ongelmitta, vaikka ensin olin vähän skeptinen että toimisiko se oikeasti noin helposti, mutta näköjään toimi. Ei virheitä, ja curl toimii normaalisti.
GNU license on General Public License joka antaa kaikille oikeuden käyttää, kopioida, muuttaa tai jakaa ohjelmia tai niiden lähdekoodia.
LGPL eli Lesser General Public License voidaan liittää yhteen dynaamisesti ei-GPL lisensoitujen ohjelmien kanssa, jolloin ei tarvitse esim julkaista myös ohjelman lähdekoodia.
Kuvassa näkyy olevan Creative Commons BY lisenssi.
Tämän lisenssin säännöt kertovat että teoksen jakokäyttäjän on mainittava lähde asianmukaisesti ja merkitä tekemänsä muutokset.
No näin sen juuri äsken tehtäväannossa, en ihan ymmärrä mitä tämä kysymys tarkoittaa.
Xubuntu desktopin asentaminen & kysymykset
Isoin ero näiden desktoppien välillä on varmaan se että Xubuntussa ei ole side baria vasemmalla jossa on ohjelmia, vaan kaikki ohjelmat löytää vasemmasta yläkulmasta. Mitään muita merkittäviä eroja ei oikeastaan ole, paitsi tietysti että desktopin väri on erilainen.
Kuva xubuntu desktopista:
3. Mx linux on käytetyin linux distro, jonka jälkeen järjestyksessä tulevat manjaro, mint, debian ja ubuntu. Tilanne on täysin sama viimeisen vuoden ja viimeisen kuukauden aikana. (En löytänyt materiaalista statistiikkoja joten löysin omat, otettu täältä: https://distrowatch.com/dwres.php?resource=popularity
4. Varmaan jos ohjeissa luki että se tehdään niin olen sen tehnyt koska noudatan aina ohjeita.
Guest additions parantaa tehoa ja käytettävyyttä. Eli parantaa virtuaalikoneen ja pääkoneen toimivuutta keskenään.
This is the first post on my new blog. I’m just getting this new blog going, so stay tuned for more. Subscribe below to get notified when I post new updates.
This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.
You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.
Why do this?
Because it gives new readers context. What are you about? Why should they read your blog?
Because it will help you focus you own ideas about your blog and what you’d like to do with it.
The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.
To help you get started, here are a few questions:
Why are you blogging publicly, rather than keeping a personal journal?
What topics do you think you’ll write about?
Who would you love to connect with via your blog?
If you blog successfully throughout the next year, what would you hope to have accomplished?
You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.
Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.
When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.