Tunkeutumistestaus läksyjä, viikko 1

Webgoat tehtäviä

Näitä piti tehdä 5-10, joten teen niin monta kuin nyt ehdin. Tunnilla olin ehtinyt tehdä Access Control Flaw-kohdasta Stage 1:sen, joten jatketaan siitä eteenpäin. Tein näitä 3.4.2020 kali linuxilla virtualboxissa.

Klo 12:05. Seuraavana tehtävänä näyttäisi olevan Stage 3: Bypass Data Layer Access Control. Tässä pitää pystyä katsomaan toisen työntekijän profiilia normaalina käyttäjänä “Tom”, joka ei siis olisi normaalisti mahdollista muuta kuin admin oikeuksilla. Lähdin ratkomaan tätä tehtävää samalla tyylillä kuin Stage ykköstä jossa käytimme f12 sivun koodin muokkaamiseksi jolloin sivu luotti clientin tietoon. Kun katsomme profiililistaa mistä muiden henkilöiden profiilit näkee, näemme että siinä on vain yksi profiili, joka on meiän. Kun tutkin tätä elementtiä f12 niin huomaan kuitenkin että meillä on oma value, 105. Vaihdoin tämän kokeiluksi valueen 106 ja painoin viewprofile, jolloin pääsimme katsomaan Jerry Mousen profiilia, ja näin pääsimme tästä kohdasta läpi. Muutkin valuet toimivat ja näämme kaikkien työntekijöiden profiilin vaihtamalla vain valuen.

Klo 12.13. Seuraavaksi liikumme AJAX-security kohtaan LAB:DOM-based cross-site scripting. Tiedän cross-site scriptingistä sen verran että siinä voidaan injektoida javascript koodia sivustoon jonkun input kentän avulla, mutta en oikeen mitään muuta. Ekassa kohdassa pitää saada “Enter your name” input fieldin avulla laittaa joku kuva siihen? Ohjeet olivat aika epäselvät joten painoin “show hints”. No tämä sitten kertoi meille että senkun copy pasteet tämän siihen ja pääset eteenpäin: <IMG SRC=”images/logos/owasp.jpg”/>. Sivulle ilmaantui kuva ja pääsin eteenpäin.

Klo 12.20. Nyt on stage 2 ja pitäisi tehdä javascript alert käyttämällä image tagia. Öö, miten? Taas, minuuttien mietinnän jälkeen jouduin taas painamaan “show hints” mutta tällä kertaa se ei kertonut mitä pitää tehdä, vaan antoi vaan saman vihjeen kuin viimeksi, eli <IMG SRC=”images/logos/owasp.jpg”/>. No tämä ei auttanut ihan hirveästi. Kun painoin submit se kuitenkin kertoi meille että “only <img onerror.. attacks are recognized for success criteria”. Googlasin että mitä tämä on ja w3schools.com antoi meille seuraavan syntakstin (Lähde 2): <img src=”image.gif” onerror=”myFunction()”>. Okei, eli onerror tekee varmaan jotain mikäli kuva ei suostu lataamaan. Tämän tiedon kanssa laitoin <IMG SRC=”images/logos/owasp.jpg”/> kenttään, mutta poistin kuvapolun melkein kokonaan jotta saisimme sen virheellisen tilaan ja lisäsin siihen onerror:in perään: <IMG SRC=”i” onerror=”alert(testi)()”/>. En tiedä oliko mun syntaksti oikein, mutta webgoat sanoi että stage 2 completed ja siirsi minut eteenpäin, joten oletan että toimi ihan niinkuin piti.

Klo 12.27. Tässä kolmannessa kohdassa piti sitten käyttää iframe tagia javascript alertin saamiseen. Katoin tällä kertaa dyn-web.com:ista syntakstin ja siellä luki että http://demo.html. Kokeilin ensin <iframe alert(testi)()></iframe> , mutta valitti että ei toiminut. Sivusto sanoi että vain onload.. attackit toimii. Sain idean että mitä jos tekisin näin: http://images/logos/owasp.jpg. Kokeilin laittaa tätä tekstikenttään ja se toimi.

Klo 12.40. Kohta 4. Tässä sanottiin että copy pastee tämä login formiin (ihan tehtävänannossa, ei hinttinä). Tein näin ja pääsin tehtävän läpi. Okei? No vika kohta oli jotain patchaamista joten skippasin sen. Vaikka tässä tehtävässä olikin vähän useampi kohta niin oletan että tämä silti toimi vain yhtenä tehtynä tehtävänä, joten nyt on 2 tehtynä.

Pidin pienehkön tauon tässä ennenkuin liikuin eteenpäin. Klo 12.52. LAB: client side filtering. Tässä pitää pystyä katsomaan CEO:n profiilia ja kertoa mikä hänen palkkansa on, vaikka CEO ei näy työntekijälistassa, ja sitten pitää kertoa CEO:n palkka. Ihan ensinnäkin kokeilin taas f12 ja katsoin sivuston lähdekoodia. Näin että jokaisella työntekijällä on taas oma id:nsä, joten menin vaan listaa ylöspäin, koska viimeisin id jonka näin oli 110. 111 ei ollut CEO, mutta 112 oli, ja sain selville että CEO:n palkka oli 450000. Seuraavassa kohdassa piti patchata tämä, joten skippasin. Kolme tehtävää tehty.

