XXE (XML External Entity) Hyökkäykset

XXE Excel ja Word Tiedostoissa (OOXML)

Keskitaso
45 min

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.

XXE OOXML 1

Tässä labrassa hyväksikäytät XXE-haavoittuvuutta Excel-tuonti-toiminnossa.

Tavoite

Lue lippu /secret-recipe.txt-tiedostosta.

Vihje

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

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;

hakatemia pro

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ä.