# 8009 - Pentesting Apache JServ Protocol (AJP) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters! **Hacking Insights**\ Engage with content that delves into the thrill and challenges of hacking **Real-Time Hack News**\ Keep up-to-date with fast-paced hacking world through real-time news and insights **Latest Announcements**\ Stay informed with the newest bug bounties launching and crucial platform updates **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today! ## Basic Information From: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/) > AJP é um protocolo de rede. É uma versão otimizada do protocolo HTTP para permitir que um servidor web autônomo, como o [Apache](http://httpd.apache.org/), se comunique com o Tomcat. Historicamente, o Apache tem sido muito mais rápido que o Tomcat ao servir conteúdo estático. A ideia é permitir que o Apache sirva o conteúdo estático sempre que possível, mas faça proxy da solicitação para o Tomcat para conteúdo relacionado ao Tomcat. Also interesting: > O protocolo ajp13 é orientado a pacotes. Um formato binário foi presumivelmente escolhido em vez do texto simples mais legível por razões de desempenho. O servidor web se comunica com o contêiner de servlets por meio de conexões TCP. Para reduzir o caro processo de criação de soquetes, o servidor web tentará manter conexões TCP persistentes com o contêiner de servlets e reutilizar uma conexão para múltiplos ciclos de solicitação/resposta. **Default port:** 8009 ``` PORT STATE SERVICE 8009/tcp open ajp13 ``` ## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat) Se a porta AJP estiver exposta, o Tomcat pode ser suscetível à vulnerabilidade Ghostcat. Aqui está um [exploit](https://www.exploit-db.com/exploits/48143) que funciona com esse problema. Ghostcat é uma vulnerabilidade LFI, mas um tanto restrita: apenas arquivos de um determinado caminho podem ser acessados. No entanto, isso pode incluir arquivos como `WEB-INF/web.xml`, que podem vazar informações importantes, como credenciais para a interface do Tomcat, dependendo da configuração do servidor. Versões corrigidas a partir de 9.0.31, 8.5.51 e 7.0.100 resolveram esse problema. ## Enumeração ### Automático ```bash nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 ``` ### [**Força bruta**](../generic-methodologies-and-resources/brute-force.md#ajp) ## Proxy AJP ### Nginx Reverse Proxy & AJP [Confira a versão Dockerizada](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version) Quando encontramos uma porta de proxy AJP aberta (8009 TCP), podemos usar o Nginx com o `ajp_module` para acessar o "gerenciador" Tomcat oculto. Isso pode ser feito compilando o código-fonte do Nginx e adicionando o módulo necessário, da seguinte forma: * Baixe o código-fonte do Nginx * Baixe o módulo necessário * Compile o código-fonte do Nginx com o `ajp_module`. * Crie um arquivo de configuração apontando para a porta AJP ```bash # 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 ``` Comente todo o bloco `server` e adicione as seguintes linhas dentro do bloco `http` em `/etc/nginx/conf/nginx.conf`. ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` Inicie o Nginx e verifique se tudo está funcionando corretamente emitindo uma solicitação cURL para o seu host local. ```html sudo nginx curl http://127.0.0.1:80 Apache Tomcat/X.X.XX

Apache Tomcat/X.X.XX

If you're seeing this, you've successfully installed Tomcat. Congratulations!

``` ### Nginx versão Dockerizada ```bash git clone https://github.com/ScribblerCoder/nginx-ajp-docker cd nginx-ajp-docker ``` Substitua `TARGET-IP` em `nginx.conf` pelo IP AJP e, em seguida, construa e execute. ```bash docker build . -t nginx-ajp-proxy docker run -it --rm -p 80:80 nginx-ajp-proxy ``` ### Apache AJP Proxy Encontrar uma porta 8009 aberta sem outras portas web acessíveis é raro. No entanto, ainda é possível explorá-la usando **Metasploit**. Ao aproveitar **Apache** como um proxy, as solicitações podem ser redirecionadas para **Tomcat** na porta 8009. ```bash 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 Order deny,allow Deny from all Allow from localhost ProxyPass / ajp://HOST:8009/ ProxyPassReverse / ajp://HOST:8009/ sudo a2enmod proxy_http sudo a2enmod proxy_ajp sudo systemctl restart apache2 ``` Esta configuração oferece o potencial de contornar sistemas de detecção e prevenção de intrusões (IDS/IPS) devido à **natureza binária do protocolo AJP**, embora essa capacidade não tenha sido verificada. Ao direcionar um exploit regular do Metasploit Tomcat para `127.0.0.1:80`, você pode efetivamente assumir o controle do sistema alvo. ```bash msf exploit(tomcat_mgr_deploy) > show options ``` ## Referências * [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module) * [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs! **Insights de Hacking**\ Engaje-se com conteúdo que mergulha na emoção e nos desafios do hacking **Notícias de Hack em Tempo Real**\ Mantenha-se atualizado com o mundo do hacking em ritmo acelerado através de notícias e insights em tempo real **Últimos Anúncios**\ Fique informado sobre as novas recompensas de bugs lançadas e atualizações cruciais da plataforma **Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje! {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}