Хакерские секреты простых вещейSpyder (spyder@antichat.net) Задача: Обойти фильтрацию пробелов в SQL-injectionРешениеВ прошлом номере я уже рассказал, как можно обойти фильтрацию запятых, но подобная фильтрация встречается крайне редко, совсем другой случай – фильтрация пробелов. Скажем, ты нашел инъекцию на крупном новостном портале, но никак не можешь ее раскрутить, так как все известные тебе варианты пробелов не работают. Давай рассмотрим такой код
здесь какие-то запросы с использованием переменной $_GET['id'] Как мы видим, при использовании пробелов " ", /**/, + и %20 скрипт прекращает свою работу. На самом деле существует как минимум два способа обхода такого скрипта, первый – использование различных пробельных символов, второй – использование логики SQL запросов, в частности их реализации в MySQL. 1. Итак, первый способ. Помимо самого пробела существует множество различных пробельных символов, табуляция, возврат каретки и так далее. Вот их полный (а может и нет ;)) список:
Все эти символы будут рассматриваться как пробельные. Пример запроса:
C этим, я думаю, все понятно, перейдем ко второму варианту: 2. В MySQL есть возможность выполнять SQL-код в блоке комментариев, выглядит это примерно так: В данном случае из таблицы news будут выведены поля id и title. Теперь посмотрим, как это реализовать в боевых условиях: Но бывает и такое, что фильтруются символы слэша. Тогда можно использовать способ, основанный на использовании скобок в запросе. Вот пример для обхода вышеизложенного скрипта: Задача: Установить OpenVPN на взломанный серверРешениеЗадача интересная и в принципе ничем не отличается от установки OpenVPN на отдельный сервер, но все же мы ее рассмотрим. Итак, сплоит сработал, whoami показывает root, и встает вопрос: что же делать дальше :) ?. Хорошим выбором будет установка собственного VPN-сервера. 1. Для начала узнаем о поддержке модуля tun 2. Если все хорошо, то приступаем непосредственно к установке OpenVPN. Для начала стоит проверить наличие библиотеки lzo, она используется для компрессии трафика. 3. Если он не установлен, то им можно и пренебречь, в таком случае трафик сжиматься не будет. Если же ты все-таки хочешь сжатие, можешь поставить либу из исходных кодов. Скачиваем последнюю версию (ссылку не привожу, так как версии часто меняются) и устанавливаем так же как и все другие программы на linux.
4. Итак, lzo установлено, теперь скачиваем последнюю версию openvpn и устанавливаем подобно lzo:
5. Сервер установлен. Теперь нужно сгенерировать все ключи и сертификаты для его работы. Переходим в папку /etc/openvpn/, из папки с исходными кодами openvpn нужно скопировать сюда подпапки easy-rsa и sample-config-files Переходим в папку /etc/openvpn/easy-rsa и выполняем:
При генерации ключей будет спрашиваться Common name для клиента и сервера. Для клиента вписывай client, для сервера server. 6. Сертификаты и ключи созданы, теперь сгенерируем ключ Деффи Хельман 7. Все ключи и сертификаты сгенерированы, теперь создадим файл конфигурации. И вносим в файл следующие изменения
8. Включаем ip-форвадинг и вносим изменения в iptables:
9. Из папки с исходниками vpn/sample-scripts файл openvpn.init переименовываем во что-то неброское (к примеру, init) и копируем в /etc/init.d/ Далее запускаем сервер: 10. Сервер работает, теперь необходимо настроить клиент. Настройку для различных ОС ты можешь найти в Сети, ибо это тема отдельной статьи :). Советую предварительно поменять имя приложения OpenVPN также на что-либо неброское, чтобы администратор взломанного сервера не определил, что на его машине крутятся посторонние вещи. Задача: Выполнить PHP-код через удаленный инклудРешениеЕще в далеком 2004 году на SecurityLab был опубликован способ, с помощью которого можно было выполнять произвольный php-код посредством врапера php://input. Сейчас я расскажу тебе, как это работает. Итак, у нас есть уязвимый файл, с таким содержимым:
Когда мы передаем скрипту в параметре page php://input то происходит считывание и выполнение данных, посланных методом POST. Грубо говоря, весь массив POST становится файлом, и include подключает его как обычный файл. Для проведения атаки мы должны отправить специально сформированный пакет. 1. Сейчас мы отправим PHP-код методом POST:
В ответе сервера будет отображен вывод phpinfo(). 2. Напишем PHP-скрипт для удобной работы со средой.
3. Запускаем его следующим образом:
4. Наслаждаемся результатом :). Задача: Написать универсальный дампер таблиц через SQL-инъекцииРешениеОчень хорошо иметь у себя универсальный дампер таблицы, давай же напишем его. Привожу небольшой код с комментариями, которые помогут тебе разобраться в скрипте.
Вот и все! Как ты видишь, скрипт довольно простой и будет работать в большинстве случаев, хотя иногда приходится переписывать под конкретный сайт. Задача: Найти папки и файлы доступные на записьРешениеВо многих шеллах есть встроенные утилиты для поиска папок на запись, примеры тому r57, c99 и другие. Все они работают по одному и тому же способу Такой поиск не всегда эффективен. На крупных порталах может быть не один, а множество пользователей и иногда есть шанс найти папку или файл, принадлежащий юзеру, от которого ты работаешь. Вот небольшой список команд, которые стоит выполнять вместе приведенной выше.
Последний пример является лучшей заменой привычного find . -perm -2 -type -d -ls, так как ищет не только drwxrwxrwx , но и другие комбинации с окончанием rwx. Задача: Найти папку, в которой хранятся файлы сессийРешениеКак известно, файл сессии – хороший способ раскрутить локальный инклуд, но как же определить папку в которой они находятся? Ведь не всегда они хранятся в /tmp. Привожу излюбленные мной способы поиска заветной папки. 1. Поиск phpinfo() на сайте. Для этого ищем session.save_handler. Если его значение установлено в «files» по дефолту, значит сессии хрантся в файлах, ниже находится значение session.save_path. Первое значение – это так называемое Local Value, уникально значение для конкретной папки и ее подпапок (либо для конкретного сайта), устанавливается в .htaccess. Второе значение – это Master Value , общее значение для всего сервера, устанавливается в php.ini. 2. Поиск .htaccess, в этом файле может быть установлено значение php_value для session.save_path. 3. Простой перебор папок. Привожу небольшой список возможных вариантов каталогов, где может находиться желаемое.
Задача: Найти httpd.confРешениеВ Интернете существует множество баз возможных путей до конфига апача, но можно ли узнать путь с первой попытки? Иногда да. Часто процессы, в том числе и apache, запускаются через init-демон, для этого в папке /etc/init.d/ должен находится bash-скрипт для запуска приложений. И выглядит он примерно так:
В данном случае конфиг находится в /etc/apache2/httpd.conf. Также ты можешь (при наличии соответствующих прав) посмотреть лог-файл messages, в котором также пишется название рабочего конфига. Или же просто набрать «locate httpd.conf» и надеяться на удачу. Задача: избавиться от трояна Winlock, назойливо предлагающего отправить платное SMS-сообщение.РешениеОб этом вирусе писали все, кому не лень (и даже в СМИ). Подобной заразой были инфицированы миллионы компьютеров, и вероятность того, что твой комп сегодня подхватит такую заразу, очень велика (несмотря на установленные антивирусы). Обычно такой трой блокирует рабочий стол, выводя на нем надпись о блокировке компьютера по разным причинам (напоминание об использовании нелицензионного ПО, красочный порно-баннер, текст об обнаружении вируса и т.п.). Параллельно с этим троянчик блокирует запуск редактора системного реестра, командной строки, диспетчера задач, запуск антивирусных средств, предотвращает переход по ссылкам на сайты антивирусов, отключает сервис "Восстановление системы" и делает массу подобных «приятных» мелочей :). Для излечения от трояна главное – не посылать никаких сообщений (хотя в ряде случаев система действительно разблокируется, но обычно просто спишется 300-600 рублей без последующего излечения). Вот несколько способов по убийству этого трояна: 1. Попытайся воспользоваться бесплатным сервисом разблокировки, предоставленным лабораторией Касперского (support.kaspersky.ru/viruses/deblocker) или любым другим. Если разблокировка выполнена удачно, удали все файлы, содержащиеся во временных каталогах всех пользователей ("c:\windows\temp", очисти папки "Temp" и "Temporary Internet Files", содержащиеся в "c:\documents and settings\имя_пользователя\Local Settings"). Также убедись в том, что в папках "System Volume Information", которые находятся в корневых директориях дисков, отсутствуют подозрительные объекты. 2. Скачай и запиши LiveCD-дистрибутив, разработанный антивирусной лабораторией Данилова (freedrweb.com/livecd/), сконфигурируй BIOS для запуска с привода для оптических дисков, загрузись с LiveCD и выполни полную проверку системы. Также ты можешь воспользоваться любым Live-дистрибутивом Windows в тандеме с утилитой CureIt (либо программой ERD Explorer, прим. ред.). 3. Если запуск системы прошел удачно, выполни полную проверку компьютера антивирусом (бесплатный антивирусный пакет можно скачать здесь freedrweb.com/cureit). 4. Включи редактор реестра, заблокированный вирусом, возможности командной строки, "Диспетчер задач" следующим образом: нажми сочетание клавиш <Win+R>, в появившемся окне введи "gpedit.msc". В появившемся окне выбери раздел "Групповая политика -> Конфигурация пользователя -> Административные шаблоны -> Система". Выполни двойной клик по строке "Сделать недоступными средства редактирования реестра", выбери вариант "Отключен" и подтверди выбор нажатием на кнопку "Ok". Аналогичным образом включается и работоспособность командной строки. Чтобы включить диспетчер задач, нужно скорректировать параметр "Удалить диспетчер задач", находящийся в разделе "Групповая политика -> Конфигурация пользователя -> Административные шаблоны -> Система -> Возможности Ctrl-Alt-Del". Также «Диспетчер задач» можно активировать при помощи "regedit.exe", если он уже разблокирован. Установи параметр "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr" в нулевое значение. 5. Если большинство программ и после проделанной работы отказываются запускаться, проверь, что текстовый параметр (Default), находящийся в ветках реестра:
, имеет значение "%1" %*. Главная причина заражения этим довольно опасным вирусом – невнимательность и пренебрежение безопасностью. Поэтому, если обновление твоей системы давно не выполнялось, набери в командной строке wuauclt.exe /detectnow, чтобы запустить процесс вручную. Выполняй с правами администратора только те программы, в безопасности которых ты уверен. Обнови базы антивируса, заранее подготовь LiveCD-дистрибутив, содержащий антивирусные утилиты. Но главное – перед запуском все файлы, полученные из непроверенных источников, проверяй на virustotal.com. |