TGViewer
Coffee cube Coffee cube @coffee_cube · 474 subscribers
Post #104 467
Привет^3 ☕️

Загрузка файлов... Вроде как здорово, но есть нюанс. Через них можно запустить скрипты и скомуниздить информацию с сервера. Заинтриговал? Давайте разбираться.

❓ Что? Где? Когда?

Данная уязвимость возникает в случаях, когда веб-сервер позволяет загрузить файл без валидации имени, типа, содержания или размера.

Если говорить проще: мы пытаемся найти такое расширение файла, которое сервер пропускает, а сам файл может помочь нам получить информацию или запустить скрипт.

Вот туть можно найти кучу примеров разных расширений, которые можно отправлять другу использовать для тестирования)

✍️ Пример

Давайте разберемся на примере. На сервере есть ендпоинт /images, который позволяет загрузить картинку на сервер. Запрос может выглядеть вот так:


POST /images HTTP/1.1
Host: normal-website.com
Content-Length: 12345
Content-Type: multipart/form-data; boundary=---------------------------012345678901234567890123456

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="image"; filename="my_nudes.jpg"
Content-Type: image/jpeg

[...my_nudes.jpg...]

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="description"

Can't touch this

---------------------------012345678901234567890123456
Content-Disposition: form-data; name="username"
cu63
---------------------------012345678901234567890123456--


Тело запроса разделено на части. У каждой есть заголовок Content-Disposition, который содержит информацию о передаваемых данных. Каждая часть так-же может содержать собственное поле Content-Type, описывающее MIME переданных данных.

При валидации сервер может ожидать только конкретные значения поля Content-Type. Например, при работе только с картинками ожидаемо получить image/jpeg и image/png. Проблемы могут возникнуть, если сервер неявно доверяет значению этого заголовка. Если дальше нет проверки на то, что данные действительно относятся к указанному типу, то мы можем загрузить что угодно, например php-скрпит, который отобразит нужный нам файл:


<?php echo file_get_contents('/path/to/target/file'); ?>


📌Можете пощупать эту уязвимость в данных лабах:
✏️ Remote code execution via web shell upload
✏️ Web shell upload via Content-Type restriction bypass
✏️ Web shell upload via path traversal


➥ ☕️ тг • 🤬чатик • ✍️посты

#web #writeup
  • ❤ 6
  • 👾 2
  • ✍ 1
  • 👨‍💻 1
More from @coffee_cube
  1. Sep 16, 2026Привет^3☕️ cron есть почти везде, а оператор @reboot выполняет команду один раз при загруз…
  2. Sep 11, 2026Привет^3☕️ Достаточно богатая на события неделя. Вышла запись моего доклада на OFFZONE 202…
  3. Sep 10, 2026Семечко от Mango. Разбираем и воспроизводим уязвимость в роутере по описанию с NVD 👑 Стат…
  4. Sep 10, 2026Привет^3☕️ А у меня статья вышла. Сам в шоке🫤 ↖️ 📕тг • 🤬чатик • ✏️посты • 📹yt • 💞Twit…
  5. Sep 9, 2026Привет^3☕️ Свершилось😇Наконец я выступлю с докладом в своем городе и мне не нужно собират…
  6. Sep 2, 2026Привет^3☕️ Реликт до-systemd эпохи: скрипты в /etc/init.d/ c обработкой start/stop. На сов…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →