Обзор уязвимостей платной CMS Affiliate Site Management System V2.0 (фарма)

Discussion in 'Веб-уязвимости' started by BigBear, 21 Nov 2014.

  1. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    919
    Reputations:
    862
    // Wake Up Neo The Matrix Has You (кто участвовал, тот вспомнит)
    // Американская дрянь, химия, наркота... никогда мне не прельщала...

    Affiliate Site Management System V2.0

    История длиною в 3 года :)

    Предыстория:

    Когда-то, когда трава была зеленее, деревья выше, а я моложе, некий форумчанин спамил по личкам в ожидании помощи по добыче email-аккаунтов фармокологических сайтов. Такое случается очень и очень часто, никто из тех, кто взялся за ум, уже и не обращает внимания. Но среди сайтов был один интересный тем, что когда-то я уже находил SQL инъекцию на нём. На это письмо я и нарвался пару недель назад, сортируя почту.

    Тогда он меня мало интересовал. SQL подразумевала некоторую фильтрацию, куча ограничений, в бд нет таблички пользователей, даже админов нет. Как и что было делать - вообще не понятно.

    Но от скуки и для студентов ради (преподаю курс Web-уязвимостей в университете), SQL была найдена, повторно проверена и всё... Ничего толком не поменялось. Было решено продолжить исследования.

    Нашёл похожие сайты, сформировал dork, дыра везде одинаковая. Те же самые ограничения, кое-где дополнительная фильтрация, даже WAF кое-где... Но среди всех сайтов линейки выбивался 1 - на нём mysql работал от root, что даёт необходимые привилегии по чтению исходников CMS.

    Итак, на начало исследования я имел следующие моменты:
    1) Раскрытие путей до основного сайта (в SQL инъекте было сообщение о ошибке);
    2) MySQL root с очень сложным паролем. От него работала CMS.
    3) 1 сосед с WordPress 3.* на борту. Пасс также очень сложный.
    4) MQ = on.

    Вектор атаки был выбран наипростейший - читаем конфиг ВордПресса, узнаём пасс от БД. Пробуем такой же пасс на root. Ищем PhpMyAdmin и пробуем пробиться внутрь.

    Конфиг был прочитан через load_file(). Пасс выдран. На основном сайте PMA был спрятан хитро, DirBuster не смог его отыскать. За то на дополнительном отыскался в стандартной директории. Авторизовался в PMA под юзером для WP, сменил пасс на WP, чтоб можно было авторизоваться. Права на папки и файлы были выставлены супер-секурно, аплоад был невозможен никуда и ни при каких обстоятельствах. WordPress был отброшен как бесполезный. Права на Load_file у юзера для WP были без привилегий на чтение файлов, зато читался mysql.user и даже вносились изменения в учётки.

    Залиться через SQL было нельзя по причине включенных магических кавычек. Поэтому был сменен пасс на root, сам mysql-сервер был уронен эксплойтом от многоуважаемого Light
    Code:
    select 1 from table procedure analyse ((select 1 from (select 1)a),1);
    
    Привелегии обновились, я зашёл в PMA под root.

    Теперь уже можно было из консоли PMA залить мини-шелл в директорию основного или дополнительного сайтов. WP не сдался, а основной имел врайтабельные директории в глубине директив, которые DirBuster мне не показал. Решено было продолжать ковырять исходники.

    И всё бы хорошо, если бы они не были накрыты IONCUBE. Пришлось искать деионкубер, расшифровывать исходники и искать необходимые директории. Наконец, шелл был залит, исходники сдамплены, цель, казавшаяся невыполнимой 3 года назад, была достигнута, а всё пиво выпито.

    Отдаю вам всё что наффазил, всё таки исходники закрытых CMS, продающие всякую американскую дрянь для меня редкость, вдруг и вы что-нибудь интересное для себя найдёте.

    Итак, наша цель - Affiliate Site Management System V2.0

    dork: inurl:cart.htm intext:"Shipping Terms"

    SQL-инъекция:

    (Внимание. Все точки необходимо заменять Double URL Encode вариантом => %252e)

    Request:
    Response:
    Full Path Disclosure:

    Request:
    Response:
    Раскрытий путей будет много, привёл всего 1 пример. Ибо и так в SQL запросе раскрывается.

    XSS via SQL (SiXSS):

    Request:
    Response:
    Private key authentication:

    (Бага существует из-за того, что любой пользователь может прочитать на сервере файл, в котором хранятся пара login+pass в виде sha1(login):sha1(pass), подобрать данные и авторизоваться в Admin-панели).

    Source ( /admin/application/controllers/admin.php):

    Request:
    Response:
    Админка по дефолту - http://[host]/admin

    Отдельно выложу исходники для изучения и пример SQL дампа.
     
    _________________________
    3 people like this.
  2. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,518
    Likes Received:
    401
    Reputations:
    196
    LOL, как раз у меня парочка сайтов партнерки на этом движке. Только смысла ломать такие сайты нет, так как никаких баз юзеров и заказов там не сохраняется
     
    #2 попугай, 22 Nov 2014
    Last edited: 22 Nov 2014
  3. MaxFast

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

    Joined:
    12 Oct 2011
    Messages:
    575
    Likes Received:
    149
    Reputations:
    94
    >преподаю курс Web-уязвимостей в университете
    В каком?
     
  4. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    919
    Reputations:
    862
    В одном из С******их **ГУ.
     
    _________________________
    #4 BigBear, 22 Nov 2014
    Last edited by a moderator: 30 Nov 2014