Task # Task #7

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

  1. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    osh2.jpg

    Таск запускался в группах в 2013 году.
    На тот момент это была новая тема, которая, впрочем, работает и сейчас и мы уже слегка касались ее, поэтому трудностей быть не должно.

    Задание:
    По адресу http://task7.antichat.com/ работают скрипты (исходники приаттачены к посту).
    Нужно "залить шелл" в файл db/info.php и выполнить код phpinfo().

    Сроки:
    Две недели.


    Есть несколько способов решения данной задачи.
    На Античате известно 2 способа, на рдоте нашли 3.
    Соответственно ответы принимаются только от тех, кто пока не видит эти решения, ориентировочно это паблик и lvl8.

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

    Отлаживаться можно и локально, способы универсальные, работают и в никсах и на винде.

    Флагов нет, присылайте решения в ПМ форума, для каждого способа.

    Правила остаются прежними:
    В теме не флудим, подсказки разрешены только от ТС, ответы присылаем в ПМ.

    Прошли:
    =HALK= 1, 2, 3
    topthing 1, 2, 3
    giloo
    1, 2, 3
    Gorbachev
    1, 2, 3
    nix_security 1, 2, 3
    BenderMR
    1, 2, 3
    manfromkz
    1, 2, 3
    danilkib95 1, 2, 3
    IvanV 1, 2, 3
    Раrаdох 1, 2, 3



    Прохождения

     

    Attached Files:

    #1 dooble, 18 May 2019
    Last edited: 1 Jun 2019
    ZodiaX, crlf, Раrаdох and 7 others like this.
  2. Тот_самый_Щуп

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

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    173
    Reputations:
    119
    Маленькое уточнение, хоть один из способов решения так или иначе в паблике фигугирует, или предполагается самостоятельно копнуть код, и найти этот байпасс\байпассы?
     
  3. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Первый способ описан в паблике давно и достаточно хорошо, не требует дополнительных инструментов, используется только интерфейс скриптов и браузер.
    С телефона можно решить.
    Второй способ (ровно ровесник этого задания) уже требует написать несколько строчек кода, но способ (механизм) уже широко известный и в одном из заданий мы уже ковыряли его. На ачате в паблике есть рыба для такого скрипта.
    Третий способ описан на некотором начальном уровне (и он постарше второго), используется аналогично, но реализацию нужно найти самому (тоже писать небольшой скрипт).

    Сканеры и брут бесполезны.

    Плясать, конечно, нужно от кода.
    Это чисто уязвимость скриптов, а точнее конструкции db/info.php.
    Нужно обойти стоппер
    <?php die('Access denied'); ?>
    и выполнить код, который можно поместить после него.
     
    #3 dooble, 19 May 2019
    Last edited: 20 May 2019
  4. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    Зачем такие явные подсказки?) Это же ломает весь дух
    П.С. я ток додумалась про какой именно стоппер шла речь запустив у себя на виртулке(до последнего думала что проблема в несказанном .htaccess). А тут уже это
     
    dooble likes this.
  5. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Первый способ очень простой, делается влет.
    Пока ни одного ответа, ни одной попытки в нужную сторону.
    Впереди работы намного больше, чем догадаться "что же такое - стоппер".

    Когда есть дух - хорошо, так и должно быть и он так просто не сломается.
    Удачи.
     
  6. Тот_самый_Щуп

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

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    173
    Reputations:
    119
    А эти попытки должны быть? Может я чего то не понимаю, ковыряю у себя на локалхосте, результаты работы вы всё равно не увидите пока я их не пришлю в ЛС (если хакерского духу хватит )) )
    А пока да, народ слабоват... Нету среди хакеров (ROA >) пока что богатырей.
     
    dooble likes this.
  7. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Есть.
    Но они давно богатыри и не одну битву выиграли.
    Намахались уже, просто так за оружие не хватаются.

    Видимо наша очередь расправить плечи.
     
  8. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    Только без подсказок пожалуйста)
     
    dooble likes this.
  9. Тот_самый_Щуп

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

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    173
    Reputations:
    119
    А ты вывезешь, без подсказок то?
    Что то тебя в списке богатырей не наблюдаю :)
     
    dooble likes this.
  10. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    ой все, не флудим:rolleyes:
     
  11. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Кто обошелся без хинтов - молодец.
    Кому нужна небольшая помощь, она подоспела, осторожно - спойлер.
    Есть такая интересная тема, как врапперы.
    Вроде известна давно, можно найти статьи с примерами, кое-что и сами умеем с ними делать, а вот уверенности, что все уже про них расковыряли - нет.
    Иногда их применение дает почти волшебный эффект.

    Первый способ использует обертку php://.
     
  12. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    Ураааа))) Я смогла) Без подсказок)
     
    #12 giloo, 21 May 2019
    Last edited: 21 May 2019
  13. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    беее))))
     
  14. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Так, сдвинулись с места.
    И даже зарешали второй способ.

    У третьего способа есть несколько вариантов реализации, пока в зачет пойдет любой из них.

    ===

    И да, подсказка
    сработала в минус для некоторых, попробую переформулировать.

    Нет способа обойти стоппер, когда вызываем http://task.antichat.com:10007/db/info.php
    но нас никто и не заставляет выполнить скрипт именно так.
     
    #14 dooble, 22 May 2019
    Last edited: 22 May 2019
    giloo likes this.
  15. giloo

    giloo New Member

    Joined:
    2 Feb 2019
    Messages:
    28
    Likes Received:
    3
    Reputations:
    4
    Второй способ найден) Как дела?;)
     
  16. Тот_самый_Щуп

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

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    173
    Reputations:
    119
    ой все, не флудим ©
    Не напоминай... :oops:
     
    giloo likes this.
  17. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    По первому способу.
    Враппер php:// практически разжеван в нужном объеме в одной из старых статей журнала Хакер.
    Просто прочитай и выполни.
     
    #17 dooble, 23 May 2019
    Last edited: 24 May 2019
  18. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    На рдоте задание запускалось с залоченным способом php://
    поскольку слишком просто.

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

    Есть инклюд файла, в который можем писать произвольную информацию
    Code:
    if (isset($_GET['page'])){
        if (validate($_GET['page'])) include($_GET['page']);
    
    И это RFI, т.е. можем применять различные обертки (врапперы).
    Http://, https:/, ftp:// и ftps:// запрещены функцией validate(), но список поддерживаемых врапперов у php гораздо шире.

    Пробуем работать с оберткой php://, просто потому, что она умеет работать с фильтрами, а мы умеем применять ее в инклюдах для чтения содержимого скриптов.
    Именно способность фильтровать потоки на чтение и запись нам и нужна.
    Т.е. считанный файл и он же, но обработанный некоторым фильтром (или последовательностью фильтров), уже будут содержать различающуюся информацию и этим можно манипулировать.
    А штатных фильтров, работающих с php:// достаточно, чтобы составить несколько вариантов RCE.

    Ну и не забываем выполнить требование валидатора
    Code:
        $rules = Array(
            'login.php' => OK,
            'view.php' => OK
        );
    
     
    #18 dooble, 24 May 2019
    Last edited: 30 May 2019
    eminlayer7788 likes this.
  19. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    Следующая подсказка.
    Решения основаны на врапперах:
    1 - php://
    2 - phar://
    3 - zip://

    Первые два способа довольно очевидны, штатное использование возможностей.
    Как приготовить zip - архив, нужно догадаться, хотя существует читерский вариант, он тоже будет приниматься в зачет, но его ценность невелика.
     
  20. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    229
    Likes Received:
    596
    Reputations:
    145
    В этом задании можно отловить для себя сразу две пользы.
    Во-первых, это базовые вещи, их нужно просто знать.
    Во-вторых, когда ты их нашел сам, а не просто прочитал решение - они становятся "невырубово" базовыми.
    Ну и бонусом прокачивается хакерская догадка и поиск вспомогательного материала.

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