Таск запускался в группах в 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 Прохождения
Маленькое уточнение, хоть один из способов решения так или иначе в паблике фигугирует, или предполагается самостоятельно копнуть код, и найти этот байпасс\байпассы?
Первый способ описан в паблике давно и достаточно хорошо, не требует дополнительных инструментов, используется только интерфейс скриптов и браузер. С телефона можно решить. Второй способ (ровно ровесник этого задания) уже требует написать несколько строчек кода, но способ (механизм) уже широко известный и в одном из заданий мы уже ковыряли его. На ачате в паблике есть рыба для такого скрипта. Третий способ описан на некотором начальном уровне (и он постарше второго), используется аналогично, но реализацию нужно найти самому (тоже писать небольшой скрипт). Сканеры и брут бесполезны. Плясать, конечно, нужно от кода. Это чисто уязвимость скриптов, а точнее конструкции db/info.php. Нужно обойти стоппер <?php die('Access denied'); ?> и выполнить код, который можно поместить после него.
Зачем такие явные подсказки?) Это же ломает весь дух П.С. я ток додумалась про какой именно стоппер шла речь запустив у себя на виртулке(до последнего думала что проблема в несказанном .htaccess). А тут уже это
Первый способ очень простой, делается влет. Пока ни одного ответа, ни одной попытки в нужную сторону. Впереди работы намного больше, чем догадаться "что же такое - стоппер". Когда есть дух - хорошо, так и должно быть и он так просто не сломается. Удачи.
А эти попытки должны быть? Может я чего то не понимаю, ковыряю у себя на локалхосте, результаты работы вы всё равно не увидите пока я их не пришлю в ЛС (если хакерского духу хватит )) ) А пока да, народ слабоват... Нету среди хакеров (ROA >) пока что богатырей.
Есть. Но они давно богатыри и не одну битву выиграли. Намахались уже, просто так за оружие не хватаются. Видимо наша очередь расправить плечи.
Кто обошелся без хинтов - молодец. Кому нужна небольшая помощь, она подоспела, осторожно - спойлер. Spoiler: Хинт Есть такая интересная тема, как врапперы. Вроде известна давно, можно найти статьи с примерами, кое-что и сами умеем с ними делать, а вот уверенности, что все уже про них расковыряли - нет. Иногда их применение дает почти волшебный эффект. Первый способ использует обертку php://.
Так, сдвинулись с места. И даже зарешали второй способ. У третьего способа есть несколько вариантов реализации, пока в зачет пойдет любой из них. === И да, подсказка сработала в минус для некоторых, попробую переформулировать. Нет способа обойти стоппер, когда вызываем http://task.antichat.com:10007/db/info.php но нас никто и не заставляет выполнить скрипт именно так.
По первому способу. Spoiler: Не хинт, а грубая подсказка Враппер php:// практически разжеван в нужном объеме в одной из старых статей журнала Хакер. Просто прочитай и выполни.
На рдоте задание запускалось с залоченным способом 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 );
Следующая подсказка. Решения основаны на врапперах: 1 - php:// 2 - phar:// 3 - zip:// Первые два способа довольно очевидны, штатное использование возможностей. Как приготовить zip - архив, нужно догадаться, хотя существует читерский вариант, он тоже будет приниматься в зачет, но его ценность невелика.
В этом задании можно отловить для себя сразу две пользы. Во-первых, это базовые вещи, их нужно просто знать. Во-вторых, когда ты их нашел сам, а не просто прочитал решение - они становятся "невырубово" базовыми. Ну и бонусом прокачивается хакерская догадка и поиск вспомогательного материала. И вот интересно, вообще то, что открыл, нашел сам - является более качественным материалом и фундаментом твоих знаний, чем та же информация, но полученная как готовые результаты работы других людей.