Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   загрузка произвольных файлов через архив. (https://forum.antichat.xyz/showthread.php?t=165302)

(Dm) 22.12.2009 11:18

загрузка произвольных файлов через архив.
 
Снова небольшой очерк.
Пару раз сталкивался с веб приложениями в которых можно было загрузив архив, распаковать его. Но дело в том, что если нет проверки на '../'(опуститься на каталог выше), то файлы можно распаковать в произвольные каталоги на сервере.

например архив:
Цитата:

Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
15 2009-12-22 09:57 ../test.php
Распакуется на каталог выше.

Рассмотрим веб приложение DCMS
там используется PclZip класс для работы с zip архивами.

Администратор может загружать и распаковывать архивы в разделе загрузки:
PHP код:

$zip=new PclZip($dir_loads.'/'.$file);
$zip->extract(PCLZIP_OPT_PATH$path_unzipPCLZIP_OPT_SET_CHMOD0777PCLZIP_OPT_BY_PREG"#^[^\.]+#ui"); 

Как видно "#^[^\.]+#ui" вот эта регулярка защищает от '../' в начале имени файла =) Чтобы обойти фильтр в начале надо указать существующий каталог, что-то типа такого:
Цитата:

Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
15 2009-12-22 09:57 test/../../test.php
При распаковке этого архива, файл test.php, будет записан не в том месте где предполагалось, а на каталог выше.

Вот ещё аналогичный баг http://vuln.sg/net2ftp096-en.html

[Raz0r] 22.12.2009 19:11

http://www.sektioneins.de/advisories/SE-2008-06.txt

(Dm) 22.12.2009 22:26

Цитата:

Сообщение от cr0w
'../' - это каталог выше! (:

оке исправил =)

PS бесит что всякая школота орет что баян, мега хакиры xD

По поводу баянов и прочей ху*ни.
да это баян я в курсе, еслиб он им не был, его в паблике не постил бы.


Время: 23:04