# 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 来分享您的黑客技巧。**