10 KiB
8009 - Pentesting Apache JServ Protocol (AJP)
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da 🐦 @hacktricks_live'i takip edin.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanı ve zorluklarına dalan içeriklerle etkileşimde bulunun
Gerçek Zamanlı Hack Haberleri
Gerçek zamanlı haberler ve içgörülerle hızlı tempolu hacking dünyasında güncel kalın
Son Duyurular
Yeni başlayan bug bounty'ler ve önemli platform güncellemeleri hakkında bilgi sahibi olun
Bugün Discord üzerinden bize katılın ve en iyi hackerlarla işbirliği yapmaya başlayın!
Temel Bilgiler
Kaynak: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP bir kablo protokolüdür. Tomcat ile konuşabilmesi için Apache gibi bağımsız bir web sunucusunun HTTP protokolünün optimize edilmiş bir versiyonudur. Tarihsel olarak, Apache, statik içeriği sunmada 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 işleminin 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'
Eğer AJP portu açığa çıkmışsa, Tomcat Ghostcat zafiyetine maruz kalabilir. Bu sorunla çalışan bir exploit burada bulunmaktadır.
Ghostcat, LFI zafiyeti olup, bir dereceye kadar kısıtlıdır: yalnızca belirli bir yoldan dosyalar çekilebilir. Yine de, bu, sunucu yapılandırmasına bağlı olarak Tomcat arayüzü için kimlik bilgileri gibi önemli bilgileri sızdırabilecek WEB-INF/web.xml
gibi dosyaları içerebilir.
9.0.31, 8.5.51 ve 7.0.100 veya üzerindeki yamanmış sürümler bu sorunu düzeltmiştir.
Enumeration
Automatic
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
AJP Proxy
Nginx Ters Proxy & AJP
Dockerize edilmiş versiyonu kontrol edin
Açık bir AJP proxy portu (8009 TCP) ile karşılaştığımızda, "gizli" Tomcat Manager'a erişmek için Nginx'i ajp_module
ile kullanabiliriz. Bu, Nginx kaynak kodunu derleyerek ve gerekli modülü ekleyerek yapılabilir, şu şekilde:
- Nginx kaynak kodunu indirin
- Gerekli modülü indirin
- Nginx kaynak kodunu
ajp_module
ile derleyin. - AJP Portuna 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
bloğunu tamamen yorumlayın ve /etc/nginx/conf/nginx.conf
içindeki http
bloğunun içine aşağıdaki satırları ekleyin.
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 doğru çalışıp çalışmadığını kontrol etmek için yerel ana bilgisayarınıza bir cURL isteği gönderin.
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 edilmiş versiyonu
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.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Açık bir 8009 portu ile başka erişilebilir web portlarının olmaması nadirdir. Ancak, bunu Metasploit kullanarak istismar etmek hala mümkündür. Apache'yi bir proxy olarak kullanarak, istekler 8009 portundaki Tomcat'e 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 doğası nedeniyle saldırı tespit ve önleme sistemlerini (IDS/IPS) atlatma potansiyeli sunar, ancak bu yetenek doğrulanmamıştır. Normal bir Metasploit Tomcat istismarını 127.0.0.1:80
adresine yönlendirerek, hedef sistemin kontrolünü etkili bir şekilde ele geçirebilirsiniz.
msf exploit(tomcat_mgr_deploy) > show options
Referanslar
- https://github.com/yaoweibin/nginx_ajp_module
- https://academy.hackthebox.com/module/145/section/1295
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanı ve zorluklarına dalan içeriklerle etkileşimde bulunun
Gerçek Zamanlı Hack Haberleri
Gerçek zamanlı haberler ve içgörülerle hızlı tempolu hacking dünyasında güncel kalın
Son Duyurular
Yeni başlayan bug bounty'ler ve önemli platform güncellemeleri hakkında bilgi sahibi olun
Bugün en iyi hackerlarla işbirliği yapmak için Discord 'a katılın!
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- HackTricks ve HackTricks Cloud github reposuna PR göndererek hacking ipuçlarını paylaşın.