8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP는 와이어 프로토콜입니다. 이는 독립형 웹 서버인 Apache가 Tomcat과 통신할 수 있도록 HTTP 프로토콜의 최적화된 버전입니다. 역사적으로 Apache는 정적 콘텐츠를 제공하는 데 Tomcat보다 훨씬 빠릅니다. 아이디어는 가능한 경우 Apache가 정적 콘텐츠를 제공하고, Tomcat 관련 콘텐츠에 대해서는 요청을 Tomcat으로 프록시하는 것입니다.
또한 흥미로운 점:
ajp13 프로토콜은 패킷 지향적입니다. 성능상의 이유로 더 읽기 쉬운 일반 텍스트보다 이진 형식이 선택된 것으로 보입니다. 웹 서버는 TCP 연결을 통해 서블릿 컨테이너와 통신합니다. 소켓 생성의 비용이 많이 드는 과정을 줄이기 위해, 웹 서버는 서블릿 컨테이너에 대한 지속적인 TCP 연결을 유지하고, 여러 요청/응답 주기를 위해 연결을 재사용하려고 시도합니다.
기본 포트: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
이것은 자격 증명이 포함된 WEB-INF/web.xml
과 같은 파일을 가져올 수 있는 LFI 취약점입니다. 이 취약점을 악용하기 위한 익스플로잇이며 AJP 노출 포트가 이에 취약할 수 있습니다.
패치된 버전은 9.0.31, 8.5.51 및 7.0.100 이상입니다.
Enumeration
Automatic
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
브루트 포스
AJP 프록시
Nginx 리버스 프록시 + AJP
Nginx ajp_module
아파치 모듈을 사용하여 열린 AJP 프록시 포트(8009 TCP)와 통신하고 이 포트에서 Tomat Manager에 접근할 수 있으며, 이는 궁극적으로 취약한 서버에서 RCE로 이어질 수 있습니다.
- https://nginx.org/en/download.html에서 Nginx를 다운로드한 후 ajp 모듈로 컴파일합니다:
# Compile Nginx with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-version
sudo apt install libpcre3-dev
./configure --add-module=`pwd`/../nginx_ajp_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules
make
sudo make install
nginx -V
- 그런 다음,
server
블록을 주석 처리하고/etc/nginx/conf/nginx.conf
의http
블록에 다음을 추가합니다.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- 마지막으로, nginx를 시작합니다 (
sudo nginx
) 그리고http://127.0.0.1
에 접속하여 작동하는지 확인합니다.
Nginx Dockerized-version
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
nginx.conf
에서 TARGET-IP
를 AJP IP로 교체한 후 빌드하고 실행합니다.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP 프록시
Nginx 대신 해당 포트에 접근하기 위해 Apache AJP 프록시를 사용할 수도 있습니다.
References
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.