CyberX

Unwired mind project homepage

Как немного защитить сервер от взлома на Windows или UNIX

Данная статья не для ознакомления юных хакеров о том, как нагадить SEO ссылками на чужие сайты через взлом, а о том, как немного защитить сервер от взлома

Есть в PHP для операционных систем семейства Windows и UNIX(Linux, BSD, Mac OS, Android, etc..) интерсная инструкция для получения доступа к оболочке терминала или консоли shell_exec(). Посмотрим, что можно сдлеать с помощью нее.

Выполняем просмотр файла hosts вашего сервера:

Добавим в любой скрипт PHP строки кода:

shell_exec('cp -R /etc/hosts '.  $_SERVER['DOCUMENT_ROOT'] .'/test.txt' );

Сохраняем файл и выполняем скрипт. В папке public лежит файл hosts сервера с расширением txt.

Выполняем любой исполняемый бинарный скомпилированный ELF файл:

Ничего не будем химичить и просто вытащим из /bin/ исполняемый бинарник для просмотра файлов и директорий:


shell_exec('cp -R /bin/ls '.  $_SERVER['DOCUMENT_ROOT'] .'/test.jpg' );

Смотрим в public folder и видим исполняемый файл листинга под именем test.jpg.

Выполним его:

print shell_exec($_SERVER['DOCUMENT_ROOT'] .'/test.jpg -la' );

Видим, что ls под видом test.jpg выполнился на ура и мы можем распечатать все содержимое public_folder и посмотреть даже xATTRs.

Как предостеречь сервер от взлома

Представим, что некий злоумышленник может скомпилировать вредоносный файл и поменять ему расширение на .JPG, загрузить, как картинку и выполнить. Что будет? Получится полный доступ к серверу с выполнением любого произвольного кода. Например, есть такая вещь, как метасплойтерный framework, который в помощь взломщикам.

К счастью, защитить систему мы чуть чуть можем, просто проверив сигнатуру загружаемого файла, а не MIME тип, который можно легко скомпрометировать.

$upload_allow = !isset(explode('0000000: 7f45', shell_exec('xxd '. $file['file_tmp'] .' | head -5'))[1]) ? true : null;

Тем же самым shell_exec() прямо при загрузке файла, долго не думая, проверяем прямо пока файл лежит в temp и не перемещен его сигнатуру. Флаг $upload_allow true разрешает загрузку, а null блокирует.

Здесь мы считываем первые байты ELF файла и сверяем, что он не является исполняемым.

Кроме того, также не забывайте про операционную систему Windows. PHP также имеет инструкцию для доступа к CMD и там можно выполнить EXE, много чего интересного, а может даже опасного. Ищите сигнатуры самостоятельно.

Что может сделать хороший программист?

Без доступа к SSH установить на любой хостинг любые нужные утилиты и языки программирования именя только интерпретатор PHP. Например, развернуть среду Ruby, чтобы не переплачивать за хостинг и писать на чем угодно.

Кроме того, не забывайте проверять права на файлы.

Comments …

You can write here as guest with moderation. Please confirm your person if you have an account or register.

Add a comment as :
Captcha:
Pattern:
Repeat: