hacktricks/network-services-pentesting/8009-pentesting-apache-jserv-protocol-ajp.md

10 KiB
Raw Blame History

8009 - Apache JServ Protokolü (AJP) Pentest Etme

AWS hacklemeyi sıfırdan ileri seviyeye öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'i desteklemenin diğer yolları:

Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!

Hackleme İpuçları
Hackleme heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin

Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hackleme dünyasında gerçek zamanlı haberler ve içeriklerle güncel kalın

En Son Duyurular
Yayınlanan en yeni ödül avı programları ve önemli platform güncellemeleri hakkında bilgi edinin

Bize katılın Discord ve bugün en iyi hackerlarla işbirliğine başlayın!

Temel Bilgiler

Kaynak: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/

AJP bir tel protokoldür. Apache gibi bağımsız bir web sunucusunun Tomcat ile iletişim kurmasına izin vermek için HTTP protokolünün optimize edilmiş bir sürümüdür. Tarihsel olarak, Apache statik içerik sunmada Tomcat'ten çok daha hızlı olmuştur. Fikir, mümkün olduğunda Apache'nin statik içeriği sunmasına izin vermek, ancak Tomcat ile ilgili içerik için isteği Tomcat'e yönlendirmektir.

Ayrıca ilginç olan:

ajp13 protokolü paket odaklıdır. Daha okunabilir düz metin yerine performans nedenleriyle muhtemelen bir ikili format seçilmiştir. Web sunucusu, servlet konteyneriyle TCP bağlantıları üzerinden iletişim kurar. Soket oluşturmanın maliyetli işleminden kaçınmak için web sunucusu, servlet konteynerine kalıcı TCP bağlantıları sürdürmeye ve bir bağlantıyı birden fazla istek/yanıt döngüsü için yeniden kullanmaya çalışacaktır.

Varsayılan port: 8009

PORT     STATE SERVICE
8009/tcp open  ajp13

CVE-2020-1938 'Ghostcat'

Eğer AJP bağlantı noktasııksa, Tomcat Ghostcat zafiyetine duyarlı olabilir. İşte bu sorunla çalışan bir exploit.

Ghostcat bir LFI zafiyeti olup, biraz kısıtlıdır: yalnızca belirli bir yol içindeki dosyalar çekilebilir. Yine de, bu, sunucu yapılandırmasına bağlı olarak Tomcat arayüzü için kimlik bilgileri gibi önemli bilgiler sızdırabilecek WEB-INF/web.xml gibi dosyaları içerebilir.

Bu sorunu düzeltmiş yamalanmış sürümler 9.0.31 veya üstü, 8.5.51 ve 7.0.100'dür.

Enumeration

Otomatik

nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>

Kaba kuvvet

AJP Proxy

Nginx Ters Proxy & AJP

Dockerize edilmiş sürümü kontrol edin

8009 TCP açık bir AJP proxy bağlantısıyla karşılaştığımızda, Nginx'i ajp_module ile kullanarak "gizli" Tomcat Yöneticisine erişebiliriz. Bunun için aşağıdaki adımları izleyebiliriz:

  • Nginx kaynak kodunu indirin
  • Gerekli modülü indirin
  • Nginx kaynak kodunu ajp_module ile derleyin.
  • AJP Portunu işaret eden bir yapılandırma dosyası oluşturun.
# Download Nginx code
wget https://nginx.org/download/nginx-1.21.3.tar.gz
tar -xzvf nginx-1.21.3.tar.gz

# Compile Nginx source code with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-1.21.3
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 {
-#     listen 80;
-#     server_name example.com;
-#     location / {
-#         root /var/www/html;
-#         index index.html;
-#     }
-# }
+    upstream backend {
+        server 10.0.0.1:8080;
+        server 10.0.0.2:8080;
+    }
+
+    server {
+        listen 80;
+        server_name example.com;
+        location / {
+            proxy_pass http://backend;
+        }
+    }
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}

Nginx'i başlatın ve her şeyin düzgün çalışıp çalışmadığını kontrol etmek için yerel ana bilgisayarınıza bir cURL isteği göndererek kontrol edin.

sudo nginx
curl http://127.0.0.1:80

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/X.X.XX</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</headas
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/X.X.XX</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
<SNIP>

Nginx Dockerize-sürümü

git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker

nginx.conf dosyasındaki TARGET-IP değerini AJP IP ile değiştirin, ardından derleyin ve çalıştırın.

docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy

Apache AJP Proxy

Diğer erişilebilir web bağlantı noktaları olmadan açık bir 8009 bağlantı noktasıyla karşılaşmak nadirdir. Bununla birlikte, Metasploit kullanılarak bunu sömürmek hala mümkündür. Bir proxy olarak Apache'yi kullanarak istekler Tomcat'a 8009 bağlantı noktasında yeniden yönlendirilebilir.

sudo apt-get install libapache2-mod-jk
sudo vim /etc/apache2/apache2.conf # append the following line to the config
Include ajp.conf
sudo vim /etc/apache2/ajp.conf     # create the following file, change HOST to the target address
ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyPass       / ajp://HOST:8009/
ProxyPassReverse    / ajp://HOST:8009/
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2

Bu kurulum, AJP protokolünün ikili yapısından dolayı sızma tespit ve önleme sistemlerini (IDS/IPS) atlayabilme potansiyeli sunar, ancak bu yetenek doğrulanmamıştır. Hedef sistem üzerinde kontrolü ele geçirmek için düzenli bir Metasploit Tomcat saldırısını 127.0.0.1:80 adresine yönlendirerek etkili bir şekilde kontrolü ele geçirebilirsiniz.

msf  exploit(tomcat_mgr_deploy) > show options

Referanslar

HackenProof Discord sunucusuna katılın ve deneyimli hackerlar ve ödül avcıları ile iletişim kurun!

Hacking Insights
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin

Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın

En Son Duyurular
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi edinin

Bize Discord katılın ve bugün en iyi hackerlarla işbirliğine başlayın!

Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: