Есть некий сайт, в конфиге прописано $Config['AllowedExtensions']['File'] = array() ; $Config['DeniedExtensions']['File'] = array('php','php3','php5','phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg','cgi','htaccess') ; куда заливаются файлы есть .htaccess, как можно это обойти, .txt формат заливается нормально. Интересны варианты заливки шелла
Гугл Consider you are having the following blacklist: $blacklist=array(“.php”,”.php3”, “.php4”,”.php5”,”.phtml”); We can use “shell.php%00.jpg or shell.php%00gif” to bypass the blacklist. http://hackers2devnull.blogspot.com/2013/05/how-to-shell-server-via-image-upload.html
shell.php%0delete0.jpg - залив такой шелл, он отображается как картинка, не иначе. Гуглом пользоваться умею, спасибо, но найти решение на свой вопрос я не смог, увы. а если к примеру залить root.php.pjpg то он только скачивается, но не исполняется.
если вы не ошиблись в написании массива забаненых расширений, то в нём пропущен .php4 попробуйте его залить
Попробовал, Forbidden You don't have permission to access /uploads/File/shell(1).shtml on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
А есть болие подробный код скрипта, где идет обработка переменной $Config['DeniedExtensions']['File'] до функции самого уплоада? Может есть возможность обойти через регистр расширений и подменить путь заливаемого файла в случае если .htaccess не дает выполняться пхп скриптам, но это надо смотреть сам код!
А это ваф. попробуйте другой шел не на пхп, методом исключения пробуйте. Мб что-то не то сказал . не пинайте
_rghost.ru/7nRQSnqvt Вот сам скрипт который на сервере лежит. Если кто сумеет помочь, гарантированны приз 100$ =)
По-моему в имя файла добавляется какой-то счетчик. Code: $arAllowed = $Config['AllowedExtensions'][$resourceType] ; $arDenied = $Config['DeniedExtensions'][$resourceType] ; if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) ) { $iCounter = 0 ; while ( true ) { $sFilePath = $sServerDir . $sFileName ; if ( is_file( $sFilePath ) ) { $iCounter++ ; $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; $sErrorNumber = '201' ; } else { move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; if ( is_file( $sFilePath ) ) { $oldumask = umask(0) ; chmod( $sFilePath, 0777 ) ; umask( $oldumask ) ; } break ; } } } else $sErrorNumber = '202' ;