Как известно, в PHP даже любой NOTICE может привести к RCE. Если не верите, попробуйте убедиться в этом сами.
docker-compose up --build -d
Единственное, что делает сервис, это вызывает eval() от пользовательского ввода. Есть подсказка, что флаг лежит в файле /tmp/flag.txt
.
После вызова phpinfo();
можно заметить некоторые ограничения:
- функции, позволяющие исполнить команды шелла, запрещены через директиву disable_functions
- файлы, к которым PHP имеет доступ, ограничены директорией
/var/www/html/
При просмотре страницы phpinfo();
в глаза бросается директива imap.enable_insecure_rsh = On
. Это наводит на баг в PHP, который может привести к исполнению произвольного кода через функцию imap_open.
Мы не можем видеть результат выполнения команды напрямую, поэтому можно использовать внешние сервисы (или поднимать свои) и подключаться к ним через nc/wget/curl. Также в ограниченной среде не работает разрешение доменных имён, нужно использовать IP-адреса при подключении.
Флаг лежит в файле service/flag.txt.
flag{some_notice_based_rce_for_you}