mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
88 lines
3.6 KiB
Markdown
88 lines
3.6 KiB
Markdown
# 8009 - Apache JServ Protokolü (AJP) için Pentesting
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Temel Bilgiler
|
||
|
||
From [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
|
||
|
||
> AJP, bir iletişim protokolüdür. Tomcat ile konuşabilmesi için [Apache](http://httpd.apache.org/) gibi bağımsız bir web sunucusunun optimize edilmiş bir HTTP protokolü versiyonudur. Tarihsel olarak, Apache, statik içeriği sunma konusunda Tomcat'ten çok daha hızlı olmuştur. Amaç, mümkün olduğunda Apache'nin statik içeriği sunmasına izin vermek, ancak Tomcat ile ilgili içerikler için isteği Tomcat'e yönlendirmektir.
|
||
|
||
Ayrıca ilginç:
|
||
|
||
> ajp13 protokolü paket odaklıdır. Performans nedenleriyle daha okunabilir düz metin yerine ikili bir formatın seçildiği varsayılmaktadır. Web sunucusu, TCP bağlantıları üzerinden servlet konteyneri ile iletişim kurar. Soket oluşturma sürecinin maliyetini azaltmak için, web sunucusu servlet konteynerine kalıcı TCP bağlantılarını sürdürmeye çalışacak ve birden fazla istek/yanıt döngüsü için bir bağlantıyı yeniden kullanacaktır.
|
||
|
||
**Varsayılan port:** 8009
|
||
```
|
||
PORT STATE SERVICE
|
||
8009/tcp open ajp13
|
||
```
|
||
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
|
||
|
||
Bu, kimlik bilgilerini içeren `WEB-INF/web.xml` gibi bazı dosyaları elde etmeye izin veren bir LFI zafiyetidir. Bu, zafiyeti istismar etmek için bir [exploit](https://www.exploit-db.com/exploits/48143) olup, AJP açık portları buna karşı savunmasız olabilir.
|
||
|
||
Yamanlanmış sürümler 9.0.31, 8.5.51 ve 7.0.100 veya üzerindedir.
|
||
|
||
## Enumeration
|
||
|
||
### Automatic
|
||
```bash
|
||
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
||
```
|
||
### [**Kaba kuvvet**](../generic-hacking/brute-force.md#ajp)
|
||
|
||
## AJP Proxy
|
||
|
||
### Nginx Ters Proxy + AJP
|
||
|
||
([Dockerize edilmiş versiyonu kontrol edin](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version))
|
||
|
||
Açık bir AJP proxy portu (8009 TCP) ile Nginx `ajp_module` apache modülünü kullanarak iletişim kurmak ve bu porttan Tomat Manager'a erişmek mümkündür; bu da nihayetinde savunmasız sunucuda RCE'ye yol açabilir.
|
||
|
||
- Nginx'i [https://nginx.org/en/download.html](https://nginx.org/en/download.html) adresinden indirmeye başlayın ve ardından ajp modülü ile derleyin:
|
||
```bash
|
||
# 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
|
||
```
|
||
- Ardından, `server` bloğunu yorumlayın ve `/etc/nginx/conf/nginx.conf` içindeki `http` bloğuna aşağıdakileri ekleyin.
|
||
```json
|
||
upstream tomcats {
|
||
server <TARGET_SERVER>:8009;
|
||
keepalive 10;
|
||
}
|
||
server {
|
||
listen 80;
|
||
location / {
|
||
ajp_keep_conn on;
|
||
ajp_pass tomcats;
|
||
}
|
||
}
|
||
```
|
||
- Son olarak, nginx'i başlatın (`sudo nginx`) ve `http://127.0.0.1` adresine erişerek çalıştığını kontrol edin.
|
||
|
||
### Nginx Dockerize edilmiş versiyonu
|
||
```bash
|
||
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
||
cd nginx-ajp-docker
|
||
```
|
||
`nginx.conf` dosyasındaki `TARGET-IP`'yi AJP IP ile değiştirin, ardından inşa edin ve çalıştırın.
|
||
```bash
|
||
docker build . -t nginx-ajp-proxy
|
||
docker run -it --rm -p 80:80 nginx-ajp-proxy
|
||
```
|
||
### Apache AJP Proxy
|
||
|
||
**Nginx** yerine o porta erişmek için bir **Apache AJP proxy** kullanmak da mümkündür.
|
||
|
||
## References
|
||
|
||
- [https://github.com/yaoweibin/nginx_ajp_module](https://github.com/yaoweibin/nginx_ajp_module)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|