Klo 12.55. Kohta DOM injection. Ei mitään hajua mikä DOM injection edes on, googlailin hieman mutta ei selventänyt niin paljon. Tehtävänannossa kuitenkin kerrottiin, että katso sivun html-koodia ja päättele siitä. No, katselin sitä jonkin aikaa inspect elementillä ja huomasin jotain mielenkiintoista “Activate!” napin kohdalla. Siellä on semmoinen value kuin “disabled”. Kokeilin poistaa sitä ja painaa nappia, ja pääsin eteenpäin. Tuntuu siltä että olin onnekas, mutta sitten taas käytin kyllä hyvän tovin tämän koodin läpi käymiseen. Luulin pitkään että input fieldin “onkeyup=”validate”(numeroita) oli ratkaisu tähän tehtävään, mutta en saanut selkoa siitä joten jatkoin.

Klo 13.18. Kohta XML injection. No taaskaan en oikeastaan ymmärrä mikä XML injection edes on, mutta lähdin liikkelle siitä että muutan jotain inspect elementillä. Kun olin kirjoittanut input fieldiin account ID:ni, näin mitä palkintoja voin saada. Kun inspect elementtasin näiden palkintojen checkboxeja, näin että koodissa luki “check1003”. Aiemmista tehtävistä opittuani ajattelin että jos muutan tämän numeron vaikka 1004, niin minun pitäisi saada jotain muuta kun mitä on ajateltu. Muutin parit checkboxit numeroiksi 1004 ja 1005, ja painoin submit. Sivusto antoi minulle läppärin ja havajin matkan, vaikka olisi pitänyt antaa t-paita ja kahvimuki. Pääsin tehtävästä läpi.

Klo 13.30. Kohta JSON injection. Tässä tehtävässä pitää saada hyvä lento halvan hinnalla. Ihan ensin kokeilin inspect elementillä muuttaa halvan lennon id:n kalliiksi lennoksi, jolloin olisin silti saanut kalliimman lennon halvalla, mutta tämä ei toiminut vaikka yritin. Seuraavaksi kuitenkin huomasin että myös hinnoilla oli omat ID:nsä, ja kokeilin samaa mutta hintojen kanssa: valitsin kalliin lennon ja muutin sen hinta-ID:n halvaksi lennoksi, joka toimi. Tai no, webgoat sanoi että onnistuin, mutta sain samalla pitkän error messagen: en ole varma onko tämä tarkoitettua, mutta jos sivusto sanoo että pääsin läpi niin se on kaikki millä on lopulta väliä.

No, tähän mennessä olen muokannut vain sivuston lähdekoodia ja päässyt tehtävistä läpi sillä. En tiedä onko näitä tarkoitus tehdä jotenkin muutenkin, mutta mitään työkaluja ei olla vielä opetettu joten en tiedä miten pystyn niitä käyttämäänkään kunnolla.

Darknet diaries analyysi.

Tähän analyysiin käytin podcastin jaksoa 55: NOIRNET. Jaksossa kerrottiin erään pentesterin keikka, jossa hän murtautui yrityksen verkkoon. Vaikka tämä kyseinen murtauminen käytti lähinnä social engineeringiä ja sitä että sai tökättyä laitteen fyysisesti kohteeseen, uskon että siitä voi silti tehdä samantyyppisen analyysin, koska siinä on monia cyber kill chainin vaiheita.

Jakso siis kertoo yksityisestä pentesteristä jonka työnä on päästä asiakasyrityksen verkkoon. Hän työskentelee erään toisen pentesterin kanssa, ja molempien tavat päästä sisään ovat hieman erilaiset: tarinan pentesterin kumppani pyrkii pääsemään sisään wireless hackkien avulla jossa hän pääsee vaikka yrityksen sisäiseen wifiin kiinni ja kalastelee sieltä tietoja, kun taas tarinan pentester itse menisi taloon sisälle ja asentaisi laitteisiin siellä laitteen jolla saisi sisäänpääsyn.

Skippaan tarinasta muut kuin ne kohdat jotka olivat oleellisia. Ihan ensimmäisenä cyber kill chainin vaiheena on tiedusteluvaihe. Pentester teki tämän kohdan sillä tavalla että ensinnäkin tutki minkälainen rakennus on kyseessä (kuinka monta kerrosta, missä ovet ovat) ja minkälaisia ihmisiä rakennuksesta menee ulos ja sisään. Hän huomasi että kaikilla oli oma id-badge mukana joko kaulalla tai vyöllä. Edestä päin katsottuna hänellä ei ollut samanlaista id-badgea, mutta sivusta katsottuna se oli samanlainen, jonka takia hän laittoi sen vyölleen niin, että siitä ei voinut kertoa että se ei ollut oikeanlainen badge. Tässä kohtaa ollaan siis porttiskannauksen sijaan tehty tiedusteluvaihe itse paikan päällä fyysisesti, ja saatu kohteesta paljon erilaista tietoa irti.

