Я занимаюсь поиском ошибок и обнаружил экземпляр Apache Airflow с незащищенным REST API на www.example.com/api
. Я могу проверить, какие последние прогоны www.example.com/api/experimental/latest_runs
, посмотреть, какие пулы здесь www.example.com/api/experimental/pools
(в настоящее время их нет) и еще немного.
Согласно официальной документации Airflow, мои возможности не ограничены к чтению, и я также могу написать и выполнить DAG здесь. Это самый короткий способ эффективно обойти аутентификацию и напрямую общаться с Airflow, таким образом, это почти выигрышная ситуация. Но когда я пытаюсь создать DAG с помощью REST API, мне кажется, что мне нужно представить его с помощью следующей команды curl
:
curl -X POST \
http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{"conf":"{\"key\":\"value\"}"}'
Моя идея состояла в том, чтобы создать группу DAG, которая взаимодействует с база данных или с оболочкой Python или Bash выполняет некоторый код, который генерирует файл IHAXXXDYOU. html где-то в ресурсах, доступных анонимным пользователям, и раскрывает его на Hackerone, затем получает 2000 $ щедрость.
Но каждый мой запрос (в браузере, в керне, инструмент не имеет значения) попадает в 400 ПЛОХОЙ ЗАПРОС или 405 МЕТОД НЕ РАЗРЕШЕН, Последнее просто шутит - метод действительно разрешен, согласно документам Airflow и даже OPTIONS / HTTP/1.1
. Сбой, потому что я не знаю, какие conf
, key
и value
должны быть предоставлены - Airflow ожидает эти параметры, , но документы ничего не делают, чтобы определить, какие из них . Похоже, разработчики Airflow не заботятся о собственном REST API и верят, что пользователи будут использовать только веб-интерфейс. Это не так.
Это не должен быть брандмауэр веб-приложений, блокирующий мои попытки взлома; Я уже обошел его, напрямую подключившись к серверу за защитой обратного прокси CloudFlare.
Итак, что conf
, key
и value
я должен предоставить для выполнения произвольного кода (SQL, Python, Bash et c) внутри существующей группы обеспечения доступности баз данных или создать новую, которая ничего не будет делать, кроме создания подтверждения концепции, которое будет указывать на мой профиль на Hackerone? Я действительно застрял здесь, и я не знаю, что мне теперь делать.
Эти вопросы решают проблему не полностью, поэтому я все еще здесь:
Передача параметров в API Flowflow Experimental REST при создании прогона dag
как использовать параметр --conf в потоке воздуха