12 KiB
8009 - Apache JServ Protokolünü (AJP) Pentest Etmek
AWS hacklemeyi sıfırdan kahramanlık seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINA göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek katkıda bulunun.
Deneyimli hackerlar ve ödül avcılarıyla iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanına ve zorluklarına dalmış içeriklerle etkileşim kurun
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
En Son Duyurular
Yeni ödül avları başlatma ve önemli platform güncellemeleri hakkında bilgilendirme alın
Bize katılın Discord ve bugün 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 tel protokolüdür. Apache gibi bağımsız bir web sunucusunun Apache gibi bir Tomcat ile iletişim kurmasına izin vermek için HTTP protokolünün optimize edilmiş bir versiyonudur. Tarihsel olarak, Apache, statik içerik sunma konusunda Tomcat'tan ç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 tabanlıdır. Performans nedenleriyle daha okunabilir düz metin yerine ikili bir format seçilmiştir. Web sunucusu, servlet konteyneriyle TCP bağlantıları üzerinden iletişim kurar. Soket oluşturma işleminin maliyetini azaltmak için web sunucusu, servlet konteynerine karşı kalıcı TCP bağlantılarını sürdürmeye ve bir bağlantıyı birden çok 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ı açıksa, Tomcat Ghostcat zafiyetine karşı savunmasız olabilir. Bu sorunla çalışan bir saldırı mevcuttur.
Ghostcat, LFI (Local File Inclusion) zafiyeti olup, biraz kısıtlıdır: yalnızca belirli bir yol üzerindeki dosyalar çekilebilir. Bununla birlikte, bu, sunucu yapılandırmasına bağlı olarak Tomcat arayüzü için kimlik bilgileri gibi önemli bilgilerin sızmasına neden olabilecek WEB-INF/web.xml
gibi dosyaları içerebilir.
Bu sorunu düzeltmek için 9.0.31 veya üzeri, 8.5.51 veya üzeri ve 7.0.100 veya üzeri yamalanmış sürümler bulunmaktadır.
Enumerasyon
Otomatik
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ş sürümü kontrol edin
Açık bir AJP proxy bağlantısı (8009 TCP) ile 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 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
/etc/nginx/conf/nginx.conf
dosyasındaki http
bloğunun içine aşağıdaki satırları ekleyin ve server
bloğunu tamamen yorum satırı yapın.
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 bilgisayara bir cURL isteği göndererek bunu 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-versiyonu
Nginx, popüler bir web sunucusu ve ters proxy sunucusudur. Dockerize-versiyonu, Nginx'in Docker konteynerlerinde çalışabilmesini sağlar. Dockerize-versiyonunu kullanarak, Nginx'i hızlı ve kolay bir şekilde dağıtabilir ve yönetebilirsiniz.
Dockerize-versiyonunu kullanmak için öncelikle Docker'ın yüklü olduğundan emin olmalısınız. Ardından, Docker imajını indirip çalıştırabilirsiniz. Docker imajı, Nginx'in çalışması için gerekli olan tüm bağımlılıkları içerir.
Aşağıdaki komutu kullanarak Nginx Dockerize-versiyonunu çalıştırabilirsiniz:
docker run -d -p 80:80 nginx
Bu komut, Nginx Docker imajını indirir ve çalıştırır. -d
bayrağı, konteynerin arka planda çalışmasını sağlar. -p
bayrağı, konteynerin 80 numaralı portu dinlemesini ve ana makinedeki 80 numaralı porta yönlendirilmesini sağlar.
Nginx Dockerize-versiyonunu çalıştırdıktan sonra, web tarayıcınızı açarak http://localhost
adresine gidebilirsiniz. Nginx'in varsayılan hoş geldiniz sayfasını görmelisiniz.
Dockerize-versiyonunu kullanarak Nginx'i yapılandırmak isterseniz, Docker konteynerine bağlanmanız gerekecektir. Aşağıdaki komutu kullanarak konteynere bağlanabilirsiniz:
docker exec -it <container_id> /bin/bash
<container_id>
yerine çalışan Nginx konteynerinin kimlik numarasını kullanmalısınız. Konteynere bağlandıktan sonra, Nginx yapılandırma dosyalarını düzenleyebilirsiniz.
Nginx Dockerize-versiyonu, Nginx'i hızlı ve kolay bir şekilde dağıtmak ve yönetmek için harika bir seçenektir. Docker konteynerlerinin esnekliği ve taşınabilirliği sayesinde, Nginx'i farklı ortamlarda kullanabilirsiniz.
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
nginx.conf
dosyasındaki TARGET-IP
ifadesini 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
8009 numaralı açık bir portla karşılaşmak, diğer erişilebilir web portlarının olmaması nadirdir. Bununla birlikte, Metasploit kullanarak bunu sömürmek mümkündür. Apache'yi bir proxy olarak kullanarak istekler, 8009 numaralı portta çalışan 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 yapılandırma, AJP protokolünün ikili yapısı nedeniyle sızma tespit ve önleme sistemlerini (IDS/IPS) atlamak için potansiyel sunar, ancak bu yetenek doğrulanmamıştır. Hedef sistem üzerinde kontrolü ele geçirmek için 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
- https://github.com/yaoweibin/nginx_ajp_module
- https://academy.hackthebox.com/module/145/section/1295
Deneyimli hackerlar ve bug bounty avcılarıyla iletişim kurmak için HackenProof Discord sunucusuna katılın!
Hacking İçgörüleri
Hacking'in heyecanına ve zorluklarına dalmış içeriklerle etkileşim kurun
Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
En Son Duyurular
Yeni bug bounty'lerin başlatılmasını ve önemli platform güncellemelerini takip edin
Bugün Discord'a katılın ve en iyi hackerlarla işbirliği yapmaya başlayın!
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerimizden oluşan The PEASS Family koleksiyonumuzu keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking hilelerinizi paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.