Task # Task #3

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

  1. BabaDook

    BabaDook Well-Known Member

    Joined:
    9 May 2015
    Messages:
    1,063
    Likes Received:
    1,559
    Reputations:
    40
    !=FALSE
     
  2. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

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

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    А тем временем таск подходит к концу, не забываем, что это последнее задание из конкретно простых, и то, сколько было эмоций и пригоревших жоп.
    Я уже в ожидании конкретно сложного таска :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:
    231
    Likes Received:
    601
    Reputations:
    145
    Закрываем задание.

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

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

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

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

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

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

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

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


     
  6. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

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

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

    PPS: альтернативных решений таска не найдено ни одного?
     
    #66 Тот_самый_Щуп, 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 Green member

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

    BabaDook Well-Known Member

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

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

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

    dooble Members of Antichat

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

    rudi Active Member

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

    fandor9 Reservists Of Antichat

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

    Coost Active Member

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

    Тот_самый_Щуп Reservists Of Antichat

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

    Coost Active Member

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

    dooble Members of Antichat

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

    Какие можно дать рекомендации по настройке сервера.
    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.
     
  18. I_I

    I_I Member

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

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

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    если права есть на запись, 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:
    231
    Likes Received:
    601
    Reputations:
    145
    Изменить нельзя, можно только создать новый файл.
     
    grimnir likes this.