10 KiB
8009 - Pentesting Protocolo Apache JServ (AJP)
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Junte-se ao servidor HackenProof Discord para se comunicar com hackers experientes e caçadores de recompensas por bugs!
Percepções de Hacking
Envolver-se com conteúdo que mergulha na emoção e desafios do hacking
Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e percepções em tempo real
Últimos Anúncios
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje!
Informações Básicas
De: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP é um protocolo de comunicação. É uma versão otimizada do protocolo HTTP que permite a um servidor web autônomo, como o Apache, se comunicar 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 encaminhe a solicitação para o Tomcat para conteúdo relacionado ao Tomcat.
Também interessante:
O protocolo ajp13 é orientado a pacotes. Um formato binário foi presumivelmente escolhido em vez do texto simples mais legível por motivos de desempenho. O servidor web se comunica com o contêiner de servlets por meio de conexões TCP. Para reduzir o processo caro 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 vários ciclos de solicitação/resposta.
Porta padrão: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Se a porta AJP estiver exposta, o Tomcat pode ser suscetível à vulnerabilidade Ghostcat. Aqui está um exploit que funciona com esse problema.
Ghostcat é uma vulnerabilidade LFI, mas um tanto restrita: apenas arquivos de um determinado caminho podem ser acessados. Ainda assim, 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.
As versões corrigidas são 9.0.31 ou superiores, 8.5.51 e 7.0.100.
Enumeração
Automática
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
Proxy AJP
Proxy Reverso Nginx & AJP
Verifique a versão Dockerizada
Quando nos deparamos com uma porta de proxy AJP aberta (TCP 8009), podemos usar o Nginx com o módulo 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
# 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
upstream tomcats {
server <TARGET_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.
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>
Versão Dockerizada do Nginx
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Substitua TARGET-IP
em nginx.conf
pelo IP AJP e depois construa e execute.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Proxy do Apache AJP
Encontrar uma porta aberta 8009 sem outras portas web acessíveis é raro. No entanto, ainda é possível explorá-la usando o Metasploit. Ao aproveitar o Apache como um proxy, as solicitações podem ser redirecionadas para o Tomcat na porta 8009.
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
Este setup 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 para o Tomcat para 127.0.0.1:80
, você pode efetivamente assumir o controle do sistema alvo.
msf exploit(tomcat_mgr_deploy) > show options
Referências
- https://github.com/yaoweibin/nginx_ajp_module
- https://academy.hackthebox.com/module/145/section/1295
Junte-se ao servidor HackenProof Discord para se comunicar com hackers experientes e caçadores de bugs!
Percepções de Hacking
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
Notícias de Hacking em Tempo Real
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
Últimos Anúncios
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
Junte-se a nós no Discord e comece a colaborar com os melhores hackers hoje!
Aprenda hacking AWS de zero a herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.