init
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
**Уязвимость загрузки файлов** возникает тогда, когда сервер позволяет пользователям загружать файлы в свою файловую систему без надлежащей проверки имени файла, типа, размера и содержимого файла. Неспособность должным образом применить ограничения означает, что даже самая базовая функция загрузки изображения может быть ипользована для загрузки и эксплуатации опасных файлов.
|
||||
|
||||
В некоторых случаях, сам факт загрузки файла может нести в себе опасность. Некоторые атаки могут включать последующий HTTP запрос на иполнение файла.
|
||||
|
||||
## Как возникает уязвимость?
|
||||
|
||||
Учитывая довольно очевидную опасность, редко встретишь сайт без ограничений на загрузку файлов. Например, разработчики могут создать blacklist для опасных типов файлов, но не учитывать расхождения в анализе при проверке расширения файла. Как и в любом черном списке, легко можно опустить менее явные типы файлов, которые всё еще могут быть опасными.
|
||||
|
||||
## Использование неограниченную загрузку файлов для вызова консоли
|
||||
|
||||
Самый худший сценарий - когда сайт дает возможность загружать и запускать файлы php, js, python.
|
||||
|
||||
Поэтому стоит попробовать залить файл на сервер и выполнить его (через запрос в url)
|
||||
|
||||
```php
|
||||
<?php echo file_get_contents('/path/to/target/file'); ?>
|
||||
```
|
||||
|
||||
Если стоит ограничение на **Content-type**, проверить можно ли подменить его в заголовке.
|
||||
|
||||
```http
|
||||
|
||||
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="example.jpg" Content-Type: image/jpeg [...binary content of example.jpg...]
|
||||
---------------------------012345678901234567890123456 Content-Disposition: form-data; name="description" This is an interesting description of my image.
|
||||
---------------------------012345678901234567890123456 Content-Disposition: form-data; name="username" wiener
|
||||
```
|
||||
Reference in New Issue
Block a user