# Exploiting XXE using external entities to retrieve files

Description:&#x20;

This lab has a "Check stock" feature that parses XML input and returns any unexpected values in the response.

To solve the lab, inject an XML external entity to retrieve the contents of the `/etc/passwd` file.

Proof of concept:

1. Analisa web target<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2Fb4K5jule5m9SDLWNvcMH%2Fimage.png?alt=media&#x26;token=8f3c0c20-7de6-47b5-a6d4-40a8b69d9472" alt=""><figcaption></figcaption></figure>
2. Dari hasil analisa didapati fitur `Check stock` untuk melihat ketersediaan produk. Dan ketika dilihat request yang diberikan ketika melakukan pengecekan stok tersebut, request tersebut menggunakan XML pada body requestnya<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FDmD7ntpuvluFUrOohpqK%2Fimage.png?alt=media&#x26;token=1d5cca22-5d1e-4324-bdb6-50c1e0a6ee25" alt=""><figcaption></figcaption></figure>
3. Karena menggunakan XML, ada kemungkinan dapat dilakukan XML Injection atau XXE Injection. Untuk memastikannya, tambahkan payload XXE pada body request dan panggil variabel `ent` pada data `productId` karena output request endpoint tersebut berasal dari data `productId` . Jika telah dilakukan penambahan dan perubahan pada XML yang ada, maka akan terlihat seperti berikut<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FnnN6Knp8xnsattkjb712%2Fimage.png?alt=media&#x26;token=1f30fd3e-b505-40dd-b8a9-c5f2a9d58032" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FWhRELknFi0kba5dh5KQe%2Fimage.png?alt=media&#x26;token=89a74b57-a0c4-4f0b-8ca5-979264e9e597" alt=""><figcaption></figcaption></figure>
4. Kirim request tersebut, dan dengan menggunakan XML berhasil membaca atau membuka file yang berada pada server target<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FK6Z3iHy5DhD48sc6gyJz%2Fimage.png?alt=media&#x26;token=ad9039a9-d673-4d91-803f-a450c2184256" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2F78Eegvm7fVXj0YLZc18o%2Fimage%20(49).png?alt=media&#x26;token=870ead89-98aa-476e-8590-6c1231867824" alt=""><figcaption></figcaption></figure>

Thanks, Stay Ethical & Happy Hacking! 🍻