Tämän jälkeen hän huomasi kun joku oli lähdössä rakennuksesta ulos, ja hän pyysi tätä pitämään hänelle ovea auki käyttäytyen ihan niinkuin työsntelisi siellä. Hän pääsi ovesta sisään, mutta sisällä ovet oli lukittu niin, että niistä ei päässyt sisään ilman oikeanlaista tunnuskorttia. Hän oli jo suuntaamassa rakennuksesta ulos jotta kamerat eivät näkisi hänen oleskelevan luvatta sisällä, mutta ryhmä työntekijöitä oli juuri palaamassa lounaaltaan, joten hän teeskenteli olevansa puhelussa ja odotti että he avaisivat oven hänen puolestaan jonka jälkeen hän pääsi heidän mukanaan sisään. Pelkkä hymy riittää kunhan käyttäytyy luontevasti. Ja se toimi. Nyt hän on jo päässyt cyber kill chainin kolmannesta kohdasta, toimituksesta, läpi. Tämä sen takia että tämä olisi se kohta missä hakkeri on päässyt kohteeseen kiinni vaikka olisi toiminut tietokoneiden kanssa (ja hän on nyt rakennuksen sisällä, eli “tietokoneen” sisällä).

Tässä kohtaa tosin on hauskaa vielä se, että pentesteri joutuu silti tekemään lisää tiedustelua: hän on päässyt “tietokoneen” sisälle, mutta ei tunne sen järjestelmiä eikä tiedä mitä voisi käyttää hyväkseen hakkeroinnissa. Hän kuitenkin löytää toimistoista alueen joka on aika tyhjänä, ja pyytää siellä olevalta työntekijältä lupaa käyttää yhtä pienistä toimistoista “konfferessin preppausta” varten. Todellisuudessa hän asentaa toimistossa olevalle tietokoneelle hakkerointilaitteen, jolla saa yhteyden kohteeseen muualtakin. Tässä kohdassa on “exploitattu” järjestelmää niin, että päästään asentamaan takaovi, eli exploitattu ihmisten tietämättömyyttä ja samalla asennettu takaovi, eli cyber kill chainin vaiheet 4 ja 5 on suoritettu.

Tässä kohtaa hän lähtee rakennuksesta, mutta ennen sitä hän myös väärentää tunnuskortin poistuessaan jotta pääsisi takaisin rakennukseen tarvittaessa. Tässä kohtaa hän on cyber kill chainin kuudennessa vaiheessa, ja pystyy kontrolloimaan kohteen verkkoa ja järjestelmiä etänä hakkerointilaitteen avulla joka on kytketty toimiston tietokoneeseen.

Mennään siis vaiheet läpi mitä tässä fyysisessa pentestauksessa käytiin:

  1. Reconnaisance (minkälainen rakennus on, työntekijät, id-badget).
  2. Weaponization (hakkerontilaite, tarvitaan fyysinen pääsy rakennukseen).
  3. Delivery (päästään rakennukseen sisään muiden ihmisten mukana).
  4. Exploitation (päästään tietokoneen läheisyyteen käyttämällä tekosyytä).
  5. Installation (hakkerointilaitteen pistäminen tietokoneeseen, ja tunnuskortin väärentäminen).
  6. Command & control (hakkeroinnin jatkaminen hotellilta käsin).

Tässä käytettiin myös yhtä mitren att&ck mallissa kuvailtua tapaa päästä verkkoon käsiksi, eli hardware additions missä hyökkääjä lisää laitteen kohteen infrastruktuuriin jolla hakkeri saa pääsyn kohteen verkkoon ja laitteisiin. Muuten tässä jaksossa ei sinänsä selitetty minkälaista teknologiaa hakkerilaite käytti, mainittiin vain että se on raspberry pi 2 jossa oli paljon eri hakkerityökaluja.

Tarina loppuu siihen, mutta mielestäni tämä oli hyvin mielenkiintoinen tapa soveltaa cyber kill chainia hieman erillaisessa hyökkäyksessä, jossa päämetodi oli ihmisten kanssa interaktointi eikä vaikka bugin löytäminen järjestelmästä.

Lisätty 17.5.2020:

Läksyt on saatu kurssisivulta johon linkki löytyy täältä: http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3003/.

Lähteitä mitä käytin:

Lähde 1. https://www.w3schools.com/jsref/met_win_alert.asp

Lähde 2. https://www.w3schools.com/jsref/event_onerror.asp

Lähde 3. https://www.dyn-web.com/tutorials/iframes/onload/

Design a site like this with WordPress.com
Get started