# 8009 - 渗透测试Apache JServ协议(AJP)
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
**HackenProof是所有加密漏洞赏金的家园。**
**无需延迟获得奖励**\
HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞验证后,您将获得奖励。
**在web3渗透测试中获得经验**\
区块链协议和智能合约是新的互联网!在其兴起的日子里掌握web3安全。
**成为web3黑客传奇**\
每次验证的漏洞都会获得声誉积分,并占据每周排行榜的榜首。
[**在HackenProof上注册**](https://hackenproof.com/register)开始从您的黑客攻击中获利!
{% embed url="https://hackenproof.com/register" %}
## 基本信息
来源:[https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP是一种传输协议。它是HTTP协议的优化版本,允许独立的Web服务器(如[Apache](http://httpd.apache.org/))与Tomcat进行通信。从历史上看,Apache在提供静态内容方面比Tomcat快得多。这个想法是让Apache在可能的情况下提供静态内容,但将与Tomcat相关的内容代理到Tomcat。
还有趣的是:
> ajp13协议是面向数据包的。出于性能原因,二进制格式可能是选择而不是更易读的纯文本。Web服务器通过TCP连接与Servlet容器通信。为了减少昂贵的套接字创建过程,Web服务器将尝试维护与Servlet容器的持久TCP连接,并重用连接进行多个请求/响应周期。
**默认端口:**8009
```
PORT STATE SERVICE
8009/tcp open ajp13
```
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
如果AJP端口暴露,Tomcat可能会受到Ghostcat漏洞的影响。这是一个与此问题配合使用的[利用工具](https://www.exploit-db.com/exploits/48143)。
Ghostcat是一种LFI漏洞,但受到一定限制:只能提取特定路径下的文件。然而,这可能包括像`WEB-INF/web.xml`这样的文件,根据服务器设置,这些文件可能会泄露重要信息,如Tomcat接口的凭据。
修补版本为9.0.31及以上、8.5.51及以上和7.0.100及以上已修复此问题。
## 枚举
### 自动化
```bash
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009
```
### [**暴力破解**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJP代理
### Apache AJP代理
很少遇到只有8009端口开放而没有其他Web端口开放的情况。在这种情况下,使用现有的工具如metasploit仍然可以控制它,是不是很好?正如引用中所述,您可以(滥用)Apache将请求代理到Tomcat的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
```
使用这种设置的一个好处是,你可能会阻止已经存在的IDS/IPS系统,因为AJP协议是二进制的,但我还没有验证过这一点。现在你可以将你的常规metasploit tomcat exploit指向127.0.0.1:80并接管该系统。以下是metasploit的输出:
```bash
msf exploit(tomcat_mgr_deploy) > show options
Module options (exploit/multi/http/tomcat_mgr_deploy):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD tomcat no The password for the specified username
PATH /manager yes The URI path of the manager app (/deploy and /undeploy will be used)
Proxies no Use a proxy chain
RHOST localhost yes The target address
RPORT 80 yes The target port
USERNAME tomcat no The username to authenticate as
VHOST no HTTP server virtual host
```
### Nginx反向代理和AJP
当我们遇到一个开放的AJP代理端口(8009 TCP)时,我们可以使用带有`ajp_module`的Nginx来访问“隐藏”的Tomcat管理器。可以通过编译Nginx源代码并添加所需的模块来实现这一点,具体步骤如下:
* 下载Nginx源代码
* 下载所需的模块
* 使用`ajp_module`编译Nginx源代码。
* 创建一个指向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
```
在`/etc/nginx/conf/nginx.conf`文件中,将整个`server`块注释掉,并在`http`块内添加以下行。
```shell-session
upstream tomcats {
server :8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
```
启动Nginx并通过向本地主机发出cURL请求来检查一切是否正常运行。
```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!
```
## 参考资料
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
**HackenProof 是所有加密漏洞赏金的家园。**
**无需等待即可获得奖励**\
HackenProof 的赏金只有在客户存入奖励预算后才会启动。在漏洞验证后,您将获得奖励。
**在 web3 渗透测试中积累经验**\
区块链协议和智能合约是新的互联网!在其兴起的时代掌握 web3 安全。
**成为 web3 黑客传奇**\
每次验证的漏洞都会获得声誉积分,并占据每周排行榜的榜首。
[**在 HackenProof 上注册**](https://hackenproof.com/register) 开始从您的黑客攻击中获利!
{% embed url="https://hackenproof.com/register" %}
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 您在**网络安全公司**工作吗?您想在 HackTricks 中看到您的**公司广告**吗?或者您想获得**PEASS 的最新版本或下载 HackTricks 的 PDF 版本**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享您的黑客技巧。**