Mikä OOXML?
OOXML (Office Open XML) on Microsoftin kehittämä ZIP- ja XML-pohjainen tiedostomuoto office-dokumentteja varten. Käytännössä kaikki Word- ja Excel-tiedostot ovat siis zipattua XML:ää, jolloin myös OOXML-käsittelijät saattavat olla haavoittuvia XML-hyökkäyksille, kuten XXE:lle.
Käytännön esimerkki
Käynnistä alla oleva harjoitus ja lue eteenpäin.
Mallitilaus
Lataa mallitilaus labran osoitteesta "/static/order.xlsx", avaa hyökkääjän koodieditori, jonka jälkeen vedä ja pudota tiedosto /root-hakemistoon.
Terminaali
Käynnistä terminaali valitsemalla koodieditorissa hampurilaisvalikko -> pääte -> uusi pääte. Siirry /root-hakemistoon, jos et ole jo siellä.
cd /root
Suorita ls-komento ja sinun pitäisi nähdä, että "order.xlsx" on siellä.
ls
CachedExtensions Machine User coder.json extensions logs machineid order.xlsx web
Pura excel
Kuten jo mainittu, Excel-tiedostot ovat vain zipattuja XML-tiedostoja. Luo order-niminen hakemisto ja käytä unzip-komentoa purkaaksesi tiedoston hakemistoon.
mkdir order
unzip order.xlsx -d order
Uudelleenpakkausskripti
Luodaan nyt pieni shell-skripti, jonka avulla voimme pakata Excelin uudelleen. Napsauta hiiren kakkospainikkeella juurihakemistoa, valitse "uusi tiedosto" ja anna sille nimi "repackage.sh". Kirjoita sisään seuraava teksti:
#!/bin/bash
(cd order && zip -r /root/evil.xlsx ./*)
Anna skriptille suoritusoikeudet:
chmod +x ./repackage.sh
Testaa asetuksia
Kokeile että uudelleenpakkausskripti toimii.
Lataa sitten luotu evil.xlsx-tiedosto. Voit tehdä tämän napsauttamalla hiiren oikealla `evil.xlsx' koodieditorissa ja valitsemalla "Download".
Palaa nyt pizzapalveluun, lataa tilaus ja varmista, että tilaus toimii. Nyt meillä on toimiva perusta hyökkäyksen rakentamiselle.
Etsi paikka
Heijastetun XXE:n saavuttamiseksi meidän on selvitettävä, missä kohtaa Excel-tiedostoa löytyy "Mozzarella" ja "Salami". Voimme käyttää grep-komentoa selvittääksemme tämän.
grep -r Mozzarella ./order
Vaikuttaa siltä, että "order/xl/sharedStrings.xml" on oikea tiedosto. Avaa tämä tiedosto koodieditorissa.
XXE
Tähän mennessä sinun pitäisi jo tietää, kuinka jatkaa tästä eteenpäin. Jos tämä vaihe ei tunnu tutulta, palaa edellisiin moduuleihin tässä kurssissa.
Luo DTD-entiteetti, joka osoittaa /secret-recipe.txt-tiedostoon, ja suorita sitten kyseinen entiteetti joko Mozzarellan tai Salamin tilalle.
Muistutuksena, DTD:n syntaksi on:
<!DOCTYPE juuri [ ]>
Ja ulkoisen entiteetin syntaksi on:
<!ENTITY nimi SYSTEM "url tai polku">
Ja entiteetin suorittamissyntaksi on:
&nimi;
Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.
Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.